/********************************************************************************************************************************/ /* Created: 30-Mar-2010 17:29:52 by OpenVMS SDL EV3-3 */ /* Source: 30-MAR-2010 17:29:22 $1$DGA7274:[STARLET_H.SRC]STARDEFMP.SDI;1 */ /********************************************************************************************************************************/ /*** MODULE $PDSCDEF ***/ #ifndef __PDSCDEF_LOADED #define __PDSCDEF_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 /* */ /* Procedure descriptor offset definitions for the Alpha-32 calling standard. */ /* This definition includes the offsets and fields for stack frame (SF) and */ /* register frame (RF) procedure descriptors. */ /* */ #define PDSC$K_KIND_BOUND 0 /* bound procedure */ #define PDSC$K_KIND_NULL 8 /* null procedure */ #define PDSC$K_KIND_FP_STACK 9 /* SF procedure */ #define PDSC$K_KIND_FP_REGISTER 10 /* RF procedure */ #define PDSC$M_HANDLER_VALID 0x10 #define PDSC$M_HANDLER_REINVOKABLE 0x20 #define PDSC$M_HANDLER_DATA_VALID 0x40 #define PDSC$M_BASE_REG_IS_FP 0x80 #define PDSC$M_REI_RETURN 0x100 #define PDSC$M_STACK_RETURN_VALUE 0x200 #define PDSC$M_BASE_FRAME 0x400 #define PDSC$M_TARGET_INVO 0x800 #define PDSC$M_NATIVE 0x1000 #define PDSC$M_NO_JACKET 0x2000 #define PDSC$M_TIE_FRAME 0x4000 #define PDSC$M_FUNC_RETURN 0xF #define PDSC$M_EXCEPTION_MODE 0x70 #define PDSC$K_EXC_MODE_SIGNAL 0 /* signal */ #define PDSC$K_EXC_MODE_SIGNAL_ALL 1 /* signal all */ #define PDSC$K_EXC_MODE_SIGNAL_SILENT 2 /* signal silent */ #define PDSC$K_EXC_MODE_FULL_IEEE 3 /* signal full ieee */ #define PDSC$K_EXC_MODE_CALLER 4 /* use caller's mode */ #define PDSC$K_NULL_SIZE 16 /* length of NULL descriptor */ #define PDSC$K_BOUND_SIZE 24 /* length of the basic bound precedure descriptor */ #define PDSC$K_MIN_BOUND_SIZE 24 /* minimum size of the basic bound procedure descriptor */ #define PDSC$K_MIN_LENGTH_SF 32 /* length of required portion of SF descriptor */ #define PDSC$K_MIN_STACK_SIZE 32 /* min size of SF descriptor */ #define PDSC$K_MAX_STACK_SIZE 48 /* max size of SF descriptor */ #define PDSC$K_MIN_LENGTH_RF 24 /* length of required portion of RF descriptor */ #define PDSC$K_MIN_REGISTER_SIZE 24 /* min size of RF descriptor */ #define PDSC$K_MAX_REGISTER_SIZE 40 /* max size of RF descriptor */ #define PDSC$K_BOUND_ENVIRONMENT_SIZE 32 /* length of the bound precedure descriptor with environment */ #ifdef __NEW_STARLET typedef struct _pdscdef { __union { unsigned short int pdsc$w_flags; /* flags including procedure kind bitfield */ __struct { unsigned pdsc$v_kind : 4; /* kind of procedure */ unsigned pdsc$v_handler_valid : 1; /* optional STACK_HANDLER or REG_HANDLER is present and valid */ unsigned pdsc$v_handler_reinvokable : 1; /* exception handler is reinvokable */ unsigned pdsc$v_handler_data_valid : 1; /* optional STACK_HANDLER_DATA or REG_HANDLER_DATA is present and valid */ unsigned pdsc$v_base_reg_is_fp : 1; /* FP is also base register (vs. SP) */ unsigned pdsc$v_rei_return : 1; /* exit from procedure via REI */ unsigned pdsc$v_stack_return_value : 1; /* function value returned on stack */ unsigned pdsc$v_base_frame : 1; /* base frame indicator */ unsigned pdsc$v_target_invo : 1; /* unwind target invo handler to be called */ unsigned pdsc$v_native : 1; /* set to 1 for compiled code */ unsigned pdsc$v_no_jacket : 1; /* set to 1 for compiled code */ unsigned pdsc$v_tie_frame : 1; /* must be 0 for compiled code */ unsigned pdsc$v_flags_mbz2 : 1; /* must be zero */ } pdsc$r_fill_53_; } pdsc$r_fill_52_; __union { short int pdsc$w_rsa_offset; /* offset to register save area from base (SF only) */ __struct { unsigned char pdsc$b_save_fp; /* register number for saved FP (RF only) */ unsigned char pdsc$b_save_ra; /* register number for saved return address (RF only) */ } pdsc$r_rsa_offset_reg; } pdsc$r_rsa_offset_overlay; char pdsc$b_entry_ra; /* register in which return address is passed */ __struct { unsigned pdsc$v_func_return : 4; /* register specificatons for function value return */ unsigned pdsc$v_exception_mode : 3; /* the caller's desired exception reporting behavior */ unsigned pdsc$v_more_flags_mbz1 : 1; } pdsc$r_more_flags_struct; short int pdsc$w_signature_offset; /* offset from procedure descriptor to signature */ __union { __int64 pdsc$q_entry; /* address of start of procedure code */ __struct { int pdsc$l_entry; /* first longword is sign extended to quadword */ } pdsc$r_fill_55_; } pdsc$r_fill_54_; __union { /* */ unsigned int pdsc$l_size; /* size of fixed portion of stack */ __union { __int64 pdsc$q_proc_value; /* for bound procedure descriptor, */ __struct { int pdsc$l_proc_value; /* this value is a procedure descriptor. */ int pdsc$l_reserved1; /* reserved */ } pdsc$r_fill_57_; } pdsc$r_fill_56_; } pdsc$r_size_overlay; __union { __struct { /* stack frame specific... */ unsigned int pdsc$l_ireg_mask; /* integer register save mask */ unsigned int pdsc$l_freg_mask; /* floating register save mask */ __int64 pdsc$q_stack_handler; /* absolute pointer to procedure descriptor (opt) */ __int64 pdsc$q_stack_handler_data; /* data for stack handler (opt) */ } pdsc$r_stack_specific; __struct { /* register frame specific... */ __int64 pdsc$q_reg_handler; /* absolute pointer to procedure descriptor (opt) */ __int64 pdsc$q_reg_handler_data; /* data for handler (opt) */ } pdsc$r_register_specific; __union { /* Bound procedure descriptor ENVIRONMENT */ int pdsc$l_environment; __int64 pdsc$q_environment; } pdsc$r_environment_union; } pdsc$r_kind_specific; } PDSCDEF; #if !defined(__VAXC) #define pdsc$w_flags pdsc$r_fill_52_.pdsc$w_flags #define pdsc$v_kind pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_kind #define pdsc$v_handler_valid pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_handler_valid #define pdsc$v_handler_reinvokable pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_handler_reinvokable #define pdsc$v_handler_data_valid pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_handler_data_valid #define pdsc$v_base_reg_is_fp pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_base_reg_is_fp #define pdsc$v_rei_return pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_rei_return #define pdsc$v_stack_return_value pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_stack_return_value #define pdsc$v_base_frame pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_base_frame #define pdsc$v_target_invo pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_target_invo #define pdsc$v_native pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_native #define pdsc$v_no_jacket pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_no_jacket #define pdsc$v_tie_frame pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_tie_frame #define pdsc$w_rsa_offset pdsc$r_rsa_offset_overlay.pdsc$w_rsa_offset #define pdsc$b_save_fp pdsc$r_rsa_offset_overlay.pdsc$r_rsa_offset_reg.pdsc$b_save_fp #define pdsc$b_save_ra pdsc$r_rsa_offset_overlay.pdsc$r_rsa_offset_reg.pdsc$b_save_ra #define pdsc$v_func_return pdsc$r_more_flags_struct.pdsc$v_func_return #define pdsc$v_exception_mode pdsc$r_more_flags_struct.pdsc$v_exception_mode #define pdsc$q_entry pdsc$r_fill_54_.pdsc$q_entry #define pdsc$l_entry pdsc$r_fill_54_.pdsc$r_fill_55_.pdsc$l_entry #define pdsc$l_size pdsc$r_size_overlay.pdsc$l_size #define pdsc$q_proc_value pdsc$r_size_overlay.pdsc$r_fill_56_.pdsc$q_proc_value #define pdsc$l_proc_value pdsc$r_size_overlay.pdsc$r_fill_56_.pdsc$r_fill_57_.pdsc$l_proc_value #define pdsc$l_ireg_mask pdsc$r_kind_specific.pdsc$r_stack_specific.pdsc$l_ireg_mask #define pdsc$l_freg_mask pdsc$r_kind_specific.pdsc$r_stack_specific.pdsc$l_freg_mask #define pdsc$q_stack_handler pdsc$r_kind_specific.pdsc$r_stack_specific.pdsc$q_stack_handler #define pdsc$q_stack_handler_data pdsc$r_kind_specific.pdsc$r_stack_specific.pdsc$q_stack_handler_data #define pdsc$q_reg_handler pdsc$r_kind_specific.pdsc$r_register_specific.pdsc$q_reg_handler #define pdsc$q_reg_handler_data pdsc$r_kind_specific.pdsc$r_register_specific.pdsc$q_reg_handler_data #define pdsc$l_environment pdsc$r_kind_specific.pdsc$r_environment_union.pdsc$l_environment #define pdsc$q_environment pdsc$r_kind_specific.pdsc$r_environment_union.pdsc$q_environment #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ struct pdscdef { __union { unsigned short int pdsc$w_flags; /* flags including procedure kind bitfield */ __struct { unsigned pdsc$v_kind : 4; /* kind of procedure */ unsigned pdsc$v_handler_valid : 1; /* optional STACK_HANDLER or REG_HANDLER is present and valid */ unsigned pdsc$v_handler_reinvokable : 1; /* exception handler is reinvokable */ unsigned pdsc$v_handler_data_valid : 1; /* optional STACK_HANDLER_DATA or REG_HANDLER_DATA is present and valid */ unsigned pdsc$v_base_reg_is_fp : 1; /* FP is also base register (vs. SP) */ unsigned pdsc$v_rei_return : 1; /* exit from procedure via REI */ unsigned pdsc$v_stack_return_value : 1; /* function value returned on stack */ unsigned pdsc$v_base_frame : 1; /* base frame indicator */ unsigned pdsc$v_target_invo : 1; /* unwind target invo handler to be called */ unsigned pdsc$v_native : 1; /* set to 1 for compiled code */ unsigned pdsc$v_no_jacket : 1; /* set to 1 for compiled code */ unsigned pdsc$v_tie_frame : 1; /* must be 0 for compiled code */ unsigned pdsc$v_flags_mbz2 : 1; /* must be zero */ } pdsc$r_fill_53_; } pdsc$r_fill_52_; __union { short int pdsc$w_rsa_offset; /* offset to register save area from base (SF only) */ __struct { unsigned char pdsc$b_save_fp; /* register number for saved FP (RF only) */ unsigned char pdsc$b_save_ra; /* register number for saved return address (RF only) */ } pdsc$r_rsa_offset_reg; } pdsc$r_rsa_offset_overlay; char pdsc$b_entry_ra; /* register in which return address is passed */ __struct { unsigned pdsc$v_func_return : 4; /* register specificatons for function value return */ unsigned pdsc$v_exception_mode : 3; /* the caller's desired exception reporting behavior */ unsigned pdsc$v_more_flags_mbz1 : 1; } pdsc$r_more_flags_struct; short int pdsc$w_signature_offset; /* offset from procedure descriptor to signature */ __union { int pdsc$q_entry [2]; /* address of start of procedure code */ __struct { int pdsc$l_entry; /* first longword is sign extended to quadword */ } pdsc$r_fill_55_; } pdsc$r_fill_54_; __union { /* */ unsigned int pdsc$l_size; /* size of fixed portion of stack */ __union { int pdsc$q_proc_value [2]; /* for bound procedure descriptor, */ __struct { int pdsc$l_proc_value; /* this value is a procedure descriptor. */ int pdsc$l_reserved1; /* reserved */ } pdsc$r_fill_57_; } pdsc$r_fill_56_; } pdsc$r_size_overlay; __union { __struct { /* stack frame specific... */ unsigned int pdsc$l_ireg_mask; /* integer register save mask */ unsigned int pdsc$l_freg_mask; /* floating register save mask */ int pdsc$q_stack_handler [2]; /* absolute pointer to procedure descriptor (opt) */ int pdsc$q_stack_handler_data [2]; /* data for stack handler (opt) */ } pdsc$r_stack_specific; __struct { /* register frame specific... */ int pdsc$q_reg_handler [2]; /* absolute pointer to procedure descriptor (opt) */ int pdsc$q_reg_handler_data [2]; /* data for handler (opt) */ } pdsc$r_register_specific; __union { /* Bound procedure descriptor ENVIRONMENT */ int pdsc$l_environment; int pdsc$q_environment [2]; } pdsc$r_environment_union; } pdsc$r_kind_specific; } ; #if !defined(__VAXC) #define pdsc$w_flags pdsc$r_fill_52_.pdsc$w_flags #define pdsc$v_kind pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_kind #define pdsc$v_handler_valid pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_handler_valid #define pdsc$v_handler_reinvokable pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_handler_reinvokable #define pdsc$v_handler_data_valid pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_handler_data_valid #define pdsc$v_base_reg_is_fp pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_base_reg_is_fp #define pdsc$v_rei_return pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_rei_return #define pdsc$v_stack_return_value pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_stack_return_value #define pdsc$v_base_frame pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_base_frame #define pdsc$v_target_invo pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_target_invo #define pdsc$v_native pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_native #define pdsc$v_no_jacket pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_no_jacket #define pdsc$v_tie_frame pdsc$r_fill_52_.pdsc$r_fill_53_.pdsc$v_tie_frame #define pdsc$w_rsa_offset pdsc$r_rsa_offset_overlay.pdsc$w_rsa_offset #define pdsc$b_save_fp pdsc$r_rsa_offset_overlay.pdsc$r_rsa_offset_reg.pdsc$b_save_fp #define pdsc$b_save_ra pdsc$r_rsa_offset_overlay.pdsc$r_rsa_offset_reg.pdsc$b_save_ra #define pdsc$v_func_return pdsc$r_more_flags_struct.pdsc$v_func_return #define pdsc$v_exception_mode pdsc$r_more_flags_struct.pdsc$v_exception_mode #define pdsc$q_entry pdsc$r_fill_54_.pdsc$q_entry #define pdsc$l_entry pdsc$r_fill_54_.pdsc$r_fill_55_.pdsc$l_entry #define pdsc$l_size pdsc$r_size_overlay.pdsc$l_size #define pdsc$q_proc_value pdsc$r_size_overlay.pdsc$r_fill_56_.pdsc$q_proc_value #define pdsc$l_proc_value pdsc$r_size_overlay.pdsc$r_fill_56_.pdsc$r_fill_57_.pdsc$l_proc_value #define pdsc$l_ireg_mask pdsc$r_kind_specific.pdsc$r_stack_specific.pdsc$l_ireg_mask #define pdsc$l_freg_mask pdsc$r_kind_specific.pdsc$r_stack_specific.pdsc$l_freg_mask #define pdsc$q_stack_handler pdsc$r_kind_specific.pdsc$r_stack_specific.pdsc$q_stack_handler #define pdsc$q_stack_handler_data pdsc$r_kind_specific.pdsc$r_stack_specific.pdsc$q_stack_handler_data #define pdsc$q_reg_handler pdsc$r_kind_specific.pdsc$r_register_specific.pdsc$q_reg_handler #define pdsc$q_reg_handler_data pdsc$r_kind_specific.pdsc$r_register_specific.pdsc$q_reg_handler_data #define pdsc$l_environment pdsc$r_kind_specific.pdsc$r_environment_union.pdsc$l_environment #define pdsc$q_environment pdsc$r_kind_specific.pdsc$r_environment_union.pdsc$q_environment #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ #define PDSC$K_LKP_LENGTH 16 /* Linkage pair size */ #ifdef __NEW_STARLET typedef struct _pdsc_lkpdef { /* Linkage pair def */ __union { __int64 pdsc$q_lkp_entry; /* Entry point addr */ __struct { void *pdsc$ps_lkp_entry; } pdsc$r_fill_59_; } pdsc$r_fill_58_; __union { __int64 pdsc$q_lkp_proc_value; /* Proc desc addr */ __struct { void *pdsc$ps_lkp_proc_value; } pdsc$r_fill_61_; } pdsc$r_fill_60_; } PDSC_LKPDEF; #if !defined(__VAXC) #define pdsc$q_lkp_entry pdsc$r_fill_58_.pdsc$q_lkp_entry #define pdsc$ps_lkp_entry pdsc$r_fill_58_.pdsc$r_fill_59_.pdsc$ps_lkp_entry #define pdsc$q_lkp_proc_value pdsc$r_fill_60_.pdsc$q_lkp_proc_value #define pdsc$ps_lkp_proc_value pdsc$r_fill_60_.pdsc$r_fill_61_.pdsc$ps_lkp_proc_value #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ struct pdsc_lkpdef { /* Linkage pair def */ __union { int pdsc$q_lkp_entry [2]; /* Entry point addr */ __struct { int pdsc$ps_lkp_entry; } pdsc$r_fill_59_; } pdsc$r_fill_58_; __union { int pdsc$q_lkp_proc_value [2]; /* Proc desc addr */ __struct { int pdsc$ps_lkp_proc_value; } pdsc$r_fill_61_; } pdsc$r_fill_60_; } ; #if !defined(__VAXC) #define pdsc$q_lkp_entry pdsc$r_fill_58_.pdsc$q_lkp_entry #define pdsc$ps_lkp_entry pdsc$r_fill_58_.pdsc$r_fill_59_.pdsc$ps_lkp_entry #define pdsc$q_lkp_proc_value pdsc$r_fill_60_.pdsc$q_lkp_proc_value #define pdsc$ps_lkp_proc_value pdsc$r_fill_60_.pdsc$r_fill_61_.pdsc$ps_lkp_proc_value #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ #define LKP$K_SIZE 16 /* Linkage pair size */ #ifdef __NEW_STARLET typedef struct _lkpdef { /* Linkage pair def */ __union { /* Entry point addr */ __int64 lkp$q_entry; void *lkp$ps_entry; } lkp$r_entry_union; __union { /* Proc desc addr */ __int64 lkp$q_proc_value; void *lkp$ps_proc_value; } lkp$r_proc_value_union; } LKPDEF; #if !defined(__VAXC) #define lkp$q_entry lkp$r_entry_union.lkp$q_entry #define lkp$ps_entry lkp$r_entry_union.lkp$ps_entry #define lkp$q_proc_value lkp$r_proc_value_union.lkp$q_proc_value #define lkp$ps_proc_value lkp$r_proc_value_union.lkp$ps_proc_value #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ struct lkpdef { /* Linkage pair def */ __union { /* Entry point addr */ int lkp$q_entry [2]; int lkp$ps_entry; } lkp$r_entry_union; __union { /* Proc desc addr */ int lkp$q_proc_value [2]; int lkp$ps_proc_value; } lkp$r_proc_value_union; } ; #if !defined(__VAXC) #define lkp$q_entry lkp$r_entry_union.lkp$q_entry #define lkp$ps_entry lkp$r_entry_union.lkp$ps_entry #define lkp$q_proc_value lkp$r_proc_value_union.lkp$q_proc_value #define lkp$ps_proc_value lkp$r_proc_value_union.lkp$ps_proc_value #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ #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 /* __PDSCDEF_LOADED */