User`s guide

MACRO Compiler Directives
.EXCEPTION_ENTRY (OpenVMS Alpha only)
• INTSTK$Q_R6
• INTSTK$Q_R7
• INTSTK$Q_PC
• INTSTK$Q_PS
You can then use these symbols in the exception routine, as offsets to
the stack_base value. By using the appropriate symbolic offset with the
stack_base value, the exception routine can access the saved contents of any
of these registers. For example, the exception routine could examine the PSL to
see what access mode was in effect when the exception was taken.
Description
The .EXCEPTION_ENTRY directive indicates the entry point of an exception
service routine. At routine entry, R3 must contain the address of the procedure
descriptor. The routine must exit with an REI instruction.
You should declare with the .EXCEPTION_ENTRY directive all of the following
interrupt service routines:
• Interval clock
• Interprocessor interrupt
• System/processor correctable error
• Power failure
• System/processor machine abort
• Software interrupt
.GLOBAL_LABEL
Declares a global label in a routine that is not an entry point to the routine.
Format
Label: .GLOBAL_LABEL
There are no parameters for this directive.
Description
The .GLOBAL_LABEL directive declares a global label within a routine that is
not a routine entry point. Unless declared with .GLOBAL_LABEL, global labels
in code (specified with ‘‘::’’) are assumed to be entry point labels, which require
declaration. If they are not declared, they are flagged as errors.
The compiler also allows the address of a global label to be stored (for instance,
by means of PUSHAL instruction). (The compiler flags as an error any attempt
to store a label that has not been declared as a global label or an entry point.)
By using the .GLOBAL_LABEL directive, you are acknowledging that the stored
code address will not be the target of a CALL or JSB instruction. Global labels
must appear inside routine boundaries.
Specialized Directives B–11