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