@@ -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