!*** MODULE $CHFDEF *** !DEC$ OPTIONS/ALIGN=(RECORDS=PACKED,COMMONS=PACKED)/NOWARN ! ! CONDITION HANDLING ARGUMENT LIST OFFSETS ! THERE ARE FOUR CONDITIONAL HANDLING STRUCTURES: THE PRIMARY ARGUMENT ! LIST, THE SIGNAL AND MECHANISM ARRAYS AND THE ALPHA EXCEPTION RECORD ! ALL ARE IDENTIFIED BY THE SAME BLOCK PREFIX. ! STRUCTURE /CHFDEF/ INTEGER*4 %FILL ! Primary Argument Count INTEGER*4 CHF$L_SIGARGLST ! ADDRESS OF SIGNAL ARGUMENTS INTEGER*4 CHF$L_MCHARGLST ! ADDRESS OF MECHANISM ARGUMENTS END STRUCTURE ! CHFDEF STRUCTURE /CHFDEF1/ UNION MAP INTEGER*4 CHF$IS_SIG_ARGS ! NUMBER OF SIGNAL ARGUMENTS END MAP MAP INTEGER*4 CHF$L_SIG_ARGS ! obsolete def END MAP END UNION UNION MAP INTEGER*4 CHF$IS_SIG_NAME ! SIGNAL NAME END MAP MAP INTEGER*4 CHF$L_SIG_NAME ! obsolete def END MAP END UNION UNION MAP INTEGER*4 CHF$IS_SIG_ARG1 ! FIRST SIGNAL SPECIFIC ARGUMENT END MAP MAP INTEGER*4 CHF$L_SIG_ARG1 ! obsolete def END MAP END UNION END STRUCTURE ! CHFDEF1 PARAMETER CHF$M_FPREGS_VALID = '00000001'X PARAMETER CHF$M_FPREGS2_VALID = '00000002'X STRUCTURE /CHFDEF2/ UNION MAP INTEGER*4 CHF$IS_MCH_ARGS ! NUMBER OF MECHANISM ARGUMENTS END MAP END UNION UNION MAP INTEGER*4 CHF$IS_MCH_FLAGS ! Flags END MAP MAP PARAMETER CHF$S_FPREGS_VALID = 1 PARAMETER CHF$V_FPREGS_VALID = 0 ! FP registers stored in MCH. PARAMETER CHF$S_FPREGS2_VALID = 1 PARAMETER CHF$V_FPREGS2_VALID = 1 BYTE %FILL (1) END MAP END UNION UNION MAP INTEGER*8 CHF$PH_MCH_FRAME ! ESTABLISHER FRAME ADDRESS END MAP END UNION UNION MAP INTEGER*4 CHF$IS_MCH_DEPTH ! FRAME DEPTH OF ESTABLISHER END MAP MAP INTEGER*4 CHF$IH_MCH_DEPTH ! temp END MAP END UNION INTEGER*4 CHF$IS_MCH_RESVD1 ! reserved, paired with DEPTH INTEGER*8 CHF$PH_MCH_DADDR ! ESTABLISHER HANDLER DATA CELL INTEGER*8 CHF$PH_MCH_ESF_ADDR ! ESTABLISHER EXCEPTION STACK FRAME INTEGER*8 CHF$PH_MCH_SIG_ADDR ! ESTABLISHER EXCEPTION STACK FRAME UNION MAP INTEGER*8 CHF$IH_MCH_RETVAL END MAP MAP UNION MAP INTEGER*8 CHF$IH_MCH_SAVR0 ! SAVED REGISTER R0 END MAP MAP INTEGER*4 CHF$IL_MCH_SAVR0_LOW ! LOW ORDER 32 BITS INTEGER*4 CHF$IL_MCH_SAVR0_HIGH ! HIGH ORDER 32 BITS END MAP END UNION END MAP END UNION UNION MAP INTEGER*8 CHF$IH_MCH_RETVAL2 END MAP MAP UNION MAP INTEGER*8 CHF$IH_MCH_SAVR1 ! SAVED REGISTER R1 END MAP MAP INTEGER*4 CHF$IL_MCH_SAVR1_LOW ! LOW ORDER 32 BITS INTEGER*4 CHF$IL_MCH_SAVR1_HIGH ! HIGH ORDER 32 BITS END MAP END UNION END MAP END UNION INTEGER*8 CHF$PH_MCH_SIG64_ADDR ! 64-bit sig array ptr INTEGER*8 CHF$PH_MCH_SAVF32_SAVF127 BYTE CHF$FH_MCH_RETVAL_FLOAT(1:16) BYTE CHF$FH_MCH_RETVAL2_FLOAT(1:16) BYTE CHF$FH_MCH_SAVF2(1:16) BYTE CHF$FH_MCH_SAVF3(1:16) BYTE CHF$FH_MCH_SAVF4(1:16) BYTE CHF$FH_MCH_SAVF5(1:16) BYTE CHF$FH_MCH_SAVF12(1:16) BYTE CHF$FH_MCH_SAVF13(1:16) BYTE CHF$FH_MCH_SAVF14(1:16) BYTE CHF$FH_MCH_SAVF15(1:16) BYTE CHF$FH_MCH_SAVF16(1:16) BYTE CHF$FH_MCH_SAVF17(1:16) BYTE CHF$FH_MCH_SAVF18(1:16) BYTE CHF$FH_MCH_SAVF19(1:16) BYTE CHF$FH_MCH_SAVF20(1:16) BYTE CHF$FH_MCH_SAVF21(1:16) BYTE CHF$FH_MCH_SAVF22(1:16) BYTE CHF$FH_MCH_SAVF23(1:16) BYTE CHF$FH_MCH_SAVF24(1:16) BYTE CHF$FH_MCH_SAVF25(1:16) BYTE CHF$FH_MCH_SAVF26(1:16) BYTE CHF$FH_MCH_SAVF27(1:16) BYTE CHF$FH_MCH_SAVF28(1:16) BYTE CHF$FH_MCH_SAVF29(1:16) BYTE CHF$FH_MCH_SAVF30(1:16) BYTE CHF$FH_MCH_SAVF31(1:16) INTEGER*8 CHF$IH_MCH_SAVB1 INTEGER*8 CHF$IH_MCH_SAVB2 INTEGER*8 CHF$IH_MCH_SAVB3 INTEGER*8 CHF$IH_MCH_SAVB4 INTEGER*8 CHF$IH_MCH_SAVB5 INTEGER*8 CHF$IH_MCH_AR_LC INTEGER*8 CHF$IH_MCH_AR_EC INTEGER*8 CHF$PH_MCH_OSSD INTEGER*4 CHF$Q_MCH_INVO_HANDLE(2) INTEGER*8 CHF$PH_MCH_UWR_START INTEGER*8 CHF$IH_MCH_FPSR INTEGER*8 CHF$IH_MCH_FPSS END STRUCTURE ! CHFDEF2 PARAMETER CHF$M_CALEXT_CANCEL = '00000001'X PARAMETER CHF$M_CALEXT_LAST = '00000002'X PARAMETER CHF$K_CALEXT_LENGTH = '00000010'X ! LENGTH OF CATCH-ALL DESC BLOCK PARAMETER CHF$C_CALEXT_LENGTH = '00000010'X ! LENGTH OF CATCH-ALL DESC BLOCK STRUCTURE /CHFDEF3/ INTEGER*4 CHF$L_CALEXT_LINK ! CATCH-ALL EXTENSION LINK INTEGER*4 CHF$L_CALEXT_ADDRESS ! ADDRESS OF CATCH-ALL EXTENSION UNION MAP INTEGER*4 CHF$L_CALEXT_FLAGS ! FLAGS END MAP MAP PARAMETER CHF$S_CALEXT_CANCEL = 1 PARAMETER CHF$V_CALEXT_CANCEL = 0 ! REMOVE CATCH-ALL EXTENSION PARAMETER CHF$S_CALEXT_LAST = 1 PARAMETER CHF$V_CALEXT_LAST = 1 ! LAST CATCH-ALL EXTENSION BYTE %FILL (1) END MAP END UNION INTEGER*4 CHF$L_CALEXT_RESERVED ! RESERVED END STRUCTURE ! CHFDEF3 STRUCTURE /CHFDEF6/ UNION MAP INTEGER*4 CHF64$L_SIG_ARGS ! Longword including count & options END MAP MAP INTEGER*2 CHF64$W_SIG_ARG_COUNT ! Word holding count itself INTEGER*2 CHF64$W_SIG_MSG_OPTIONS ! Word containing message options END MAP END UNION INTEGER*4 CHF64$L_SIGNAL64 ! 64-bit array tag: overlays sig_name of 32b version INTEGER*4 CHF64$Q_SIG_NAME(2) ! Signal value INTEGER*4 CHF64$Q_SIG_ARG1(2) ! First signal argument END STRUCTURE ! CHFDEF6 !DEC$ END OPTIONS