XPLINK register conventions
XPLINK introduces a register scheme which is different from standard OS linkage, in order to optimize the performance of saving and restoring registers in function prologs and epilogs. The registers which are saved in the register save area of the XPLINK stack frame are described in Save area (48 bytes).
Table 1 shows the layout of the XPLINK interface.
Interface part | Non-XPLINK |
XPLINK |
---|---|---|
Stack pointer | Reg 13 | Reg 4 (biased; see The XPLINK stack frame layout) |
Return address | Reg 14 | Reg 7 |
Entry point on entry | Reg 15 | Reg 6 (not guaranteed; a routine may be called via branch relative) |
Environment | Reg 0 (writable static) | Reg 5 |
CAA Address | Reg 12 | Reg 12 |
Input parameter list | address in R1 | Located at offset 2112 ('840'x) off R4 (fixed location in caller's stack frame). First three words are passed in R1-R3, floating point values in FPR0, 2, 4, 6. |
Return code | Reg 15 | R3 (extended return value in R1,R2) |
Start address of callee's stack frame | Caller's NAB value | Caller's Reg 4 - DSA size |
End address of callee's stack frame | Caller's NAB value + DSA size | Caller's Reg 4 |
Where caller's registers are saved | R0-R12 saved in caller's stack frame |
R0 not saved, not preserved |
See z/OS Language Environment Vendor Interfaces for additional information about register usage and conventions.