Assembler Directives and Pseudo-Operations

.CALLINFO Directive

 

For PA-RISC 32-bit mode, the frame area is offset from

 

the Stack Pointer by 48 bytes because the frame

 

marker contains 32 bytes and the fixed argument list

 

contains 16 bytes, when both of these areas are

 

present.

 

For PA-RISC 2.0W (64-bit mode), the frame area is

 

offset from the Stack Pointer by 80 bytes because the

 

frame marker contains 16 bytes and the fixed

 

argument list contains 64 bytes.

 

However, the Assembler does not allocate space for the

 

frame marker and fixed argument list if the procedure

 

does not call any other routines (see the NO_CALLS

 

parameter).

 

If the total frame size for a procedure exceeds 8191

 

bytes, the Assembler uses %r3 to locate the previous

 

frame marker when it encounters an .ENTER or

 

.LEAVE pseudo-operation. Under these circumstances,

 

changing the value of %r3 can cause serious

 

consequences.

HPUX_INT

Specifies that this procedure is an interrupt procedure.

 

This is necessary for the stack unwind mechanism.

MILLICODE

Indicates to the unwind mechanism that this is a

 

millicode routine and it should follow the millicode

 

calling conventions.

NO_UNWIND

This is to be used only in the context of stand-alone

 

code or any procedure that does not need to be reliably

 

unwound.

RP_IN_R31

Indicates that the return pointer has been moved to

 

register %r31 in order to make local millicode calls.

 

This parameter is only valid for the PA-RISC 2.0W

 

(64-bit mode).

SAVE_MRP

Indicates that this millicode procedure saves the

 

Millicode Return Pointer (MRP) in its frame marker at

 

(SP-20).

SAVE_RP

Specifies that the frame marker of the previous routine

 

stores the value of the Return Pointer (RP). The

 

Assembler automatically saves the Return Pointer

 

when it encounters an .ENTER pseudo-operation, and

70

Chapter 4