/***************************************************************************/ /** **/ /** 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:53 by OpenVMS SDL V3.7 */ /* Source: 15-AUG-2002 16:10:05 $1$DGA8345:[LIB_H.SRC]TLBDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $TLBDEF ***/ #ifndef __TLBDEF_LOADED #define __TLBDEF_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 /* */ /* Definitions for the first TLB insertion register and VHPT short format */ /* */ #define TLB$M_P 0x1 #define TLB$M_MBZ0 0x2 #define TLB$M_MA 0x1C #define TLB$M_A 0x20 #define TLB$M_D 0x40 #define TLB$M_PL 0x180 #define TLB$M_AR 0xE00 #define TLB$M_PPN 0x3FFFFFFFFF000 #define TLB$M_MBZ1 0xC000000000000 #define TLB$M_ED 0x10000000000000 #define TLB$M_IGN0 0xFFE0000000000000 #define TLB$M_ATTR 0x7F #define TLB$M_PROT 0xF80 #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 _tlb { #pragma __nomember_alignment __union { unsigned __int64 tlb$q_vhpt_short; unsigned __int64 tlb$q_pte0; __struct { unsigned tlb$v_p : 1; /* Present bit */ unsigned tlb$v_mbz0 : 1; /* Reserved TLB{1:1} (MBZ) */ unsigned tlb$v_ma : 3; /* Memory Attribute */ unsigned tlb$v_a : 1; /* Accessed bit */ unsigned tlb$v_d : 1; /* Dirty bit */ unsigned tlb$v_pl : 2; /* Privilege level */ unsigned tlb$v_ar : 3; /* Access Rights */ #if defined(__VAXC) unsigned tlb$v_ppn_1 : 32; unsigned tlb$v_ppn_2 : 6; #else unsigned __int64 tlb$v_ppn : 38; /* Physical page number */ #endif unsigned tlb$v_mbz1 : 2; /* Reserved bits TLB{51:50} */ unsigned tlb$v_ed : 1; /* Exception deferral */ unsigned tlb$v_ign0 : 11; /* Ignored bits TLB{63:53} (MBZ) */ } tlb$r_tlbdef_bits; __struct { unsigned tlb$v_attr : 7; /* Attribute bits */ unsigned tlb$v_prot : 5; /* Protection bits */ unsigned tlb$v_fill_0_ : 4; } tlb$r_prot_struct; } tlb$r_tlb_union; } TLB; #if !defined(__VAXC) #define tlb$q_vhpt_short tlb$r_tlb_union.tlb$q_vhpt_short #define tlb$q_pte0 tlb$r_tlb_union.tlb$q_pte0 #define tlb$v_p tlb$r_tlb_union.tlb$r_tlbdef_bits.tlb$v_p #define tlb$v_mbz0 tlb$r_tlb_union.tlb$r_tlbdef_bits.tlb$v_mbz0 #define tlb$v_ma tlb$r_tlb_union.tlb$r_tlbdef_bits.tlb$v_ma #define tlb$v_a tlb$r_tlb_union.tlb$r_tlbdef_bits.tlb$v_a #define tlb$v_d tlb$r_tlb_union.tlb$r_tlbdef_bits.tlb$v_d #define tlb$v_pl tlb$r_tlb_union.tlb$r_tlbdef_bits.tlb$v_pl #define tlb$v_ar tlb$r_tlb_union.tlb$r_tlbdef_bits.tlb$v_ar #define tlb$v_ppn tlb$r_tlb_union.tlb$r_tlbdef_bits.tlb$v_ppn #define tlb$v_mbz1 tlb$r_tlb_union.tlb$r_tlbdef_bits.tlb$v_mbz1 #define tlb$v_ed tlb$r_tlb_union.tlb$r_tlbdef_bits.tlb$v_ed #define tlb$v_attr tlb$r_tlb_union.tlb$r_prot_struct.tlb$v_attr #define tlb$v_prot tlb$r_tlb_union.tlb$r_prot_struct.tlb$v_prot #endif /* #if !defined(__VAXC) */ #ifdef __INITIAL_POINTER_SIZE #pragma __required_pointer_size __save /* Save current pointer size */ #pragma __required_pointer_size __long /* Pointers are 64-bit */ typedef struct _tlb * TLB_PQ; /* Pointer to a TLB structure. */ typedef struct _tlb ** TLB_PPQ; /* Pointer to a pointer to a TLB structure. */ #pragma __required_pointer_size __restore /* Return to previous pointer size */ #else typedef unsigned __int64 TLB_PQ; typedef unsigned __int64 TLB_PPQ; #endif /* __INITIAL_POINTER_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 /* __TLBDEF_LOADED */