Skip to content

Commit 486d456

Browse files
authored
Merge pull request #22852 from r30shah/fixVTzOS
Mark GPR15 volatile for JIT Helper calls on 64-bit z/OS
2 parents abcfa42 + a66c9cf commit 486d456

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

runtime/compiler/z/codegen/S390CHelperLinkage.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ J9::Z::CHelperLinkage::CHelperLinkage(TR::CodeGenerator * codeGen,TR_LinkageConv
6666
setRegisterFlag(TR::RealRegister::GPR10, Preserved);
6767
setRegisterFlag(TR::RealRegister::GPR11, Preserved);
6868
setRegisterFlag(TR::RealRegister::GPR13, Preserved);
69-
setRegisterFlag(TR::RealRegister::GPR15, Preserved);
7069

7170
#if defined(ENABLE_PRESERVED_FPRS)
7271
// In case of 32bit Linux on Z, System Linkage only preserves FPR4 and FPR6. For all other targets, FPR8-FPR15 is
@@ -95,6 +94,7 @@ J9::Z::CHelperLinkage::CHelperLinkage(TR::CodeGenerator * codeGen,TR_LinkageConv
9594
setRegisterFlag(TR::RealRegister::GPR6, Preserved);
9695
setRegisterFlag(TR::RealRegister::GPR7, Preserved);
9796
setRegisterFlag(TR::RealRegister::GPR12, Preserved);
97+
setRegisterFlag(TR::RealRegister::GPR15, Preserved);
9898

9999
setReturnAddressRegister(TR::RealRegister::GPR14);
100100
setIntegerReturnRegister(TR::RealRegister::GPR2);
@@ -123,10 +123,11 @@ J9::Z::CHelperLinkage::CHelperLinkage(TR::CodeGenerator * codeGen,TR_LinkageConv
123123
{
124124
setRegisterFlag(TR::RealRegister::GPR12, Preserved);
125125

126-
setPreservedRegisterMapForGC(0x0000FF00);
126+
setPreservedRegisterMapForGC(0x00007F00);
127127
}
128128
else
129129
{
130+
setRegisterFlag(TR::RealRegister::GPR15, Preserved);
130131
// 31-Bit zOS will need GPR12 for CAA register so it won't be preserved. For all other variant it is preserved
131132
setPreservedRegisterMapForGC(0x0000EF00);
132133
}

0 commit comments

Comments
 (0)