Regarding TRKADDR,

While I'm sure that no one truly thinks that use of 64-bit regs is 
restricted to AMODE 64, it is true that only for AMODE 64 can one 
reasonably have expectation that the user has conformed to the linkage 
conventions for the high-halves of regs.

Thus it is viewed as  in general unacceptable to use the high half of any 
GR other than 0,1,15 in a macro without the "blessing" of the user (where 
that "blessing" is treated as being given for AMODE 64). That blessing 
could be the documentation if the service always has taken that approach 
(as opposed to introducing it unconditionally after it didn't used to do 
so; that would be an incompatibility).

Consider 
-- Module A is using 64-bit GRs (whether AMODE 64 or not) and expects 
anything it calls to comply with the linkage conventions
-- Module A calls Module B
-- Module B is AMODE 31, knows nothing about 64-bit GRs so saves/restores 
low halves only
-- Module B uses some macro that clobbers the high half of something other 
than reg 0,1,15
-- Module B restores low halves, returns to Module A
-- Module A is now broken 

Peter Relson
z/OS Core Technology Design

Reply via email to