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

Records