Accelerator Manual (G06.27+, H06.04+, J06.03+)
Preparing Your Program for the Accelerator
Accelerator Manual—527303-003
3-3
Passing Parameters in Registers
The condition codes N, Z, and K are undefined for traps that occur when executing
accelerated object code. Do not write trap handlers that:
•
Base their decisions on these register values
•
Resume to points that expect these register values to be valid
Refer to the Trap Handlers That Use the Register Stack on page 2-4 for guidelines on
writing trap handlers.
Detection Guideline
•
Examine your programs to determine if their trap handlers comply with the
preceding restrictions. Find trap handlers by looking for calls to the system
procedure ARMTRAP with parameters (address of label, address of data area).
ARMTRAP specifies an entry point into the application program where execution is
to begin if a trap occurs. You do not need to change ARMTRAP (-1,-1) procedures
that cause programs to abend on traps. Trap handlers are usually small enough in
both size and number to check visually.
Required Change
•
Change your programs to comply with the preceding restrictions.
Passing Parameters in Registers
When processing a TAL program, the Accelerator assumes that only those registers
that contain an explicit value to pass or return hold meaningful values for procedure
calls and returns. Procedures can pass values implicitly using TNS registers with
CODE and STACK statements or the misuse of USE and DROP statements. A
procedure inherits a register if it is passed a register by a calling procedure. A
procedure returns a register if it returns a register to a calling procedure. To get a
correctly accelerated program in these cases, you must use the InheritsR or ReturnsR
options to specify which registers are used to pass parameters to or from a specified
procedure.
For a discussion of TNS registers, refer to the appropriate system description manual.
Detection Guidelines
•
The Accelerator emits Warning 34 if it suspects that a procedure uses a register
that is implicitly set by another procedure.
Warning 34: The following procedures unexpectedly inherit
registers:
'<proc name>' at offsets(s): <address>
Warning 34 can be a false warning if: