!*** MODULE $PSIGDEF *** !DEC$ OPTIONS/ALIGN=(RECORDS=PACKED,COMMONS=PACKED)/NOWARN ! ! Signature block offset definitions for the Alpha/IA64 calling standard. ! PARAMETER PSIG$K_FR_I64 = '00000000'X ! 64 bit in R0 ! or - No function result provided PARAMETER PSIG$K_FR_D64 = '00000001'X ! 32 bit low in R0, 32 bit high in r1 - sign extended PARAMETER PSIG$K_FR_I32 = '00000002'X ! 32 bit sign extended in R0 PARAMETER PSIG$K_FR_U32 = '00000003'X ! 32 bit unsigned in R0 PARAMETER PSIG$K_FR_FF = '00000004'X ! F floating in F0 PARAMETER PSIG$K_FR_FD = '00000005'X ! D floating in F0 PARAMETER PSIG$K_FR_FG = '00000006'X ! G floating in F0 PARAMETER PSIG$K_FR_FS = '00000007'X ! S floating in F0 PARAMETER PSIG$K_FR_FT = '00000008'X ! T floating in F0 PARAMETER PSIG$K_FR_FFC = '0000000B'X ! F floating complex in F0 and F1 PARAMETER PSIG$K_FR_FDC = '0000000C'X ! D floating complex in F0 and F1 PARAMETER PSIG$K_FR_FGC = '0000000D'X ! G floating complex in F0 and F1 PARAMETER PSIG$K_FR_FSC = '0000000E'X ! S floating complex in F0 and F1 PARAMETER PSIG$K_FR_FTC = '0000000F'X ! T floating complex in F0 and F1 ! PARAMETER PSIG$M_CTRL = '00000007'X PARAMETER PSIG$M_X = '000000F8'X PARAMETER PSIG$M_FUNC_RETURN = '00000F00'X PARAMETER PSIG$M_REG_ARG_INFO = '00000000'X PARAMETER PSIG$M_SU_VLIST = '00004000'X PARAMETER PSIG$K_MIN_LENGTH = '00000008'X ! Minimum length PARAMETER PSIG$K_MAX_LENGTH = '00000048'X ! Maximum length PARAMETER PSIG$K_MIN_SIZE = '00000008'X ! Minimum size PARAMETER PSIG$K_MAX_SIZE = '00000048'X ! Maximum size STRUCTURE /PSIGDEF/ ! or - First parameter mechanism used ! First quadword of signature block ! UNION MAP UNION MAP INTEGER*4 PSIG$Q_REGISTER_INFO(2) END MAP MAP PARAMETER PSIG$S_CTRL = 3 PARAMETER PSIG$V_CTRL = 0 ! Control information field PARAMETER PSIG$S_X = 5 PARAMETER PSIG$V_X = 3 ! Not used. Must be zero PARAMETER PSIG$S_FUNC_RETURN = 4 PARAMETER PSIG$V_FUNC_RETURN = 8 ! Function return signature encoding PARAMETER PSIG$S_SUMMARY = 4 PARAMETER PSIG$V_SUMMARY = 12 BYTE %FILL (2) ! Entire summary field BYTE PSIG$B_ARG_COUNT ! Argument count PARAMETER PSIG$S_REG_ARG_INFO = 32 PARAMETER PSIG$V_REG_ARG_INFO = 24 ! Register argument signature encodings PARAMETER PSIG$S_MEMORY_ARG_INFO = 8 PARAMETER PSIG$V_MEMORY_ARG_INFO = 56 BYTE %FILL (5) ! Minimum length for memory argument information END MAP END UNION END MAP ! ! Summary bits which are contained in the high bits of the first word ! MAP UNION MAP INTEGER*4 PSIG$Q_SUMMARY_INFO(2) END MAP MAP PARAMETER PSIG$S_FILL = 12 PARAMETER PSIG$V_FILL = 0 PARAMETER PSIG$S_SU_ASUM = 2 PARAMETER PSIG$V_SU_ASUM = 12 ! summary of arguments 9 through arg_count PARAMETER PSIG$S_SU_VLIST = 1 PARAMETER PSIG$V_SU_VLIST = 14 ! VAX style argument list expected PARAMETER PSIG$S_UNUSED = 1 PARAMETER PSIG$V_UNUSED = 15 BYTE %FILL (2) END MAP END UNION END MAP END UNION END STRUCTURE ! PSIGDEF PARAMETER RASE$M_SIG_ENC = '0000000F'X PARAMETER RASE$K_RA_I64 = '00000000'X ! (obsolete) PARAMETER RASE$K_RA_NOARG = '00000000'X ! Argument is not present PARAMETER RASE$K_RA_Q = '00000001'X ! 64 bit in Rxx PARAMETER RASE$K_RA_I32 = '00000002'X ! 32 bit sign extended in Rxx PARAMETER RASE$K_RA_U32 = '00000003'X ! 32 bit unsigned in Rxx PARAMETER RASE$K_RA_FF = '00000004'X ! F floating passed in Fxx PARAMETER RASE$K_RA_FD = '00000005'X ! D floating passed in Fxx PARAMETER RASE$K_RA_FG = '00000006'X ! G floating passed in Fxx PARAMETER RASE$K_RA_FS = '00000007'X ! S floating passed in Fxx PARAMETER RASE$K_RA_FT = '00000008'X ! T floating passed in Fxx STRUCTURE /RASEDEF/ PARAMETER RASE$S_SIG_ENC = 4 PARAMETER RASE$V_SIG_ENC = 0 ! per register signature encoding BYTE %FILL (1) END STRUCTURE ! RASEDEF PARAMETER MASE$K_MA_I64 = '00000000'X ! (obsolete) PARAMETER MASE$K_MA_Q = '00000000'X ! 64 bit argument PARAMETER MASE$K_MA_I32 = '00000002'X ! 32 bit signed argument STRUCTURE /MASEDEF/ PARAMETER MASE$S_SIG_ENC = 2 PARAMETER MASE$V_SIG_ENC = 0 ! per memory location signature encoding BYTE %FILL (1) END STRUCTURE ! MASEDEF ! ! Argument Information structure definition for the Alpha/IA64 calling standard. ! PARAMETER AI$K_AR_I64 = '00000000'X ! Integer argument PARAMETER AI$K_AR_FF = '00000001'X ! VAX F float argument PARAMETER AI$K_AR_FD = '00000002'X ! VAX D float argument PARAMETER AI$K_AR_FG = '00000003'X ! VAX G float argument PARAMETER AI$K_AR_FS = '00000004'X ! IEEE S float argument PARAMETER AI$K_AR_FT = '00000005'X ! IEEE T float argument PARAMETER AI$K_AR_RESERVED_6 = '00000006'X ! Reserved value 6 PARAMETER AI$K_AR_RESERVED_7 = '00000007'X ! Reserved value 7 PARAMETER AI$M_ARG_REG_INFO = '00000700'X PARAMETER AI$K_AI_SIZE = '00000008'X ! Minimum length PARAMETER AI$K_REGNO = '00000019'X ! The AI register number STRUCTURE /AIDEF/ BYTE AI$B_ARG_COUNT PARAMETER AI$S_ARG_REG_INFO = 3 PARAMETER AI$V_ARG_REG_INFO = 8 ! per arg type info for up to 8 arguments BYTE %FILL (1) END STRUCTURE ! AIDEF !DEC$ END OPTIONS