Table 11-55.PAL Virtualization Support Procedures (Continued)
Procedure
PAL_VP_SAVE
PAL_VP_TERMINATE
11.10.2 PAL Calling Conventions
The following general rules govern the definition of the PAL procedure calling
conventions.
11.10.2.1 Overview of Calling Conventions
There are two calling conventions supported for PAL procedures: static registers only
and stacked registers. Any single PAL procedure will support only one of the two calling
conventions. In addition, PAL procedure may be called in either physical mode
(PSR.it=0, PSR.rt=0, and PSR.dt=0) or virtual mode (PSR.it=1, PSR.rt=1, and
PSR.dt=1).
11.10.2.1.1 Static Registers Only
This calling convention is intended for boot time usage before main memory may be
available or error recovery situations, where memory or the RSE may not be reliable.
All parameters are passed in the lower 32 static general registers. The stacked registers
will not be used within the procedure. No memory arguments may be passed as
parameters to or from PAL procedures written using the static register calling
convention. To avoid RSE activity, static register PAL procedures must be called with the
br.cond instruction, not the br.call instruction. Please refer to
list of the general register usage for static registers only calling convention.
11.10.2.1.2 Stacked Registers
This calling convention is intended for usage after memory has been made available,
and for procedures which require memory pointers as arguments. The stacked registers
are also used for parameter passing and local variable allocation. This convention
conforms to the Itanium Software Conventions and Runtime Architecture Guide. Thus,
procedures using the stacked register calling convention can be written in the C
language. There are two exceptions to the runtime conventions.
1. The first argument to the procedure must also be copied to GR28 prior to making
the procedure call. This allows procedures written using both static and stacked
register calling conventions to call a single PAL_PROC entrypoint. This should be
accomplished by having the stacked register procedures call a stub module which
copies GR32 to GR28, then call PAL_PROC. It is the responsibility of the caller to
provide this stub. Please refer to
register usage for the stacked register calling convention.
2. Floating point registers 32-127 are preserved (rather than scratch, as in the
normal Itanium Software Conventions), except on the PAL_TEST_PROC
procedure. This allows OSs to avoid having to save and restore these registers
around a stacked-convention PAL procedure call.
2:358
Idx
Class
Conv.
Mode
271 Opt.
Stacked
Virt.
272 Opt.
Stacked
Virt.
Buffer
Dep.
Save virtual processor state on the logical
processor.
Dep.
Terminates operation for the specified virtual
processor.
Table 11-59
Table 11-60
for a detailed list of the general
Volume 2, Part 1: Processor Abstraction Layer
Description
for a detailed
Need help?
Do you have a question about the ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS MANUAL VOLUME 1 REV 2.3 and is the answer not in the manual?
Questions and answers