PA-RISC Linux Register ConventionsΒΆ
A file in the kernel tree describes the Registers specified by the ABI.
A stack frame for a function in the 32-bit runtime looks like this:
Offset
[ Variable args ]
SP = (4*(n+9)) arg word N
...
SP-52 arg word 4
[ Fixed args ]
SP-48 arg word 3
SP-44 arg word 2
SP-40 arg word 1
SP-36 arg word 0
[ Frame marker ]
...
SP-20 RP
SP-4 previous SP
First 4 non-FP 32-bit args are passed in
gr26
,gr25
,gr24
andgr23
First 2 non-FP 64-bit args are passed in register pairs, starting on an even numbered register (i.e.
r26/r25
andr24+r23
)First 4 FP 32-bit arguments are passed in
fr4L
,fr5L
,fr6L
andfr7L
First 2 FP 64-bit arguments are passed in
fr5
andfr7
The rest are passed on the stack starting at
SP-52
, but 64-bit arguments need to be aligned to an 8-byte boundary