!*** MODULE $PDSCDEF *** !DEC$ OPTIONS/ALIGN=(RECORDS=PACKED,COMMONS=PACKED)/NOWARN ! ! Procedure descriptor offset definitions for the Alpha-32 calling standard. ! This definition includes the offsets and fields for stack frame (SF) and ! register frame (RF) procedure descriptors. ! PARAMETER PDSC$K_KIND_BOUND = '00000000'X ! bound procedure PARAMETER PDSC$K_KIND_NULL = '00000008'X ! null procedure PARAMETER PDSC$K_KIND_FP_STACK = '00000009'X ! SF procedure PARAMETER PDSC$K_KIND_FP_REGISTER = '0000000A'X ! RF procedure PARAMETER PDSC$M_HANDLER_VALID = '00000010'X PARAMETER PDSC$M_HANDLER_REINVOKABLE = '00000020'X PARAMETER PDSC$M_HANDLER_DATA_VALID = '00000040'X PARAMETER PDSC$M_BASE_REG_IS_FP = '00000080'X PARAMETER PDSC$M_REI_RETURN = '00000100'X PARAMETER PDSC$M_STACK_RETURN_VALUE = '00000200'X PARAMETER PDSC$M_BASE_FRAME = '00000400'X PARAMETER PDSC$M_TARGET_INVO = '00000800'X PARAMETER PDSC$M_NATIVE = '00001000'X PARAMETER PDSC$M_NO_JACKET = '00002000'X PARAMETER PDSC$M_TIE_FRAME = '00004000'X PARAMETER PDSC$M_FUNC_RETURN = '0000000F'X PARAMETER PDSC$M_EXCEPTION_MODE = '00000070'X PARAMETER PDSC$K_EXC_MODE_SIGNAL = '00000000'X ! signal PARAMETER PDSC$K_EXC_MODE_SIGNAL_ALL = '00000001'X ! signal all PARAMETER PDSC$K_EXC_MODE_SIGNAL_SILENT = '00000002'X ! signal silent PARAMETER PDSC$K_EXC_MODE_FULL_IEEE = '00000003'X ! signal full ieee PARAMETER PDSC$K_EXC_MODE_CALLER = '00000004'X ! use caller's mode PARAMETER PDSC$K_NULL_SIZE = '00000010'X ! length of NULL descriptor PARAMETER PDSC$K_BOUND_SIZE = '00000018'X ! length of the basic bound precedure descriptor PARAMETER PDSC$K_MIN_BOUND_SIZE = '00000018'X ! minimum size of the basic bound procedure descrip PARAMETER PDSC$K_MIN_LENGTH_SF = '00000020'X ! length of required portion of SF descriptor PARAMETER PDSC$K_MIN_STACK_SIZE = '00000020'X ! min size of SF descriptor PARAMETER PDSC$K_MAX_STACK_SIZE = '00000030'X ! max size of SF descriptor PARAMETER PDSC$K_MIN_LENGTH_RF = '00000018'X ! length of required portion of RF descriptor PARAMETER PDSC$K_MIN_REGISTER_SIZE = '00000018'X ! min size of RF descriptor PARAMETER PDSC$K_MAX_REGISTER_SIZE = '00000028'X ! max size of RF descriptor PARAMETER PDSC$K_BOUND_ENVIRONMENT_SIZE = '00000020'X ! length of the bound precedure descriptor STRUCTURE /PDSCDEF/ UNION MAP INTEGER*2 PDSC$W_FLAGS ! flags including procedure kind bitfield END MAP MAP PARAMETER PDSC$S_KIND = 4 PARAMETER PDSC$V_KIND = 0 ! kind of procedure PARAMETER PDSC$S_HANDLER_VALID = 1 PARAMETER PDSC$V_HANDLER_VALID = 4 ! optional STACK_HANDLER or REG_HANDLER is present PARAMETER PDSC$S_HANDLER_REINVOKABLE = 1 PARAMETER PDSC$V_HANDLER_REINVOKABLE = 5 ! exception handler is reinvokable PARAMETER PDSC$S_HANDLER_DATA_VALID = 1 PARAMETER PDSC$V_HANDLER_DATA_VALID = 6 ! optional STACK_HANDLER_DATA or REG_HANDLER_ ! optional STACK_HANDLER_DATA or REG_HANDLER_DATA is present PARAMETER PDSC$S_BASE_REG_IS_FP = 1 PARAMETER PDSC$V_BASE_REG_IS_FP = 7 ! FP is also base register (vs. SP) PARAMETER PDSC$S_REI_RETURN = 1 PARAMETER PDSC$V_REI_RETURN = 8 ! exit from procedure via REI PARAMETER PDSC$S_STACK_RETURN_VALUE = 1 PARAMETER PDSC$V_STACK_RETURN_VALUE = 9 ! function value returned on stack PARAMETER PDSC$S_BASE_FRAME = 1 PARAMETER PDSC$V_BASE_FRAME = 10 ! base frame indicator PARAMETER PDSC$S_TARGET_INVO = 1 PARAMETER PDSC$V_TARGET_INVO = 11 ! unwind target invo handler to be called PARAMETER PDSC$S_NATIVE = 1 PARAMETER PDSC$V_NATIVE = 12 ! set to 1 for compiled code PARAMETER PDSC$S_NO_JACKET = 1 PARAMETER PDSC$V_NO_JACKET = 13 ! set to 1 for compiled code PARAMETER PDSC$S_TIE_FRAME = 1 PARAMETER PDSC$V_TIE_FRAME = 14 ! must be 0 for compiled code BYTE %FILL (2) END MAP END UNION UNION MAP INTEGER*2 PDSC$W_RSA_OFFSET ! offset to register save area from base (SF only) END MAP MAP BYTE PDSC$B_SAVE_FP ! register number for saved FP (RF only) BYTE PDSC$B_SAVE_RA ! register number for saved return address (RF only) END MAP END UNION BYTE PDSC$B_ENTRY_RA ! register in which return address is passed PARAMETER PDSC$S_FUNC_RETURN = 4 PARAMETER PDSC$V_FUNC_RETURN = 0 ! register specificatons for function value return PARAMETER PDSC$S_EXCEPTION_MODE = 3 PARAMETER PDSC$V_EXCEPTION_MODE = 4 ! the caller's desired exception reporting behavior INTEGER*2 PDSC$W_SIGNATURE_OFFSET ! offset from procedure descriptor to signature UNION MAP INTEGER*4 PDSC$Q_ENTRY(2) ! address of start of procedure code BYTE %FILL (1) END MAP MAP INTEGER*4 PDSC$L_ENTRY ! first longword is sign extended to quadword END MAP END UNION UNION MAP INTEGER*4 PDSC$L_SIZE ! size of fixed portion of stack END MAP MAP UNION MAP INTEGER*4 PDSC$Q_PROC_VALUE(2) ! for bound procedure descriptor, END MAP MAP INTEGER*4 PDSC$L_PROC_VALUE ! this value is a procedure descriptor. INTEGER*4 %FILL ! reserved END MAP END UNION END MAP END UNION UNION MAP INTEGER*4 PDSC$L_IREG_MASK ! integer register save mask INTEGER*4 PDSC$L_FREG_MASK ! floating register save mask INTEGER*4 PDSC$Q_STACK_HANDLER(2) ! absolute pointer to procedure descriptor (opt) INTEGER*4 PDSC$Q_STACK_HANDLER_DATA(2) ! data for stack handler (opt) END MAP MAP INTEGER*4 PDSC$Q_REG_HANDLER(2) ! absolute pointer to procedure descriptor (opt) INTEGER*4 PDSC$Q_REG_HANDLER_DATA(2) ! data for handler (opt) END MAP MAP UNION MAP INTEGER*4 PDSC$L_ENVIRONMENT END MAP MAP INTEGER*4 PDSC$Q_ENVIRONMENT(2) END MAP END UNION END MAP END UNION END STRUCTURE ! PDSCDEF PARAMETER PDSC$K_LKP_LENGTH = '00000010'X ! Linkage pair size STRUCTURE /PDSC_LKPDEF/ ! Linkage pair def UNION MAP INTEGER*4 PDSC$Q_LKP_ENTRY(2) ! Entry point addr END MAP MAP INTEGER*4 PDSC$PS_LKP_ENTRY END MAP END UNION UNION MAP INTEGER*4 PDSC$Q_LKP_PROC_VALUE(2) ! Proc desc addr END MAP MAP INTEGER*4 PDSC$PS_LKP_PROC_VALUE END MAP END UNION END STRUCTURE ! PDSC_LKPDEF PARAMETER LKP$K_SIZE = '00000010'X ! Linkage pair size STRUCTURE /LKPDEF/ ! Linkage pair def UNION MAP INTEGER*4 LKP$Q_ENTRY(2) END MAP MAP INTEGER*4 LKP$PS_ENTRY END MAP END UNION UNION MAP INTEGER*4 LKP$Q_PROC_VALUE(2) END MAP MAP INTEGER*4 LKP$PS_PROC_VALUE END MAP END UNION END STRUCTURE ! LKPDEF !DEC$ END OPTIONS