! *** 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 DECLARE LONG CONSTANT LIB$K_PROC_VALUE_NULL = 0 DECLARE LONG CONSTANT LIB$K_INVO_HANDLE_NULL = 0 DECLARE LONG CONSTANT LIBICB$K_INVO_HANDLE_SIZE = 8 DECLARE LONG CONSTANT LIBICB$K_INVO_CONTEXT_VERSION = 2 ! The header quadword contains: DECLARE LONG CONSTANT LIBICB$M_FFLAGS_BITS = x'00FFFFFF' DECLARE LONG CONSTANT LIBICB$M_BOTTOM_OF_STACK = x'00000001' DECLARE LONG CONSTANT LIBICB$M_HANDLER_PRESENT = x'00000002' DECLARE LONG CONSTANT LIBICB$M_IN_PROLOGUE = x'00000004' DECLARE LONG CONSTANT LIBICB$M_IN_EPILOGUE = x'00000008' DECLARE LONG CONSTANT LIBICB$M_HAS_MEM_STK_FRAME = x'00000010' DECLARE LONG CONSTANT LIBICB$M_HAS_REG_STK_FRAME = x'00000020' DECLARE LONG CONSTANT LIBICB$K_INVO_CONTEXT_T_LENGTH = 1888 DECLARE LONG CONSTANT LIBICB$K_SDA_COPY_LENGTH = 1960 DECLARE LONG CONSTANT LIBICB$M_UO_FLAG_CACHE_UNWIND = x'00000001' DECLARE LONG CONSTANT LIBICB$M_UO_FLAG_EMULATION_MODE = x'00000002' DECLARE LONG CONSTANT LIBICB$K_UO_LENGTH = 88 ! DECLARE LONG CONSTANT LIBICB$m_using_client_memread = x'00000001' DECLARE LONG CONSTANT LIBICB$m_my_mode = x'00000006' DECLARE LONG CONSTANT LIBICB$K_CONTEXT_BLK_SIZE = 2080 ! The following is an "internal" area that's reserved for use by DECLARE LONG CONSTANT LIBICB$K_REGION_BLK_SIZE = 1096 DECLARE LONG CONSTANT LIBICB$K_REGIONLABEL_BLK_SIZE = 32 DECLARE LONG CONSTANT LIBICB$K_DESCRIPTOR_BLK_SIZE = 1280 ! Action codes: DECLARE LONG CONSTANT LIBICB$K_ACTION_KP_FIND_UNWIND = 1 ! override call to exe$kp_find_unwind_context ! prototype: ! uint64 sp = action_routine (enum action_code code, uint64 sp, uint64 ident); DECLARE LONG CONSTANT LIBICB$K_ACTION_USE_DEFAULT = -1 ! action routine return value to "use default" ! Alert codes: (matches _UNW_ReturnCode enum in unwind.h) DECLARE LONG CONSTANT LIBICB$K_AC_STEP_KRNL_SAV_STATE = -2 ! _UNW_STEP_KERNEL_SAVE_STATE = -2 DECLARE LONG CONSTANT LIBICB$K_AC_STEP_BOTTOM = -1 ! _UNW_STEP_BOTTOM DECLARE LONG CONSTANT LIBICB$K_AC_OK = 0 ! _UNW_OK = 0 DECLARE LONG CONSTANT LIBICB$K_AC_STEP_ERROR = 1 ! _UNW_STEP_ERROR DECLARE LONG CONSTANT LIBICB$K_AC_STEP_INVALID_IP = 2 ! _UNW_STEP_INVALID_IP DECLARE LONG CONSTANT LIBICB$K_AC_STEP_INVALID_SP = 3 ! _UNW_STEP_INVALID_SP DECLARE LONG CONSTANT LIBICB$K_AC_STEP_INVALID_GR = 4 ! _UNW_STEP_INVALID_GR DECLARE LONG CONSTANT LIBICB$K_AC_STEP_INVALID_PFS = 5 ! _UNW_STEP_INVALID_PFS DECLARE LONG CONSTANT LIBICB$K_AC_STEP_INVALID_RSC = 6 ! _UNW_STEP_INVALID_RSC DECLARE LONG CONSTANT LIBICB$K_AC_STEP_INVALID_BSP = 7 ! _UNW_STEP_INVALID_BSP DECLARE LONG CONSTANT LIBICB$K_AC_STEP_INV_BSPSTORE = 8 ! _UNW_STEP_INVALID_BSPSTORE DECLARE LONG CONSTANT LIBICB$K_AC_STEP_INVALID_CFM = 9 ! _UNW_STEP_INVALID_CFM DECLARE LONG CONSTANT LIBICB$K_AC_STEP_INVALID_BR = 10 ! _UNW_STEP_INVALID_BR DECLARE LONG CONSTANT LIBICB$K_AC_STEP_BAD_BSP_ALIGN = 11 ! _UNW_STEP_BAD_BSP_ALIGNMENT DECLARE LONG CONSTANT LIBICB$K_AC_STEP_INVALID_RNAT = 12 ! _UNW_STEP_INVALID_RNAT DECLARE LONG CONSTANT LIBICB$K_AC_STEP_NODSC4_NONLEAF = 13 ! _UNW_STEP_NO_DESCRIPTOR_FOR_NON_LEAF DECLARE LONG CONSTANT LIBICB$K_AC_STEP_CORRUPT_DESC = 14 ! _UNW_STEP_CORRUPT_DESCRIPTOR DECLARE LONG CONSTANT LIBICB$K_AC_STEP_RSE_NOT_FLUSHD = 15 ! _UNW_STEP_RSE_NOT_FLUSHED DECLARE LONG CONSTANT LIBICB$K_AC_STEP_SIGNAL_CONTEXT = 16 ! _UNW_STEP_SIGNAL_CONTEXT DECLARE LONG CONSTANT LIBICB$K_AC_STEP_BAD_STATE = 17 ! _UNW_STEP_NOT_ALLOWED_IN_STATE DECLARE LONG CONSTANT LIBICB$K_AC_INIT_RANGE_ERROR = 18 ! _UNW_INITIALIZATION_RANGE_ERROR DECLARE LONG CONSTANT LIBICB$K_AC_QUERY_RANGE_ERROR = 19 ! _UNW_QUERY_RANGE_ERROR DECLARE LONG CONSTANT LIBICB$K_AC_QUERY_INVALID_ERROR = 20 ! _UNW_QUERY_INVALID_ERROR DECLARE LONG CONSTANT LIBICB$K_AC_SET_BAD_STATE = 21 ! _UNW_SET_NOT_ALLOWED_IN_STATE DECLARE LONG CONSTANT LIBICB$K_AC_CURR_CTXT_FAILED = 22 ! _UNW_CURRENT_CONTEXT_FAILED DECLARE LONG CONSTANT LIBICB$K_AC_CURR_CTXT_BAD_STATE = 23 ! _UNW_CURRENT_CONTEXT_NOT_ALLOWED_IN_STATE DECLARE LONG CONSTANT LIBICB$K_AC_MEMORY_ALLOC_ERROR = 24 ! _UNW_MEMORY_ALLOCATION_ERROR DECLARE LONG CONSTANT LIBICB$K_AC_CLEAR_BAD_STATE = 25 ! _UNW_CLEAR_NOT_ALLOWED_IN_STATE DECLARE LONG CONSTANT LIBICB$K_AC_QUERY_BAD_STATE = 26 ! _UNW_QUERY_NOT_ALLOWED_IN_STATE DECLARE LONG CONSTANT LIBICB$K_AC_INTERNAL_ERROR = 27 ! _UNW_INTERNAL_ERROR DECLARE LONG CONSTANT LIBICB$K_AC_STEP_I_ABI_MISMATCH = 28 ! _UNW_STEP_INTERRUPTION_ABI_MISMATCH DECLARE LONG CONSTANT LIBICB$K_AC_UNALIGNED_ICB = 29 ! _UNW_UNALIGNED_ICB DECLARE LONG CONSTANT LIBICB$K_AC_READ_MEM_FAILURE = 30 ! _UNW_READ_MEMORY_FAILURE DECLARE LONG CONSTANT LIBICB$K_AC_WRITE_MEM_FAILURE = 31 ! _UNW_WRITE_MEMORY_FAILURE DECLARE LONG CONSTANT LIBICB$K_AC_WRITE_REG_FAILURE = 32 ! _UNW_WRITE_REGISTER_FAILURE DECLARE LONG CONSTANT LIBICB$K_AC_UO_INCON_CALLBACK = 33 ! _UNW_USER_OVERRIDE_INCONSISTENT_CALLBACK_PARAM DECLARE LONG CONSTANT LIBICB$K_AC_PUT_REG_INVALID = 34 ! _UNW_PUT_REGISTER_INVALID DECLARE LONG CONSTANT LIBICB$K_INVO_CONTEXT_BLK_SIZE = 2112 DECLARE LONG CONSTANT LIBICB$S_INVO_CONTEXT_BLK = 2112 record INVO_CONTEXT_BLK ! ! The length of the structure in bytes (a longword field), ! The frame flags (a 3 byte field of bits), and ! The version number (a 1 byte field) group LIBICB$R_HDR variant case BASIC$QUADWORD LIBICB$IH_HEADER ! Header (length, flags, version) case group LIBICB$R_HDR_DESC LONG LIBICB$L_CONTEXT_LENGTH group LIBICB$R_FRAMEFLAGS variant case LONG FFLAGS_BITS_bits ! COMMENT ADDED BY SDL - FFLAGS_BITS_bits contains bits FFLAGS_BITS through & ! FFLAGS_BITS case group LIBICB$R_FFLAGS_DESC BYTE BOTTOM_OF_STACK_bits ! COMMENT ADDED BY SDL - BOTTOM_OF_STACK_bits contains bits & ! BOTTOM_OF_STACK through FILL_0_ end group LIBICB$R_FFLAGS_DESC end variant end group LIBICB$R_FRAMEFLAGS BYTE LIBICB$B_BLOCK_VERSION end group LIBICB$R_HDR_DESC end variant end group LIBICB$R_HDR BASIC$QUADWORD LIBICB$ih_spare_01 ! Start of context_t must be octaword aligned ! ***** Start of context_t ****************** ! ! a context_t structure should be octaword (16-byte) aligned, and is passed by ! reference to the "get initial context" callback routine and establishes ! the "current" state of the machine and forms the inital context for for unwinding. ! group LIBICB$r_i_reg variant case BASIC$QUADWORD LIBICB$IH_IREG ( 127 ) ! General (integer) Registers ! 32 static registers, plus ! up to 96 stacked/rotating registers case group LIBICB$r_i_overlay BASIC$QUADWORD LIBICB$ih_i_used0 ! R0 BASIC$QUADWORD LIBICB$IH_GP ! synonym for R1 (Global Data Pointer) BASIC$QUADWORD LIBICB$ih_i_used1 ( 2 to 11 ) ! R2 - R11 BASIC$QUADWORD LIBICB$IH_SP ! synonym for R12 (Memory Stack Pointer) BASIC$QUADWORD LIBICB$IH_TP ! synonym for R13 (Thread Pointer) BASIC$QUADWORD LIBICB$ih_i_used2 ( 14 to 24 ) ! R14 - R24 BASIC$QUADWORD LIBICB$IH_AI ! synonym for R25 (Argument Information register) BASIC$QUADWORD LIBICB$ih_i_used3 ( 26 to 127 ) ! R26 - R127 end group LIBICB$r_i_overlay end variant end group LIBICB$r_i_reg BASIC$QUADWORD LIBICB$IH_GRNAT ( 1 ) ! General Register NaT Collection Registers BASIC$OCTAWORD LIBICB$FO_F2_F31 ( 2 to 31 ) ! Floating Point Registers. ! 32 static floating point registers. ! Floating Point Registers are 82 bits wide ! but stored here in octawords. BASIC$QUADWORD LIBICB$PH_F32_F127 ! Pointer to upper Floating Register save ! area. Zero if not saved. BASIC$QUADWORD LIBICB$IH_BRANCH ( 7 ) ! Branch Registers ! Application Registers (ARs) ! BASIC$QUADWORD LIBICB$IH_RSC ! Register Stack Configuration Register BASIC$QUADWORD LIBICB$IH_BSP ! Backing store pointer BASIC$QUADWORD LIBICB$IH_BSPSTORE ! Backing store write pointer BASIC$QUADWORD LIBICB$IH_RNAT ! RSE NaT Collection Register BASIC$QUADWORD LIBICB$IH_CCV ! Compare ? Exchange Value Register BASIC$QUADWORD LIBICB$IH_UNAT ! User NaT Collection Register BASIC$QUADWORD LIBICB$FH_FPSR ! OBSOLETE - do not rely on the contents of this field. BASIC$QUADWORD LIBICB$IH_PFS ! Previous Function State BASIC$QUADWORD LIBICB$IH_LC ! Loop Count Register BASIC$QUADWORD LIBICB$IH_EC ! Epilogue Count Register BASIC$QUADWORD LIBICB$IH_CSD ! Copy of AR.CSD BASIC$QUADWORD LIBICB$IH_SSD ! Copy of AR.SSD ! ! End ARs BASIC$QUADWORD LIBICB$Q_PRED ! Predicate Collection Register, PR0-PR63 BASIC$QUADWORD LIBICB$IH_PC ! Current PC (Instruction Pointer + slot) group LIBICB$r_cfm_u variant case BASIC$QUADWORD LIBICB$IH_CFM ! Current Frame Marker case group LIBICB$r_cfm_s ! Size of stack frame ! Size of locals portion of stack frame ! Size of rotating portion of stack frame ! Register Rename Base for General Registers ! Register Rename Base for Floating-point Registers ! Register Rename Base for Predicate Registers BYTE SOF_bits ( 5 ) ! COMMENT ADDED BY SDL - SOF_bits contains bits SOF through FILL_1_ end group LIBICB$r_cfm_s end variant end group LIBICB$r_cfm_u group LIBICB$r_um_u variant case BASIC$QUADWORD LIBICB$IH_UM ! User Mask bits of the PSR. case group LIBICB$r_um_s ! Reserved ! Big-endian memory access enable ! User performance monitor enable ! Alignment check data memory references ! Lower (F2-F31) Floating-point registers written ! Upper (F32-F127) Floating-point registers written BYTE rv_bits ! COMMENT ADDED BY SDL - rv_bits contains bits rv through FILL_2_ end group LIBICB$r_um_s end variant end group LIBICB$r_um_u BASIC$QUADWORD LIBICB$ih_next_bsp ! Next frame's Backing Store Pointer (Internal use) BASIC$QUADWORD LIBICB$ih_next_pfs ! Next frame's Previous Frame State (Internal use) ! The following two locations are used when walking from an inner ! mode stack to an outer mode and context has been saved in a INTSK structure, ! but the outer mode stacked registers have bee saved on the inner mode RSE backing store. ! BASIC$QUADWORD LIBICB$ih_bspbase ! Base for outer mode stacked registers saved in ! inner mode RSE backing store (Internal use) BASIC$QUADWORD LIBICB$ih_intstk_rnat ! RNAT as saved in INTSTK (Internal use) ! the following "valid" bitmasks are used to record the validity ! of a given register for this context BASIC$OCTAWORD LIBICB$O_GR_VALID ! General Register validity mask LONG LIBICB$L_FR_VALID ! F2 - F31 validity mask (bit 2 for F2) LONG LIBICB$l_fr_valid_fill BASIC$QUADWORD LIBICB$Q_BR_VALID ! Branch Register validity mask group LIBICB$r_ar_valid_u variant case BASIC$QUADWORD LIBICB$Q_AR_VALID ! Application Register validity mask case group LIBICB$r_ar_valid_s ! Register Stack Configuration Register ! Backing store pointer ! Backing store write pointer ! RSE NaT Collection Register ! Compare ? Exchange Value Register ! User NaT Collection Register ! Floating Point Status Register. ! Previous Function State ! Loop Count Register ! Epilogue Count Register ! Copy of AR.CSD ! Copy of AR.SSD WORD RSC_VALID_bits ! COMMENT ADDED BY SDL - RSC_VALID_bits contains bits RSC_VALID through FILL_3_ end group LIBICB$r_ar_valid_s end variant end group LIBICB$r_ar_valid_u group LIBICB$r_other_valid_u variant case BASIC$QUADWORD LIBICB$Q_OTHER_VALID ! PC, CFM validity mask case group LIBICB$r_other_valid_s ! Current PC ! Current Frame Marker ! User Mask field of PSR. BYTE PC_VALID_bits ! COMMENT ADDED BY SDL - PC_VALID_bits contains bits PC_VALID through FILL_4_ end group LIBICB$r_other_valid_s end variant end group LIBICB$r_other_valid_u BASIC$QUADWORD LIBICB$Q_PR_VALID ! Predicate Register validity mask BASIC$QUADWORD LIBICB$IH_ORIGINAL_SPILL_ADDR ! Original address of GR spill area (?LIBICB$IH_IREG[0]) ! (needed for NaT bit podition calculations) BASIC$QUADWORD LIBICB$ih_true_psp ! True Previous SP (for Invo Handle) BASIC$QUADWORD LIBICB$ih_spare_03 BASIC$QUADWORD LIBICB$ih_spare_04 BASIC$QUADWORD LIBICB$ih_spare_05 BASIC$QUADWORD LIBICB$ih_spare_06 BASIC$QUADWORD LIBICB$ih_spare_07 BASIC$QUADWORD LIBICB$ih_spare_08 ! ! ******* End of context_t structure ********************* BASIC$QUADWORD LIBICB$IH_PSP ! SP at entry to routine (Previous SP) BASIC$QUADWORD LIBICB$ih_psp_valid ! PreviousSP valid BASIC$QUADWORD LIBICB$IH_RETURN_PC ! Return PC for SDA. BASIC$QUADWORD LIBICB$IH_PREV_BSP ! BSP of preceding frame for SDA. BASIC$QUADWORD LIBICB$PH_CHFCTX_ADDR ! Pointer to condition handler facility context block BASIC$QUADWORD LIBICB$PH_OTHER ! Pointer to other interesting structure (if any) BASIC$QUADWORD LIBICB$IH_OSSD ! Copy of OSSD from Unwind Information Block BASIC$QUADWORD LIBICB$IH_HANDLER_FV ! Condition Handler Function Value BASIC$QUADWORD LIBICB$PH_LSDA ! Virtual Address of LSD area of UIB BASIC$QUADWORD LIBICB$ph_desc ! Pointer to _Unwind_Descriptor structure (Internal use) BASIC$QUADWORD LIBICB$ph_history ! Pointer to _Unwind_History structure (Internal use) ! ******* Start of User Override ************************* ! ! The following locations can be used to alter the default behavior ! Typically this would be used for cross-process unwinding, and ! specifying an alternative memory allocation scheme. group LIBICB$r_op_flags variant case LONG LIBICB$R_UO_BASE ! base of User Override area case BASIC$QUADWORD LIBICB$Q_UO_FLAGS ! operational flags case group LIBICB$r_uo_flag_bits ! cache unwind information between calls ! for effiecient stack walk. ! Internal use only BYTE UO_FLAG_CACHE_UNWIND_bits ! COMMENT ADDED BY SDL - UO_FLAG_CACHE_UNWIND_bits contains bits & ! UO_FLAG_CACHE_UNWIND through FILL_5_ end group LIBICB$r_uo_flag_bits end variant end group LIBICB$r_op_flags BASIC$QUADWORD LIBICB$IH_UO_IDENT ! user context variable, passed by value ! to the following callback routines. BASIC$QUADWORD LIBICB$PH_UO_READ_MEM ! Pointer to user "read memory" routine BASIC$QUADWORD LIBICB$PH_UO_GETUEINFO ! Pointer to user "get Unwind Entry Information" routine BASIC$QUADWORD LIBICB$PH_UO_GETCONTEXT ! Pointer to user "get Initial Context" routine BASIC$QUADWORD LIBICB$PH_UO_WRITE_MEM ! Pointer to user "put memory" routine BASIC$QUADWORD LIBICB$PH_UO_WRITE_REG ! Pointer to user "put register" routine BASIC$QUADWORD LIBICB$PH_UO_MALLOC ! Pointer to user "malloc" routine BASIC$QUADWORD LIBICB$PH_UO_FREE ! Pointer to user "free" routine BASIC$QUADWORD LIBICB$PH_UO_ACTION_ROUTINE ! Pointer to user "action" routine - actions ! are defined by "action codes" (see below). BASIC$QUADWORD LIBICB$ih_spare_10 ! ******* End of User Override area *************************** ! the following locations are used internally, and should not be ! modified by the user BASIC$QUADWORD LIBICB$ph_most_recent_context ! Most recent user context used group LIBICB$r_int_flags variant case LONG LIBICB$l_internal_flags ! internal operational flags case group LIBICB$r_int_flag_bits BYTE using_client_memread_bits ! COMMENT ADDED BY SDL - using_client_memread_bits contains bits & ! using_client_memread through FILL_6_ end group LIBICB$r_int_flag_bits end variant end group LIBICB$r_int_flags LONG LIBICB$l_interface_state ! enum InterfaceUsageState LONG LIBICB$l_ip_source ! enum IP_SOURCE ! The alert code can be examined to a more detailed failure status LONG LIBICB$L_ALERT_CODE ! enum _UNW_ReturnCode BASIC$QUADWORD LIBICB$ih_spare_11 STRING LIBICB$t_align_2 = 0 ! the operating system. It's size may vary over time. BASIC$QUADWORD LIBICB$IH_SYSTEM_DEFINED ( 1 ) ! ! Action codes are passed as the first parameter to the UO_ACTION_ROUTINE to indicate ! an action to be performed. The remaining parameters to the action routine are action ! dependent, and usually include the ident value as the last parameter. ! ! Action routine prototype: ! ! uint64 return_value = action_routine (enum action_code code, ..., uint64 ident); ! ! A return_value of ACTION_USE_DEFAULT indicates that the action was not performed ! and the calling standard routines should fall back to "default" processing. ! Other return values are action dependent. ! end record INVO_CONTEXT_BLK ! Write Register callback routine - WhichReg enum. ! ! The Write Register callback routine is only used when a live ! register in another (remote) process needs to be written as ! a result of a call to LIB$I64_PUT_INVO_REGISTERS. ! It is permissible to implement a subset of these registers, ! or not implement it at all if you are sure that these registers ! have been saved to memory before PUT_INVO is called ! ! For the General Registers: ! whichReg = LIBICB$K_WhichReg_GR0 + register number ! value_1 = 64-bit register value ! value_2 = 0, or 1 for NaT bit value ! DECLARE LONG CONSTANT LIBICB$K_WhichReg_GR0 = 0 ! ! For the Floating Registers: ! whichReg = LIBICB$K_WhichReg_FR0 + floating register number ! value_1 = 64-bit lower floating fill value ! value_2 = 64-bit upper floating fill value ! DECLARE LONG CONSTANT LIBICB$K_WhichReg_FR0 = 128 ! ! For the Predicate Registers: ! whichReg = LIBICB$K_WhichReg_PR0 + predicate register number ! value_1 = 0, or 1 rgister (bit) value ! value_2 = ignored ! DECLARE LONG CONSTANT LIBICB$K_WhichReg_PR0 = 256 ! ! For the Branch Registers: ! whichReg = LIBICB$K_WhichReg_BR0 + branch register number ! value_1 = 64-bit register value ! value_2 = ignored ! DECLARE LONG CONSTANT LIBICB$K_WhichReg_BR0 = 320 ! ! For the Floating Point Status Register: ! whichReg = LIBICB$K_WhichReg_FPSR ! value_1 = 64-bit register value ! value_2 = ignored ! DECLARE LONG CONSTANT LIBICB$K_WhichReg_FPSR = 328