! *** PREDECLARED TYPES %IF %DECLARED ( %BASIC$QUADWORD_DECLARED ) = 0 %THEN RECORD BASIC$QUADWORD LONG FILL ( 2 ) END RECORD %LET %BASIC$QUADWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$OCTAWORD_DECLARED ) = 0 %THEN RECORD BASIC$OCTAWORD LONG FILL ( 4 ) END RECORD %LET %BASIC$OCTAWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$HFLOAT_AXP_DECLARED ) = 0 %THEN RECORD BASIC$HFLOAT_AXP LONG FILL ( 4 ) END RECORD %LET %BASIC$HFLOAT_AXP_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$F_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$F_FLOATING_COMPLEX SINGLE REAL_PART SINGLE IMAGINARY_PART END RECORD %LET %BASIC$F_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$D_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$D_FLOATING_COMPLEX DOUBLE REAL_PART DOUBLE IMAGINARY_PART END RECORD %LET %BASIC$D_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$G_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$G_FLOATING_COMPLEX GFLOAT REAL_PART GFLOAT IMAGINARY_PART END RECORD %LET %BASIC$G_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$H_FLOAT_AXP_CMPLX_DCL ) = 0 %THEN RECORD BASIC$H_FLOATING_COMPLEX_AXP BASIC$HFLOAT_AXP REAL_PART BASIC$HFLOAT_AXP IMAGINARY_PART END RECORD %LET %BASIC$H_FLOAT_AXP_CMPLX_DCL = 1 %END %IF ! ! Function descriptor offset definitions for the IA64 VMS calling ! standard. This definition includes the offsets and fields for ! local, official, translated/native, and bound function descriptors. ! ! Function descriptor kind quadwords in FD ! ! Local FD w/o translated image support 2 ! Local FD with translated image support 4 ! Official FD w/o translated image support 2 or 3 (see note) ! Official FD with translated image support 3 ! Bound FD 6 ! ! Note: the official FD w/o translated image support could be 2 ! quadwords if the linker knows it's not a universal symbol and ! that no module exports its address. Until there's a way for ! compilers to notify the linker of this, all such FDs are 3 ! quadwords in length. ! DECLARE LONG CONSTANT FDSC$K_BOUND_SIZE = 48 ! Size of bound procedure descriptor DECLARE LONG CONSTANT FDSC$S_FDSCDEF = 48 record FDSCDEF group FDSC$R_ENTRY_OVERLAY variant case BASIC$QUADWORD FDSC$Q_ENTRY ! Simple FD: Entry code address case LONG FDSC$L_ENTRY case BASIC$QUADWORD FDSC$Q_OTS_ENTRY ! Bound FD: Entry code address of OTS$JUMP_TO_BPV case LONG FDSC$L_OTS_ENTRY end variant end group FDSC$R_ENTRY_OVERLAY group FDSC$R_GP_OVERLAY variant case BASIC$QUADWORD FDSC$Q_GP ! Simple FD: Global pointer case LONG FDSC$L_GP case BASIC$QUADWORD FDSC$Q_OTS_PSEUDO_GP ! Bound FD: Global pointer for OTS$JUMP_TO_BPV (ie. address of this FD) case LONG FDSC$L_OTS_PSEUDO_GP end variant end group FDSC$R_GP_OVERLAY group FDSC$R_SIGNATURE_OVERLAY variant case BASIC$QUADWORD FDSC$Q_SIGNATURE ! Signature information field case group FDSC$R_SIGNATURE_STRUCT LONG FDSC$L_SIGNATURE_L LONG FDSC$L_SIGNATURE_H end group FDSC$R_SIGNATURE_STRUCT end variant end group FDSC$R_SIGNATURE_OVERLAY group FDSC$R_TARGET_ENTRY_OVERLAY variant case BASIC$QUADWORD FDSC$Q_TARGET_ENTRY ! PD address of translated routine or entry code address of bound procedure case LONG FDSC$L_TARGET_ENTRY end variant end group FDSC$R_TARGET_ENTRY_OVERLAY group FDSC$R_TARGET_GP_OVERLAY variant case BASIC$QUADWORD FDSC$Q_TARGET_GP ! Global pointer for bound procedure case LONG FDSC$L_TARGET_GP end variant end group FDSC$R_TARGET_GP_OVERLAY group FDSC$R_TARGET_ENVIR_OVERLAY variant case BASIC$QUADWORD FDSC$Q_TARGET_ENVIR ! Environment value for bound procedure (uplevel-addressing pointer) case LONG FDSC$L_TARGET_ENVIR end variant end group FDSC$R_TARGET_ENVIR_OVERLAY end record FDSCDEF