struct Desc32

Defined at line 20 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

This represents the 32-bit descriptor format in the GDT or LDT.

Public Members

uint32_t limit_base_lo16
uint32_t flags_base_hi16

Public Methods

typename std::remove_reference_t<decltype(limit_base_lo16)> limit_lo16 ()

Word 0

Defined at line 42 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

arch::Desc32 & set_limit_lo16 (typename std::remove_reference_t<decltype(limit_base_lo16)> val)

Word 0

Defined at line 42 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

typename std::remove_reference_t<decltype(limit_base_lo16)> base_lo16 ()

Defined at line 43 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

arch::Desc32 & set_base_lo16 (typename std::remove_reference_t<decltype(limit_base_lo16)> val)

Defined at line 43 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

typename std::remove_reference_t<decltype(flags_base_hi16)> base_mid8 ()

Word 1

Defined at line 46 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

arch::Desc32 & set_base_mid8 (typename std::remove_reference_t<decltype(flags_base_hi16)> val)

Word 1

Defined at line 46 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

arch::Desc32 & set_type (SegmentType val)

Defined at line 47 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

SegmentType type ()

Defined at line 47 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

typename std::remove_reference_t<decltype(flags_base_hi16)> accessed ()

Defined at line 48 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

arch::Desc32 & set_accessed (typename std::remove_reference_t<decltype(flags_base_hi16)> val)

Defined at line 48 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

arch::Desc32 & set_system (SegmentSystem val)

Defined at line 49 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

SegmentSystem system ()

Defined at line 49 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

typename std::remove_reference_t<decltype(flags_base_hi16)> dpl ()

Defined at line 50 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

arch::Desc32 & set_dpl (typename std::remove_reference_t<decltype(flags_base_hi16)> val)

Defined at line 50 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

typename std::remove_reference_t<decltype(flags_base_hi16)> present ()

Defined at line 51 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

arch::Desc32 & set_present (typename std::remove_reference_t<decltype(flags_base_hi16)> val)

Defined at line 51 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

typename std::remove_reference_t<decltype(flags_base_hi16)> limit_hi4 ()

Defined at line 52 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

arch::Desc32 & set_limit_hi4 (typename std::remove_reference_t<decltype(flags_base_hi16)> val)

Defined at line 52 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

typename std::remove_reference_t<decltype(flags_base_hi16)> avl ()

Defined at line 53 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

arch::Desc32 & set_avl (typename std::remove_reference_t<decltype(flags_base_hi16)> val)

Defined at line 53 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

typename std::remove_reference_t<decltype(flags_base_hi16)> long_mode ()

Defined at line 54 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

arch::Desc32 & set_long_mode (typename std::remove_reference_t<decltype(flags_base_hi16)> val)

Defined at line 54 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

typename std::remove_reference_t<decltype(flags_base_hi16)> addr32 ()

Defined at line 55 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

arch::Desc32 & set_addr32 (typename std::remove_reference_t<decltype(flags_base_hi16)> val)

Defined at line 55 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

typename std::remove_reference_t<decltype(flags_base_hi16)> granularity ()

Defined at line 56 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

arch::Desc32 & set_granularity (typename std::remove_reference_t<decltype(flags_base_hi16)> val)

Defined at line 56 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

typename std::remove_reference_t<decltype(flags_base_hi16)> base_hi8 ()

Defined at line 57 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

arch::Desc32 & set_base_hi8 (typename std::remove_reference_t<decltype(flags_base_hi16)> val)

Defined at line 57 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

uint32_t base ()

Get/set the 32-bit base address, splitting/combining its three fields.

Defined at line 60 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

Desc32 & set_base (uint32_t base)

Defined at line 62 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

uint32_t limit ()

Get/set the 20-bit limit, splitting/combining its two fields.

The interpretation of the 20-bit limit depends on the granularity bit.

See `ScaledLimit` and `SetScaledLimit` for versions that avoid callers

from having to scale manually.

Defined at line 74 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

Desc32 & set_limit (uint32_t value)

Defined at line 75 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

uint32_t ScaledLimit ()

Get/set the 20-bit limit, also attempting to set/use the granuality bit

as appropriate.

A segment's limit is the the size of the memory range starting at the

base address, minus one. The 20-bit limit can then be scaled according

to the granuality bit, which multiplies the value by 12 bits (4096).

Defined at line 87 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

Desc32 & SetScaledLimit (uint32_t value)

Defined at line 88 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

Desc32 & MakeFlat ()

Set fields to make this a 32-bit "flat" code/data segment.

Such segments span the entire 32-bit address space, starting from 0.

Defined at line 102 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

Desc32 & MakeCode64 ()

Set fields to make this a 64-bit code segment.

Defined at line 112 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

Enumerations

enum SegmentSystem
Name Value
SYSTEM 0
NONSYSTEM 1

Defined at line 25 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h

enum SegmentType
Name Value
DATA_RO 0b000
DATA_RW 0b001
DATA_RO_DOWN 0b010
DATA_RW_DOWN 0b011
CODE_XO 0b100
CODE_RX 0b101
CODE_XO_CONFORMING 0b110
CODE_RX_CONFORMING 0b111

Defined at line 30 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h