If someone is curious why: -- low halves 2-13 are expected to be preserved, but -- high halves 2-14 are expected to preserved it relates to a call sequence that involves an old module that has no idea that high halves even exist, one case where that old module is entered via BASSM and returns via BSM.
Here's the scenario if the linkage convention was only to preserve high halves 2-13: -- AMODE 64 Program A calls AMODE 31 Program B via BASSM. 64-bit reg 14 contains the return address, with bit 63 on. -- Program B does its normal STM 14,12 and calls Program C -- Program C knows about high halves and uses them, saving and restoring 2-13 for return to B, high halves of 14-1 now unpredictable. -- Program B now does its LM 14,12 and BSM. The low half of reg 14 is as needed, but not the high half. Oops. I seem to recall that there were other scenarios too. FWIW, I wouldn't bet that the high half of R14 is preserved as much as it should be. I pretty strongly suggest not relying on that. Fortunately, the scenario I show above might be unrealistic enough not to be of practical concern (for example, perhaps it is not appropriate to enter B from an AMODE 64 caller) Peter Relson z/OS Core Technology Design ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
