>Does anyone know why the SCHEDULE macro uses R0 for the BALR return
>address with MODE=NONXM and R14 for the return address with MODE=FULLXM?

The guess is that it was because that form of SCHEDULE needs to preserve
reg 14.

And the reason for that would be historical -- way back when, SCHEDULE had
forms that conditionally expanded inline. And preserving of R14 (as was
natural for the inline form) was deemed useful for the out-of-line case
too. After all, it's one instruction shorter to BALR 0,15 then in the
target routine before returning copy into some reg other than 0 prior to
return versus saving reg 14, BALR 14,15 and after return restoring reg 14.

Peter Relson
z/OS Core Technology Design

Reply via email to