Vax performance V-008 SP User's Guide Page 43

  • Download
  • Add to my manuals
  • Print
  • Page
    / 176
  • Table of contents
  • BOOKMARKS
  • Rated. / 5. Based on customer reviews
Page view 42
How the MACRO Compiler Functions on Different Platforms
2.8 Declaring Exception Entry Points (OpenVMS Alpha only)
2.8 Declaring Exception Entry Points (OpenVMS Alpha only)
The .EXCEPTION_ENTRY directive, as described in Appendix B, indicates
the entry point of an exception service routine. Use the .EXCEPTION_ENTRY
directive to declare the entry points for routines serving interrupts such as the
following:
Interval clock
Interprocessor interrupt
System/processor correctable error
Power failure
System/processor machine abort
Software interrupt
At routine entry, R3 must contain the address of the procedure descriptor. The
routine must exit with an REI instruction.
At exception entry points, the interrupt dispatcher pushes onto the stack:
registers R2 through R7, the PC, and the PSL. To access the contents of these
registers, specify the stack_base argument in the .EXCEPTION_ENTRY
directive. The compiler generates code that places the value of the SP at routine
entry in the register you specify in stack_base, allowing the exception service
routine to use this register to locate the contents of registers on the stack.
The compiler automatically saves and restores all other registers used in the
routine, plus, if the service routine issues a CALL or a JSB instruction, all
scratch registers, including R0 and R1.
Note
Error handling routines, established when their addresses are stored in
the frame at 0(FP), are not .EXCEPTION_ENTRY routines. Such error
handlers should be declared as .CALL_ENTRY routines and end with
RET instructions.
2.9 Using Packed Decimal Instructions
The packed decimal directive .PACKED and all packed decimal instructions,
except EDITPC, are supported for the MACRO compiler by emulation routines
that exist outside the compiled module.
2.9.1 Differences Between the OpenVMS VAX and OpenVMS Alpha/I64
Implementations
The differences between the implementations on OpenVMS VAX and OpenVMS
Alpha/I64 systems are noted in the following list:
Packed decimal instructions and atomicity
Since all packed decimal instructions are emulated by means of subroutine
calls, they are not atomic or restartable, and cannot be made atomic by the
.PRESERVE ATOMICITY directive or /PRESERVE=ATOMICITY option.
Also, on OpenVMS Alpha or OpenVMS I64 systems, there is no guarantee
that registers from R16 through R28 are preserved across the instruction.
Use of argument registers
How the MACRO Compiler Functions on Different Platforms 2–17
Page view 42
1 2 ... 38 39 40 41 42 43 44 45 46 47 48 ... 175 176

Comments to this Manuals

No comments