Reference Guide

Chapter 4 63
Assembler Directives and Pseudo-Operations
.CALL Directive
.CALL Directive
The .CALL directive marks the next branch statement as a procedure
call, and permits you to describe the location of arguments and the
function return result.
Syntax
.CALL [ argument_description[ argument_description] ...]
Parameters
argument_
description Allows you to communicate to the linker the types of
registers used to pass floating point arguments and
receive floating point return results in the succeeding
procedure call. Similarly, this information can be
communicated in the .EXPORT directive.
The linker requires this information because the
runtime architecture allows floating point arguments
and return values to reside in either general registers
or floating point registers, depending on source
language convention. At link time, the linker ensures
that both the caller and called procedure agree on
argument location. If not, the linker may insert code to
relocate the arguments (or return result) before control
is transferred to the called procedure or a procedure
return is completed.
You can use up to 5 argument-descriptions in the
.CALL directive; one for each of the four arguments
that may be passed in registers (arg0arg3), and one
for a return value (ret0).
NOTE In PA-RISC 2.0W, (64-bit mode) the Assembler ignores the .CALL
directive. This means that the linker does not ensure that the caller and
called procedure agree on argument locations. If you do not know the
prototype of the called procedure, you must pass floating point