/**/ /***************************************************************************/ /** **/ /** © 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:25:54 by OpenVMS SDL EV3-3 */ /* Source: 27-JAN-2006 09:34:34 $1$DGA7274:[LIB_H.SRC]FREDDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $FREDDEF ***/ #ifndef __FREDDEF_LOADED #define __FREDDEF_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 #define FRED$M_ASTEN 0xF #define FRED$M_ASTSR 0xF0 #define FRED$M_ASTEN_KEN 0x1 #define FRED$M_ASTEN_EEN 0x2 #define FRED$M_ASTEN_SEN 0x4 #define FRED$M_ASTEN_UEN 0x8 #define FRED$M_ASTSR_KPD 0x10 #define FRED$M_ASTSR_EPD 0x20 #define FRED$M_ASTSR_SPD 0x40 #define FRED$M_ASTSR_UPD 0x80 #define FRED$M_FEN 0x1 #define FRED$M_PME 0x4000000000000000 #define FRED$M_DATFX 0x8000000000000000 #define FRED$C_HWPCBLEN 128 /* Length of HWPCB */ #define FRED$K_HWPCBLEN 128 /* Length of HWPCB */ /* */ #define FRED$C_FPR_COUNT 32 /* Count of saved FP registers */ #define FRED$K_FPR_COUNT 32 /* Count of saved FP registers */ #define FRED$M_SW_FEN 0x1 #define FRED$M_BORROWED_QUANTUM 0x2 #define FRED$M_PREEMPT_AVOIDED 0x4 #define FRED$M_AST_PENDING 0x80000000 #define FRED$C_KTB_KT_ID 400 /* integer offset to this field */ #define FRED$C_KTB 400 /* integer offset to this field */ #define FRED$C_KT_ID 408 /* integer offset to this field */ #ifdef __cplusplus /* Define structure prototypes */ struct _ktb; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _fred { /* */ /* Hardware Privileged Context Block (HWPCB) - This structure must be aligned to */ /* a 128 byte boundary. Natural alignment prevents the structure from crossing a */ /* page boundary. */ /* */ /* NOTE WELL: There are bit symbols defined here for accessing the saved ASTEN, */ /* ASTSR, FEN and DATFX/AC values in the HWPCB. These symbols are NOT to be used when */ /* interfacing to the ASTEN, ASTSR, FEN or DATFX/AC internal processor registers directly. */ /* See the specific internal register definitions for bitmasks and constants */ /* to be used when interfacing to the IPRs directly. */ /* */ #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *fred$q_ksp; /* Kernel stack pointer */ #else unsigned __int64 fred$q_ksp; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *fred$q_esp; /* Executive stack pointer */ #else unsigned __int64 fred$q_esp; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *fred$q_ssp; /* Supervisor stack pointer */ #else unsigned __int64 fred$q_ssp; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *fred$q_usp; /* User stack pointer */ #else unsigned __int64 fred$q_usp; #endif /* Verified for IA64 port - KLN */ unsigned __int64 fred$q_ptbr; /* Page Table Base Register */ unsigned __int64 fred$q_asn; /* Address Space Number */ __union { unsigned __int64 fred$q_astsr_asten; /* ASTSR / ASTEN quadword */ __struct { unsigned fred$v_asten : 4; /* AST Enable Register */ unsigned fred$v_astsr : 4; /* AST Pending Summary Register */ } fred$r_ast_bits0; __struct { unsigned fred$v_asten_ken : 1; /* Kernel AST Enable = 1 */ unsigned fred$v_asten_een : 1; /* Executive AST Enable = 1 */ unsigned fred$v_asten_sen : 1; /* Supervisor AST Enable = 1 */ unsigned fred$v_asten_uen : 1; /* User AST Enable = 1 */ unsigned fred$v_astsr_kpd : 1; /* Kernel AST Pending = 1 */ unsigned fred$v_astsr_epd : 1; /* Executive AST Pending = 1 */ unsigned fred$v_astsr_spd : 1; /* Supervisor AST Pending = 1 */ unsigned fred$v_astsr_upd : 1; /* User AST Pending = 1 */ } fred$r_ast_bits1; } fred$r_ast_overlay; __union { unsigned __int64 fred$q_fen_datfx; /* Floating Point Enable */ __struct { unsigned fred$v_fen : 1; /* Floating Point Enable = 1 */ unsigned fred$v_fill_61_1 : 32; unsigned fred$v_fill_61_2 : 29; unsigned fred$v_pme : 1; /* Performance Monitor Enable */ unsigned fred$v_datfx : 1; /* Data Alignment Trap Fixup */ } fred$r_fen_datfx_overlay; } fred$r_fen_overlay; unsigned __int64 fred$q_cc; /* Cycle Counter */ unsigned __int64 fred$q_unq; /* Thread unique value (IA64 R13) */ unsigned int fred$l_cpu_id; /* CPU id */ int fred$l_reserved_1; __int64 fred$q_pal_rsvd [5]; /* Reserved for PAL Scratch */ /* End of Hardware Privileged Context Block (HWPCB). */ /* */ /* */ /* Floating Point Register Save Area. There is space for 32 floating */ /* point registers, F0 through F30, and the FPCR. Note that F31 is a */ /* fixed sink register that doesn't need to be saved. */ /* */ /* I can't find a use for this, and since the number of FP regs means something */ /* different on different machines, I'm only going to leave this for Alpha */ __union { /* F0 and F1 on IPF are constant registers--no save */ __int64 fred$q_fpr [32]; /* Space for 31 floating point registers plus FP control */ __struct { /* F0 and F1 on IPF are constant registers--no save */ unsigned __int64 fred$q_f0; /* Floating Point Register F0 */ unsigned __int64 fred$q_f1; /* F1 */ unsigned __int64 fred$q_f2; /* F2 */ unsigned __int64 fred$q_f3; /* F3 */ unsigned __int64 fred$q_f4; /* F4 */ unsigned __int64 fred$q_f5; /* F5 */ unsigned __int64 fred$q_f6; /* F6 */ unsigned __int64 fred$q_f7; /* F7 */ unsigned __int64 fred$q_f8; /* F8 */ unsigned __int64 fred$q_f9; /* F9 */ unsigned __int64 fred$q_f10; /* F10 */ unsigned __int64 fred$q_f11; /* F11 */ unsigned __int64 fred$q_f12; /* F12 */ unsigned __int64 fred$q_f13; /* F13 */ unsigned __int64 fred$q_f14; /* F14 */ unsigned __int64 fred$q_f15; /* F15 */ unsigned __int64 fred$q_f16; /* F16 */ unsigned __int64 fred$q_f17; /* F17 */ unsigned __int64 fred$q_f18; /* F18 */ unsigned __int64 fred$q_f19; /* F19 */ unsigned __int64 fred$q_f20; /* F20 */ unsigned __int64 fred$q_f21; /* F21 */ unsigned __int64 fred$q_f22; /* F22 */ unsigned __int64 fred$q_f23; /* F23 */ unsigned __int64 fred$q_f24; /* F24 */ unsigned __int64 fred$q_f25; /* F25 */ unsigned __int64 fred$q_f26; /* F26 */ unsigned __int64 fred$q_f27; /* F27 */ unsigned __int64 fred$q_f28; /* F28 */ unsigned __int64 fred$q_f29; /* F29 */ unsigned __int64 fred$q_f30; /* F30 */ unsigned __int64 fred$q_fpcr; /* FPCR */ } fred$r_fpr_nums; } fred$r_fpr_overlay; /* */ /* End of Floating Point Register Save Area. */ /* */ /* */ /* Note: The Alpha architecture defines that the FEN bit in HWPCB cannot */ /* be read, so a separate software FEN bit must be kept. For performance */ /* reasons, we make this bit the low-bit. */ /* */ __union { unsigned int fred$l_flags; /* Flags longword */ __struct { unsigned fred$v_sw_fen : 1; /* Software FEN bit */ unsigned fred$v_borrowed_quantum : 1; /* The next quantum was borrowed */ unsigned fred$v_preempt_avoided : 1; /* Prio raised to avoid preempt */ unsigned fred$v_fill_flags2 : 28; unsigned fred$v_ast_pending : 1; /* AST pending optimization */ } fred$r_flags_bits; } fred$r_flags_overlay; unsigned int fred$l_fill_1; /* Pad to correctly align next */ /* quadword field and overlays */ /* PHD$L_EXTRACPU, so don't */ /* use it for anything. */ unsigned __int64 fred$q_asnseq; /* Current ASN/RID Sequence Number */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _ktb *fred$q_ktb; /* kernel thread block address */ #else unsigned __int64 fred$q_ktb; #endif unsigned __int64 fred$q_kt_id; /* kernel thread id */ char fred$b_reserved [96]; /* unused, pad to 512 bytes */ } FRED; #if !defined(__VAXC) #define fred$q_astsr_asten fred$r_ast_overlay.fred$q_astsr_asten #define fred$v_asten fred$r_ast_overlay.fred$r_ast_bits0.fred$v_asten #define fred$v_astsr fred$r_ast_overlay.fred$r_ast_bits0.fred$v_astsr #define fred$v_asten_ken fred$r_ast_overlay.fred$r_ast_bits1.fred$v_asten_ken #define fred$v_asten_een fred$r_ast_overlay.fred$r_ast_bits1.fred$v_asten_een #define fred$v_asten_sen fred$r_ast_overlay.fred$r_ast_bits1.fred$v_asten_sen #define fred$v_asten_uen fred$r_ast_overlay.fred$r_ast_bits1.fred$v_asten_uen #define fred$v_astsr_kpd fred$r_ast_overlay.fred$r_ast_bits1.fred$v_astsr_kpd #define fred$v_astsr_epd fred$r_ast_overlay.fred$r_ast_bits1.fred$v_astsr_epd #define fred$v_astsr_spd fred$r_ast_overlay.fred$r_ast_bits1.fred$v_astsr_spd #define fred$v_astsr_upd fred$r_ast_overlay.fred$r_ast_bits1.fred$v_astsr_upd #define fred$q_fen_datfx fred$r_fen_overlay.fred$q_fen_datfx #define fred$v_fen fred$r_fen_overlay.fred$r_fen_datfx_overlay.fred$v_fen #define fred$v_pme fred$r_fen_overlay.fred$r_fen_datfx_overlay.fred$v_pme #define fred$v_datfx fred$r_fen_overlay.fred$r_fen_datfx_overlay.fred$v_datfx #define fred$q_fpr fred$r_fpr_overlay.fred$q_fpr #define fred$q_f0 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f0 #define fred$q_f1 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f1 #define fred$q_f2 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f2 #define fred$q_f3 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f3 #define fred$q_f4 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f4 #define fred$q_f5 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f5 #define fred$q_f6 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f6 #define fred$q_f7 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f7 #define fred$q_f8 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f8 #define fred$q_f9 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f9 #define fred$q_f10 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f10 #define fred$q_f11 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f11 #define fred$q_f12 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f12 #define fred$q_f13 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f13 #define fred$q_f14 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f14 #define fred$q_f15 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f15 #define fred$q_f16 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f16 #define fred$q_f17 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f17 #define fred$q_f18 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f18 #define fred$q_f19 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f19 #define fred$q_f20 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f20 #define fred$q_f21 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f21 #define fred$q_f22 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f22 #define fred$q_f23 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f23 #define fred$q_f24 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f24 #define fred$q_f25 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f25 #define fred$q_f26 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f26 #define fred$q_f27 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f27 #define fred$q_f28 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f28 #define fred$q_f29 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f29 #define fred$q_f30 fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_f30 #define fred$q_fpcr fred$r_fpr_overlay.fred$r_fpr_nums.fred$q_fpcr #define fred$l_flags fred$r_flags_overlay.fred$l_flags #define fred$v_sw_fen fred$r_flags_overlay.fred$r_flags_bits.fred$v_sw_fen #define fred$v_borrowed_quantum fred$r_flags_overlay.fred$r_flags_bits.fred$v_borrowed_quantum #define fred$v_preempt_avoided fred$r_flags_overlay.fred$r_flags_bits.fred$v_preempt_avoided #define fred$v_ast_pending fred$r_flags_overlay.fred$r_flags_bits.fred$v_ast_pending #endif /* #if !defined(__VAXC) */ #define FRED$C_LENGTH 512 /* Length of Fred block */ #define FRED$K_LENGTH 512 /* Length of Fred block */ #define FRED$S_FREDDEF 512 /* Old size name - synonym */ #define FRED$K_SHIFT 9 /* Shift value for FRED size */ #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 /* __FREDDEF_LOADED */