/**/ /***************************************************************************/ /** **/ /** © Copyright 2010, Hewlett-Packard Development Company, L.P. **/ /** **/ /** Confidential computer software. Valid license from HP and/or **/ /** its subsidiaries required for possession, use, or copying. **/ /** **/ /** Consistent with FAR 12.211 and 12.212, Commercial Computer Software, **/ /** Computer Software Documentation, and Technical Data for Commercial **/ /** Items are licensed to the U.S. Government under vendor's standard **/ /** commercial license. **/ /** **/ /** Neither HP nor any of its subsidiaries shall be liable for technical **/ /** or editorial errors or omissions contained herein. The information **/ /** in this document is provided "as is" without warranty of any kind and **/ /** is subject to change without notice. The warranties for HP products **/ /** are set forth in the express limited warranty statements accompanying **/ /** such products. Nothing herein should be construed as constituting an **/ /** additional warranty. **/ /** **/ /***************************************************************************/ /********************************************************************************************************************************/ /* Created: 30-Mar-2010 17:26:43 by OpenVMS SDL EV3-3 */ /* Source: 07-APR-2004 11:49:17 $1$DGA7274:[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 96 /* Length of CHFCTX */ #define CHFCTX$C_LENGTH 96 /* Length of CHFCTX */ #define CHFCTX$C_LENGTH_V731 80 /* Length of V7.3-1 CHFCTX */ #define CHFCTX$S_CHFCTXDEF 96 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 */ } 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 */