/********************************************************************************************************************************/ /* Created: 9-Nov-2023 12:07:14 by OpenVMS SDL V3.7 */ /* Source: 09-NOV-2023 12:07:10 $1$DGA8345:[STARLET_H.SRC]STARDEFMP.SDI;1 */ /********************************************************************************************************************************/ /*** MODULE $OSSDDEF ***/ #ifndef __OSSDDEF_LOADED #define __OSSDDEF_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 /* */ /* Operating System Specific Data area offset definitions for the IA64 */ /* VMS calling standard. */ /* */ /* */ /* Spill Data triple */ /* */ #define OSSD$M_REG 0x1F #define OSSD$M_MBZ_5_7 0xE0 #define OSSD$M_TREG 0x7F00 #define OSSD$M_MBZ_15 0x8000 #ifdef __NEW_STARLET typedef struct _ossd_spill_data { __union { __struct { unsigned ossd$v_reg : 5; /* Static general register being saved */ unsigned ossd$v_mbz_5_7 : 3; /* MBZ */ unsigned ossd$v_treg : 7; /* Target register for save or zero for restore */ unsigned ossd$v_mbz_15 : 1; /* MBZ */ } ossd$r_spill_struct_1; __struct { unsigned char ossd$b_reg_byte; /* Byte containing 5-bit REG field */ unsigned char ossd$b_treg_byte; /* Byte containing 7-bit TREG field */ } ossd$r_spill_struct_2; } ossd$r_spill_overlay; unsigned char ossd$t_t [1]; /* ULEB128 slot offset to save/restore instruction */ } OSSD_SPILL_DATA; #if !defined(__VAXC) #define ossd$v_reg ossd$r_spill_overlay.ossd$r_spill_struct_1.ossd$v_reg #define ossd$v_mbz_5_7 ossd$r_spill_overlay.ossd$r_spill_struct_1.ossd$v_mbz_5_7 #define ossd$v_treg ossd$r_spill_overlay.ossd$r_spill_struct_1.ossd$v_treg #define ossd$v_mbz_15 ossd$r_spill_overlay.ossd$r_spill_struct_1.ossd$v_mbz_15 #define ossd$b_reg_byte ossd$r_spill_overlay.ossd$r_spill_struct_2.ossd$b_reg_byte #define ossd$b_treg_byte ossd$r_spill_overlay.ossd$r_spill_struct_2.ossd$b_treg_byte #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ typedef struct _ossd_spill_data { __union { __struct { unsigned ossd$v_reg : 5; /* Static general register being saved */ unsigned ossd$v_mbz_5_7 : 3; /* MBZ */ unsigned ossd$v_treg : 7; /* Target register for save or zero for restore */ unsigned ossd$v_mbz_15 : 1; /* MBZ */ } ossd$r_spill_struct_1; __struct { unsigned char ossd$b_reg_byte; /* Byte containing 5-bit REG field */ unsigned char ossd$b_treg_byte; /* Byte containing 7-bit TREG field */ } ossd$r_spill_struct_2; } ossd$r_spill_overlay; unsigned char ossd$t_t [1]; /* ULEB128 slot offset to save/restore instruction */ } ossd_spill_data; #if !defined(__VAXC) #define ossd$v_reg ossd$r_spill_overlay.ossd$r_spill_struct_1.ossd$v_reg #define ossd$v_mbz_5_7 ossd$r_spill_overlay.ossd$r_spill_struct_1.ossd$v_mbz_5_7 #define ossd$v_treg ossd$r_spill_overlay.ossd$r_spill_struct_1.ossd$v_treg #define ossd$v_mbz_15 ossd$r_spill_overlay.ossd$r_spill_struct_1.ossd$v_mbz_15 #define ossd$b_reg_byte ossd$r_spill_overlay.ossd$r_spill_struct_2.ossd$b_reg_byte #define ossd$b_treg_byte ossd$r_spill_overlay.ossd$r_spill_struct_2.ossd$b_treg_byte #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ /* */ /* OSSD layout for general and caller spill register information segments */ /* */ #define OSSD$M_TYPE 0x7FFF #define OSSD$K_GENERAL_INFO 1 /* General info (always one quadword) */ #define OSSD$K_CALL_SPILL_INFO 2 /* Caller spill info (variable length) */ #define OSSD$K_CONTEXT_INFO 3 /* Context info (always one quadword) */ #define OSSD$M_S 0x8000 #define OSSD$M_EXCEPTION_MODE 0x70000 #define OSSD$K_EXC_MODE_SIGNAL 0 /* Signal */ #define OSSD$K_EXC_MODE_SIGNAL_ALL 1 /* Signal all */ #define OSSD$K_EXC_MODE_SIGNAL_SILENT 2 /* Signal silent */ #define OSSD$K_EXC_MODE_FULL_IEEE 3 /* Signal full IEEE */ #define OSSD$K_EXC_MODE_CALLER 4 /* Use caller's mode */ #define OSSD$M_TARGET_INVO 0x80000 #define OSSD$M_BASE_FRAME 0x100000 #define OSSD$M_HANDLER_REINVOKABLE 0x200000 #define OSSD$M_AST_FRAME 0x400000 #define OSSD$M_EXCEPTION_FRAME 0x800000 #define OSSD$M_TIE_FRAME 0x1000000 #define OSSD$M_BOTTOM_OF_STACK 0x2000000 #define OSSD$M_HANDLER_DATA_VALID 0x4000000 #define OSSD$M_SS_DISPATCH_FRAME 0x8000000 #define OSSD$M_KP_START_FRAME 0x10000000 #define OSSD$M_FRAMELESS_HELPER 0x20000000 #define OSSD$M_MBZ_30_63 0xFFFFFFFFC0000000 #define OSSD$K_GENERAL_INFO_LENGTH 8 /* Size of general data segment */ #define OSSD$M_CONTEXT_TYPE 0xFF0000 #define OSSD$K_CTX_TYPED 0 /* A VMS typed data structure */ #define OSSD$K_CTX_CHFCTX 1 /* A CHFCTX block */ #define OSSD$M_CONTEXT_GR 0xFF000000 #define OSSD$M_CONTEXT_OFFSET 0xFFFFFF00000000 #define OSSD$M_CONTEXT_HINT 0xFF00000000000000 #define OSSD$K_HINT_EXCEPTION 1 /* Exception dispatcher */ #define OSSD$K_HINT_SS 2 /* System Service dispatcher */ #define OSSD$K_HINT_AST 3 /* AST dispatcher */ #define OSSD$K_HINT_KP_START 4 /* KP_START frame */ #define OSSD$K_CONTEXT_INFO_LENGTH 8 /* Size of context info segment */ #ifdef __NEW_STARLET typedef struct _ossddef { __union { unsigned __int64 ossd$q_general_info_segment; /* Entire general info segment */ __struct { unsigned ossd$v_type : 15; /* OSSD segment type */ unsigned ossd$v_s : 1; /* Continuation marker */ unsigned ossd$v_exception_mode : 3; /* Desired exception-reporting behavior */ unsigned ossd$v_target_invo : 1; /* Invoke handler when unwind target */ unsigned ossd$v_base_frame : 1; /* Logical base frame of stack */ unsigned ossd$v_handler_reinvokable : 1; /* Handler may be invoked when already active */ unsigned ossd$v_ast_frame : 1; /* AST dispatch frame */ unsigned ossd$v_exception_frame : 1; /* Exception dispatch frame */ unsigned ossd$v_tie_frame : 1; /* Frame created by Translated Image Executive */ unsigned ossd$v_bottom_of_stack : 1; /* End of call stack (no predecessors) */ unsigned ossd$v_handler_data_valid : 1; /* Exception handler data field exists in unwind info */ unsigned ossd$v_ss_dispatch_frame : 1; /* System Service dispatch frame */ unsigned ossd$v_kp_start_frame : 1; /* Used to tag EXE$KP_START */ unsigned ossd$v_frameless_helper : 1; /* Tags code executing in context of another routine whose IP is in B0 */ #if defined(__VAXC) unsigned ossd$v_mbz_30_63_1 : 32; unsigned ossd$v_mbz_30_63_2 : 2; #else unsigned __int64 ossd$v_mbz_30_63 : 34; /* MBZ */ #endif } ossd$r_general_struct; __struct { short int ossd$w_fill_3; /* Overlays segment type and continuation marker */ unsigned short int ossd$w_length; /* # quadwords in this segment */ OSSD_SPILL_DATA ossd$t_spill_data; /* Start of first spill data triple */ } ossd$r_spill_struct_3; unsigned __int64 ossd$q_context_info_segment; /* Entire context info segment */ __struct { short int ossd$w_fill_4; /* Overlays segment type and continuation marker */ unsigned ossd$v_context_type : 8; /* Type of context block described */ unsigned ossd$v_context_gr : 8; /* GR containing pointer to context block */ signed ossd$v_context_offset : 24; /* Offset (in octawords) from SP, or GR */ unsigned ossd$v_context_hint : 8; /* Hint as to purpose of context block */ /* Hints: (0 = no hint) */ } ossd$r_context_info_struct; } ossd$r_data_overlay; } OSSDDEF; #if !defined(__VAXC) #define ossd$q_general_info_segment ossd$r_data_overlay.ossd$q_general_info_segment #define ossd$v_type ossd$r_data_overlay.ossd$r_general_struct.ossd$v_type #define ossd$v_s ossd$r_data_overlay.ossd$r_general_struct.ossd$v_s #define ossd$v_exception_mode ossd$r_data_overlay.ossd$r_general_struct.ossd$v_exception_mode #define ossd$v_target_invo ossd$r_data_overlay.ossd$r_general_struct.ossd$v_target_invo #define ossd$v_base_frame ossd$r_data_overlay.ossd$r_general_struct.ossd$v_base_frame #define ossd$v_handler_reinvokable ossd$r_data_overlay.ossd$r_general_struct.ossd$v_handler_reinvokable #define ossd$v_ast_frame ossd$r_data_overlay.ossd$r_general_struct.ossd$v_ast_frame #define ossd$v_exception_frame ossd$r_data_overlay.ossd$r_general_struct.ossd$v_exception_frame #define ossd$v_tie_frame ossd$r_data_overlay.ossd$r_general_struct.ossd$v_tie_frame #define ossd$v_bottom_of_stack ossd$r_data_overlay.ossd$r_general_struct.ossd$v_bottom_of_stack #define ossd$v_handler_data_valid ossd$r_data_overlay.ossd$r_general_struct.ossd$v_handler_data_valid #define ossd$v_ss_dispatch_frame ossd$r_data_overlay.ossd$r_general_struct.ossd$v_ss_dispatch_frame #define ossd$v_kp_start_frame ossd$r_data_overlay.ossd$r_general_struct.ossd$v_kp_start_frame #define ossd$v_frameless_helper ossd$r_data_overlay.ossd$r_general_struct.ossd$v_frameless_helper #define ossd$v_mbz_30_63 ossd$r_data_overlay.ossd$r_general_struct.ossd$v_mbz_30_63 #define ossd$w_length ossd$r_data_overlay.ossd$r_spill_struct_3.ossd$w_length #define ossd$t_spill_data ossd$r_data_overlay.ossd$r_spill_struct_3.ossd$t_spill_data #define ossd$q_context_info_segment ossd$r_data_overlay.ossd$q_context_info_segment #define ossd$v_context_type ossd$r_data_overlay.ossd$r_context_info_struct.ossd$v_context_type #define ossd$v_context_gr ossd$r_data_overlay.ossd$r_context_info_struct.ossd$v_context_gr #define ossd$v_context_offset ossd$r_data_overlay.ossd$r_context_info_struct.ossd$v_context_offset #define ossd$v_context_hint ossd$r_data_overlay.ossd$r_context_info_struct.ossd$v_context_hint #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ typedef struct _ossddef { __union { unsigned int ossd$q_general_info_segment [2]; /* Entire general info segment */ __struct { unsigned ossd$v_type : 15; /* OSSD segment type */ unsigned ossd$v_s : 1; /* Continuation marker */ unsigned ossd$v_exception_mode : 3; /* Desired exception-reporting behavior */ unsigned ossd$v_target_invo : 1; /* Invoke handler when unwind target */ unsigned ossd$v_base_frame : 1; /* Logical base frame of stack */ unsigned ossd$v_handler_reinvokable : 1; /* Handler may be invoked when already active */ unsigned ossd$v_ast_frame : 1; /* AST dispatch frame */ unsigned ossd$v_exception_frame : 1; /* Exception dispatch frame */ unsigned ossd$v_tie_frame : 1; /* Frame created by Translated Image Executive */ unsigned ossd$v_bottom_of_stack : 1; /* End of call stack (no predecessors) */ unsigned ossd$v_handler_data_valid : 1; /* Exception handler data field exists in unwind info */ unsigned ossd$v_ss_dispatch_frame : 1; /* System Service dispatch frame */ unsigned ossd$v_kp_start_frame : 1; /* Used to tag EXE$KP_START */ unsigned ossd$v_frameless_helper : 1; /* Tags code executing in context of another routine whose IP is in B0 */ #if defined(__VAXC) unsigned ossd$v_mbz_30_63_1 : 32; unsigned ossd$v_mbz_30_63_2 : 2; #else unsigned __int64 ossd$v_mbz_30_63 : 34; /* MBZ */ #endif } ossd$r_general_struct; __struct { short int ossd$w_fill_3; /* Overlays segment type and continuation marker */ unsigned short int ossd$w_length; /* # quadwords in this segment */ ossd_spill_data ossd$t_spill_data; /* Start of first spill data triple */ } ossd$r_spill_struct_3; unsigned int ossd$q_context_info_segment [2]; /* Entire context info segment */ __struct { short int ossd$w_fill_4; /* Overlays segment type and continuation marker */ unsigned ossd$v_context_type : 8; /* Type of context block described */ unsigned ossd$v_context_gr : 8; /* GR containing pointer to context block */ signed ossd$v_context_offset : 24; /* Offset (in octawords) from SP, or GR */ unsigned ossd$v_context_hint : 8; /* Hint as to purpose of context block */ /* Hints: (0 = no hint) */ } ossd$r_context_info_struct; } ossd$r_data_overlay; } ossddef; #if !defined(__VAXC) #define ossd$q_general_info_segment ossd$r_data_overlay.ossd$q_general_info_segment #define ossd$v_type ossd$r_data_overlay.ossd$r_general_struct.ossd$v_type #define ossd$v_s ossd$r_data_overlay.ossd$r_general_struct.ossd$v_s #define ossd$v_exception_mode ossd$r_data_overlay.ossd$r_general_struct.ossd$v_exception_mode #define ossd$v_target_invo ossd$r_data_overlay.ossd$r_general_struct.ossd$v_target_invo #define ossd$v_base_frame ossd$r_data_overlay.ossd$r_general_struct.ossd$v_base_frame #define ossd$v_handler_reinvokable ossd$r_data_overlay.ossd$r_general_struct.ossd$v_handler_reinvokable #define ossd$v_ast_frame ossd$r_data_overlay.ossd$r_general_struct.ossd$v_ast_frame #define ossd$v_exception_frame ossd$r_data_overlay.ossd$r_general_struct.ossd$v_exception_frame #define ossd$v_tie_frame ossd$r_data_overlay.ossd$r_general_struct.ossd$v_tie_frame #define ossd$v_bottom_of_stack ossd$r_data_overlay.ossd$r_general_struct.ossd$v_bottom_of_stack #define ossd$v_handler_data_valid ossd$r_data_overlay.ossd$r_general_struct.ossd$v_handler_data_valid #define ossd$v_ss_dispatch_frame ossd$r_data_overlay.ossd$r_general_struct.ossd$v_ss_dispatch_frame #define ossd$v_kp_start_frame ossd$r_data_overlay.ossd$r_general_struct.ossd$v_kp_start_frame #define ossd$v_frameless_helper ossd$r_data_overlay.ossd$r_general_struct.ossd$v_frameless_helper #define ossd$v_mbz_30_63 ossd$r_data_overlay.ossd$r_general_struct.ossd$v_mbz_30_63 #define ossd$w_length ossd$r_data_overlay.ossd$r_spill_struct_3.ossd$w_length #define ossd$t_spill_data ossd$r_data_overlay.ossd$r_spill_struct_3.ossd$t_spill_data #define ossd$q_context_info_segment ossd$r_data_overlay.ossd$q_context_info_segment #define ossd$v_context_type ossd$r_data_overlay.ossd$r_context_info_struct.ossd$v_context_type #define ossd$v_context_gr ossd$r_data_overlay.ossd$r_context_info_struct.ossd$v_context_gr #define ossd$v_context_offset ossd$r_data_overlay.ossd$r_context_info_struct.ossd$v_context_offset #define ossd$v_context_hint ossd$r_data_overlay.ossd$r_context_info_struct.ossd$v_context_hint #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ /* The following macro can be used in IAS code to create a context info OSSD */ /* segment. Cut and paste to your IAS module */ /* */ /*#define __CONTEXT_OSSD(type,gr,offset,hint) \ */ /* .vms_ossd ((hint) << OSSD$V_CONTEXT_HINT) | \ */ /* (((offset) & 0xFFFFFF) << OSSD$V_CONTEXT_OFFSET) | \ */ /* ((gr) << OSSD$V_CONTEXT_GR) | \ */ /* ((type) << OSSD$V_CONTEXT_TYPE) | OSSD$K_CONTEXT_INFO */ /* */ #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 /* __OSSDDEF_LOADED */