/***************************************************************************/ /** **/ /** HPE CONFIDENTIAL. This software is confidential proprietary software **/ /** licensed by Hewlett-Packard Enterprise Development, LP, and is not **/ /** authorized to be used, duplicated OR disclosed to anyone without the **/ /** prior written permission of HPE. **/ /** © 2023 Copyright Hewlett-Packard Enterprise Development, LP **/ /** **/ /** VMS SOFTWARE, INC. CONFIDENTIAL. This software is confidential **/ /** proprietary software licensed by VMS Software, Inc., and is not **/ /** authorized to be used, duplicated or disclosed to anyone without **/ /** the prior written permission of VMS Software, Inc. **/ /** © 2023 Copyright VMS Software, Inc. **/ /** **/ /***************************************************************************/ /********************************************************************************************************************************/ /* Created: 9-Nov-2023 12:06:47 by OpenVMS SDL V3.7 */ /* Source: 16-MAY-2017 13:01:50 $1$DGA8345:[LIB_H.SRC]CHFCTXDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $CHFCTXDEF ***/ #ifndef __CHFCTXDEF_LOADED #define __CHFCTXDEF_LOADED 1 #pragma __nostandard /* This file uses non-ANSI-Standard features */ #pragma __member_alignment __save #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __save /* Save the previously-defined required ptr size */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif #ifdef __cplusplus extern "C" { #define __unknown_params ... #define __optional_params ... #else #define __unknown_params #define __optional_params ... #endif #ifndef __struct #if !defined(__VAXC) #define __struct struct #else #define __struct variant_struct #endif #endif #ifndef __union #if !defined(__VAXC) #define __union union #else #define __union variant_union #endif #endif /* */ /* CONDITION HANDLING FACILITY INTERNAL CONTEXT OFFSETS */ /* */ /* This module defines the layout of the Condition Handling Facility */ /* internal context on the stack (in the mode of the exception). */ /* This context is created by the VMS hardware exception handling */ /* facility and the RTL LIB$SIGNAL/LIB$STOP routines. This context */ /* is used by the Condition Handling Facility as well as DEBUG. */ /* */ /* Note that this structure definition only provides offsets for a */ /* small portion of the whole exception context. The whole exception */ /* context contains: */ /* */ /* Internal context area (structure defined here) */ /* ALPHA mechanism array */ /* Signal array (which includes the ALPHA exception record) */ /* Exception frame generated by PAL */ /* */ /* The mechanism array can't be embedded here because it is subject to */ /* change, and there is no easy way to "include" the mechanism array */ /* definition into this module. */ /* */ /* The signal array is variable length, depending on the exception. */ /* */ #define CHFCTX$M_SIGNAL 0x1 #define CHFCTX$M_STOP 0x2 #define CHFCTX$M_FPREGS_VALID 0x4 #define CHFCTX$M_UNWIND_AST 0x8 #define CHFCTX$M_REINVOKABLE 0x10 #define CHFCTX$M_FPREGS_READY 0x20 #define CHFCTX$M_SYS_UNWIND 0x40 #define CHFCTX$M_GOTO_UNWIND 0x80 #define CHFCTX$M_EXIT_UNWIND 0x100 #define CHFCTX$M_RECALL_TARGET 0x200 #define CHFCTX$M_REENABLE_ASTS 0x400 #define CHFCTX$M_CALL_CLRAST 0x800 #define CHFCTX$M_SIG64 0x1000 #define CHFCTX$M_TARGET_IS_REGFRAME 0x2000 #define CHFCTX$M_SET_STACK_TO_BASE 0x4000 #define CHFCTX$M_SOFTWARE_GENERATED 0x8000 #define CHFCTX$M_BADSTACK 0x10000 #define CHFCTX$M_REBUILT 0x20000 #define CHFCTX$K_LENGTH 112 /* Length of CHFCTX */ #define CHFCTX$C_LENGTH 112 /* Length of CHFCTX */ #define CHFCTX$C_LENGTH_V731 80 /* Length of V7.3-1 CHFCTX */ #define CHFCTX$S_CHFCTXDEF 112 typedef struct _chfctx { unsigned __int64 chfctx$q_linkage_ptr; /* Linkage section pointer */ unsigned __int64 chfctx$q_sigarglst; /* Address of Signal array */ unsigned __int64 chfctx$q_mcharglst; /* Address of mechanism array */ unsigned __int64 chfctx$q_expt_addr; /* Address of exception frame */ unsigned __int64 chfctx$q_expt_fp; /* Exception FP */ unsigned __int64 chfctx$q_unwind_sp; /* SP during unwind */ unsigned __int64 chfctx$q_reinvokable_fp; /* End of reinvokable algorithm */ unsigned __int64 chfctx$q_unwind_target; /* Unwind target (FP) */ unsigned __int64 chfctx$q_unwind_target_pc; /* Unwind target PC */ unsigned __int64 chfctx$q_unwind_target_invo; /* Unwind target INVO */ unsigned int chfctx$l_bytecnt; /* Byte count of exception context */ unsigned int chfctx$l_sig_args; /* Original signal array count */ __union { __union { unsigned int chfctx$l_flags; /* Internal flags */ __struct { unsigned chfctx$v_signal : 1; /* Signal flag */ unsigned chfctx$v_stop : 1; /* Stop flag */ unsigned chfctx$v_fpregs_valid : 1; /* Floating Point Registers valid */ unsigned chfctx$v_unwind_ast : 1; /* Unwinding from AST */ unsigned chfctx$v_reinvokable : 1; /* Reinvokable algorithm in progress */ unsigned chfctx$v_fpregs_ready : 1; /* Floating Point Registers ready */ unsigned chfctx$v_sys_unwind : 1; /* Unwind by depth */ unsigned chfctx$v_goto_unwind : 1; /* GOTO unwind in progress */ unsigned chfctx$v_exit_unwind : 1; /* Exit unwind in progress */ unsigned chfctx$v_recall_target : 1; /* Re-call target invocation's handler */ unsigned chfctx$v_reenable_asts : 1; /* ASTs were disabled during unwind */ unsigned chfctx$v_call_clrast : 1; /* Call CLRAST in CHF_RESTORE_REGS */ unsigned chfctx$v_sig64 : 1; /* This is a 64-bit signal */ unsigned chfctx$v_target_is_regframe : 1; /* Target frame of Unwind is register frame */ unsigned chfctx$v_set_stack_to_base : 1; /* Reset inner mode stack to base */ unsigned chfctx$v_software_generated : 1; /* Software Generated exception */ unsigned chfctx$v_badstack : 1; /* Resumed in outer mode at BADSTACK */ unsigned chfctx$v_rebuilt : 1; /* This CHFCTX was converted from pre-V7.3-2 size */ unsigned chfctx$v_fill_2_ : 6; } chfctx$r_fill_1_; } chfctx$r_fill_0_; unsigned int chfctx$l_finalsts; /* Final status */ } chfctx$r_flags_desc; void *chfctx$l_msgptr; /* Address of $EXCMSG error msg */ /* Verified for x86 port - Clair Grant */ unsigned __int64 chfctx$q_unwind_depth; /* IA64 unwind depth */ unsigned __int64 chfctx$q_spare1; /* Structure length must be a multiple of 16 bytes */ } CHFCTX; #if !defined(__VAXC) #define chfctx$l_flags chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$l_flags #define chfctx$v_signal chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_signal #define chfctx$v_stop chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_stop #define chfctx$v_fpregs_valid chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_fpregs_valid #define chfctx$v_unwind_ast chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_unwind_ast #define chfctx$v_reinvokable chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_reinvokable #define chfctx$v_fpregs_ready chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_fpregs_ready #define chfctx$v_sys_unwind chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_sys_unwind #define chfctx$v_goto_unwind chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_goto_unwind #define chfctx$v_exit_unwind chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_exit_unwind #define chfctx$v_recall_target chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_recall_target #define chfctx$v_reenable_asts chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_reenable_asts #define chfctx$v_call_clrast chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_call_clrast #define chfctx$v_sig64 chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_sig64 #define chfctx$v_target_is_regframe chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_target_is_regframe #define chfctx$v_set_stack_to_base chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_set_stack_to_base #define chfctx$v_software_generated chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_software_generated #define chfctx$v_badstack chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_badstack #define chfctx$v_rebuilt chfctx$r_flags_desc.chfctx$r_fill_0_.chfctx$r_fill_1_.chfctx$v_rebuilt #define chfctx$l_finalsts chfctx$r_flags_desc.chfctx$l_finalsts #endif /* #if !defined(__VAXC) */ #pragma __member_alignment __restore #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __CHFCTXDEF_LOADED */