! *** 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 ! ! Signature block offset definitions for the Alpha/IA64 calling standard. ! DECLARE LONG CONSTANT PSIG$K_FR_I64 = 0 ! 64 bit in R0 ! or - No function result provided DECLARE LONG CONSTANT PSIG$K_FR_D64 = 1 ! 32 bit low in R0, 32 bit high in r1 - sign extended DECLARE LONG CONSTANT PSIG$K_FR_I32 = 2 ! 32 bit sign extended in R0 DECLARE LONG CONSTANT PSIG$K_FR_U32 = 3 ! 32 bit unsigned in R0 DECLARE LONG CONSTANT PSIG$K_FR_FF = 4 ! F floating in F0 DECLARE LONG CONSTANT PSIG$K_FR_FD = 5 ! D floating in F0 DECLARE LONG CONSTANT PSIG$K_FR_FG = 6 ! G floating in F0 DECLARE LONG CONSTANT PSIG$K_FR_FS = 7 ! S floating in F0 DECLARE LONG CONSTANT PSIG$K_FR_FT = 8 ! T floating in F0 DECLARE LONG CONSTANT PSIG$K_FR_FFC = 11 ! F floating complex in F0 and F1 DECLARE LONG CONSTANT PSIG$K_FR_FDC = 12 ! D floating complex in F0 and F1 DECLARE LONG CONSTANT PSIG$K_FR_FGC = 13 ! G floating complex in F0 and F1 DECLARE LONG CONSTANT PSIG$K_FR_FSC = 14 ! S floating complex in F0 and F1 DECLARE LONG CONSTANT PSIG$K_FR_FTC = 15 ! T floating complex in F0 and F1 ! DECLARE LONG CONSTANT PSIG$M_CTRL = x'00000007' DECLARE LONG CONSTANT PSIG$M_X = x'000000F8' DECLARE LONG CONSTANT PSIG$M_FUNC_RETURN = x'00000F00' DECLARE LONG CONSTANT PSIG$M_REG_ARG_INFO = x'00000000' DECLARE LONG CONSTANT PSIG$M_SU_VLIST = x'00004000' DECLARE LONG CONSTANT PSIG$K_MIN_LENGTH = 8 ! Minimum length DECLARE LONG CONSTANT PSIG$K_MAX_LENGTH = 72 ! Maximum length DECLARE LONG CONSTANT PSIG$K_MIN_SIZE = 8 ! Minimum size DECLARE LONG CONSTANT PSIG$K_MAX_SIZE = 72 ! Maximum size DECLARE LONG CONSTANT PSIG$S_PSIGDEF = 8 record PSIGDEF ! or - First parameter mechanism used ! First quadword of signature block ! group PSIG$R_REGISTER_INFO_OVERLAY variant case group PSIG$R_FILL_83_ variant case BASIC$QUADWORD PSIG$Q_REGISTER_INFO case group PSIG$R_FILL_84_ ! Control information field ! Not used. Must be zero ! Function return signature encoding ! Entire summary field WORD CTRL_bits ! COMMENT ADDED BY SDL - CTRL_bits contains bits CTRL through SUMMARY BYTE PSIG$B_ARG_COUNT ! Argument count ! Register argument signature encodings ! Minimum length for memory argument information BYTE REG_ARG_INFO_bits ( 5 ) ! COMMENT ADDED BY SDL - REG_ARG_INFO_bits contains bits REG_ARG_INFO & ! through MEMORY_ARG_INFO end group PSIG$R_FILL_84_ end variant end group PSIG$R_FILL_83_ ! ! Summary bits which are contained in the high bits of the first word ! case group PSIG$R_FILL_85_ variant case BASIC$QUADWORD PSIG$Q_SUMMARY_INFO case group PSIG$R_FILL_86_ ! summary of arguments 9 through arg_count ! VAX style argument list expected WORD FILL_bits ! COMMENT ADDED BY SDL - FILL_bits contains bits FILL through UNUSED end group PSIG$R_FILL_86_ end variant end group PSIG$R_FILL_85_ end variant end group PSIG$R_REGISTER_INFO_OVERLAY end record PSIGDEF DECLARE LONG CONSTANT RASE$M_SIG_ENC = x'0000000F' DECLARE LONG CONSTANT RASE$K_RA_I64 = 0 ! (obsolete) DECLARE LONG CONSTANT RASE$K_RA_NOARG = 0 ! Argument is not present DECLARE LONG CONSTANT RASE$K_RA_Q = 1 ! 64 bit in Rxx DECLARE LONG CONSTANT RASE$K_RA_I32 = 2 ! 32 bit sign extended in Rxx DECLARE LONG CONSTANT RASE$K_RA_U32 = 3 ! 32 bit unsigned in Rxx DECLARE LONG CONSTANT RASE$K_RA_FF = 4 ! F floating passed in Fxx DECLARE LONG CONSTANT RASE$K_RA_FD = 5 ! D floating passed in Fxx DECLARE LONG CONSTANT RASE$K_RA_FG = 6 ! G floating passed in Fxx DECLARE LONG CONSTANT RASE$K_RA_FS = 7 ! S floating passed in Fxx DECLARE LONG CONSTANT RASE$K_RA_FT = 8 ! T floating passed in Fxx DECLARE LONG CONSTANT RASE$S_RASEDEF = 1 record RASEDEF ! per register signature encoding BYTE SIG_ENC_bits ! COMMENT ADDED BY SDL - SIG_ENC_bits contains bits SIG_ENC through FILL_87_ end record RASEDEF DECLARE LONG CONSTANT MASE$K_MA_I64 = 0 ! (obsolete) DECLARE LONG CONSTANT MASE$K_MA_Q = 0 ! 64 bit argument DECLARE LONG CONSTANT MASE$K_MA_I32 = 2 ! 32 bit signed argument DECLARE LONG CONSTANT MASE$S_MASEDEF = 1 record MASEDEF ! per memory location signature encoding BYTE SIG_ENC_bits ! COMMENT ADDED BY SDL - SIG_ENC_bits contains bits SIG_ENC through FILL_88_ end record MASEDEF ! ! Argument Information structure definition for the Alpha/IA64 calling standard. ! DECLARE LONG CONSTANT AI$K_AR_I64 = 0 ! Integer argument DECLARE LONG CONSTANT AI$K_AR_FF = 1 ! VAX F float argument DECLARE LONG CONSTANT AI$K_AR_FD = 2 ! VAX D float argument DECLARE LONG CONSTANT AI$K_AR_FG = 3 ! VAX G float argument DECLARE LONG CONSTANT AI$K_AR_FS = 4 ! IEEE S float argument DECLARE LONG CONSTANT AI$K_AR_FT = 5 ! IEEE T float argument DECLARE LONG CONSTANT AI$K_AR_RESERVED_6 = 6 ! Reserved value 6 DECLARE LONG CONSTANT AI$K_AR_RESERVED_7 = 7 ! Reserved value 7 DECLARE LONG CONSTANT AI$M_ARG_REG_INFO = x'00000700' DECLARE LONG CONSTANT AI$K_AI_SIZE = 8 ! Minimum length DECLARE LONG CONSTANT AI$K_REGNO = 25 ! The AI register number DECLARE LONG CONSTANT AI$S_AIDEF = 8 record AIDEF BYTE AI$B_ARG_COUNT ! per arg type info for up to 8 arguments ! must be zero BYTE ARG_REG_INFO_bits ( 7 ) ! COMMENT ADDED BY SDL - ARG_REG_INFO_bits contains bits ARG_REG_INFO through ARG_MBZ2 end record AIDEF