I looked at the TRKADDR macro and found that it does different expansions based on SYSSTATE AMODE64. The author evidently thought that using all 64 bits of registers was disallowed unless AMODE64 was set; and conversely, also seemed to think that it's required that *G instructions be used if on (it is inconsistent on that however).
There's also this: SLGR &Reg(1),&Reg(1) DSGF &Reg(1),=F'15' ...which implies he didn't really understand how DSGF works, either (R1 is output only for DSG*). This macro actually has no real dependence on the AMODE, it merely does some bit shuffling and arithmetic. In a couple of cases, the code it generates for G instructions uses one less instruction, so you might want to take advantage of that. I'm posting this as a potential learning opportunity; not to bash IBM or some poor intern they had years ago. -- sas
