template <X86PagingLevel Level>
class TableEntry
Defined at line 146 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
[intel/vol3]: Figure 4-11. Formats of CR3 and Paging-Structure Entries with 4-Level Paging and
5-Level Paging
[amd/vol2]: 5.3 Long-Mode Page Translation
Represents a general x86 page table entry.
Many of the operations below are dependent on whether the entry is terminal:
if a constructed entry is intended to be terminal that should be set first.
Public Members
field_xd_152
field_RsvdZ_157
field_avl_162
field_g_163
field_d_168
field_a_169
field_pcd_170
field_pwt_171
field_u_s_172
field_r_w_173
field_p_174
Public Methods
template <, >
SelfType & set_xd (typename SelfType::ValueType val)
Defined at line 152 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
typename SelfType::ValueType xd ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 152 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
typename SelfType::ValueType avl ()
Bits [51:12] conditionally represent the base address and PAT fields; they
are handled manually below.
Defined at line 162 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
SelfType & set_avl (typename SelfType::ValueType val)
Bits [51:12] conditionally represent the base address and PAT fields; they
are handled manually below.
Defined at line 162 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
typename SelfType::ValueType g ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 163 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
SelfType & set_g (typename SelfType::ValueType val)
Defined at line 163 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
typename SelfType::ValueType d ()
Bit 7 conditionally represents the PAT and PS fields; they are handled
manually below.
Defined at line 168 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
SelfType & set_d (typename SelfType::ValueType val)
Bit 7 conditionally represents the PAT and PS fields; they are handled
manually below.
Defined at line 168 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
typename SelfType::ValueType a ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 169 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
SelfType & set_a (typename SelfType::ValueType val)
Defined at line 169 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
typename SelfType::ValueType pcd ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 170 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
SelfType & set_pcd (typename SelfType::ValueType val)
Defined at line 170 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
typename SelfType::ValueType pwt ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 171 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
SelfType & set_pwt (typename SelfType::ValueType val)
Defined at line 171 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
SelfType & set_u_s (typename SelfType::ValueType val)
Defined at line 172 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
typename SelfType::ValueType u_s ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 172 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
typename SelfType::ValueType r_w ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 173 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
SelfType & set_r_w (typename SelfType::ValueType val)
Defined at line 173 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
typename SelfType::ValueType p ()
NOLINTEND(misc-non-private-member-variables-in-classes)
Defined at line 174 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
template <, >
SelfType & set_p (typename SelfType::ValueType val)
Defined at line 174 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
std::optional<bool> ps ()
"Page Size", available only for the PDPTE and PDE levels, indicates a
terminal entry.
Defined at line 178 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
std::optional<bool> pat ()
"Page Attribute Table", available only on terminal levels, indirectly
indicates the memory type used to reference the associated page.
Defined at line 188 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
SelfType & set_pat (bool pat)
Sets the PAT bit, which is only valid on terminal levels.
Defined at line 200 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
std::optional<unsigned int> pke ()
"Protection KEy", available on terminal levels, may be used to control
access rights (when supported). (Also known as MPK - Memory Protection Key
- on AMD.)
Defined at line 212 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
SelfType & set_pke (unsigned int pke)
Sets the PKE, which is only valid for a terminal entry.
Defined at line 220 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
bool present ()
This implements the PagingTraits::TableEntry API defined in
<lib
/arch/paging.h>.
Defined at line 230 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
uint64_t address ()
Defined at line 232 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
bool terminal ()
Defined at line 240 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
bool readable ()
Defined at line 250 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
bool writable ()
Defined at line 251 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
bool executable ()
Defined at line 252 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
bool user_accessible ()
Defined at line 253 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
MemoryType Memory (const SystemState & state)
Defined at line 255 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
bool accessed ()
Defined at line 257 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
bool global ()
Defined at line 259 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
SelfType & Set (const SystemState & state, const PagingSettings & settings)
Defined at line 261 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h