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

Reply via email to