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

Reply via email to