struct SystemSegmentDesc64
Defined at line 138 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
A 64-bit system segment.
These descriptors are used in 64-bit mode for system segments, call gates,
interrupt gates, and trap gates.
Code and data segment descriptors continue to use the 32-bit descriptor
Desc32 format above.
When used in the GDT or LDT, these 64-bit descriptors occupy two slots
in the table.
[amd/vol2]: Section 4.8.3. System Descriptors
[intel/vol3]: Figure 7-4. Format of TSS and LDT Descriptors in 64-bit Mode
Public Members
uint32_t[4] raw
Public Methods
typename std::remove_reference_t<decltype(raw[0])> limit_15_0 ()
Word 0
Defined at line 151 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_limit_15_0 (typename std::remove_reference_t<decltype(raw[0])> val)
Word 0
Defined at line 151 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
typename std::remove_reference_t<decltype(raw[0])> base_15_0 ()
Defined at line 152 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_base_15_0 (typename std::remove_reference_t<decltype(raw[0])> val)
Defined at line 152 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
typename std::remove_reference_t<decltype(raw[0])> offset_15_0 ()
INTERRUPT_GATE / TRAP_GATE view of word 0.
Defined at line 155 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_offset_15_0 (typename std::remove_reference_t<decltype(raw[0])> val)
INTERRUPT_GATE / TRAP_GATE view of word 0.
Defined at line 155 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
typename std::remove_reference_t<decltype(raw[0])> selector ()
Defined at line 156 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_selector (typename std::remove_reference_t<decltype(raw[0])> val)
Defined at line 156 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
typename std::remove_reference_t<decltype(raw[1])> base_23_16 ()
Word 1
Defined at line 159 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_base_23_16 (typename std::remove_reference_t<decltype(raw[1])> val)
Word 1
Defined at line 159 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_type (SegmentType val)
Defined at line 160 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
SegmentType type ()
Defined at line 160 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
typename std::remove_reference_t<decltype(raw[1])> dpl ()
Bit 12 of raw[1] set to 0.
Defined at line 162 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_dpl (typename std::remove_reference_t<decltype(raw[1])> val)
Bit 12 of raw[1] set to 0.
Defined at line 162 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
typename std::remove_reference_t<decltype(raw[1])> present ()
Defined at line 163 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_present (typename std::remove_reference_t<decltype(raw[1])> val)
Defined at line 163 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
typename std::remove_reference_t<decltype(raw[1])> limit_19_16 ()
Defined at line 164 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_limit_19_16 (typename std::remove_reference_t<decltype(raw[1])> val)
Defined at line 164 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
typename std::remove_reference_t<decltype(raw[1])> avl ()
Defined at line 165 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_avl (typename std::remove_reference_t<decltype(raw[1])> val)
Defined at line 165 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
typename std::remove_reference_t<decltype(raw[1])> granularity ()
Bits [22:21] of raw[1] are reserved.
Defined at line 167 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_granularity (typename std::remove_reference_t<decltype(raw[1])> val)
Bits [22:21] of raw[1] are reserved.
Defined at line 167 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
typename std::remove_reference_t<decltype(raw[1])> base_31_24 ()
Defined at line 168 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_base_31_24 (typename std::remove_reference_t<decltype(raw[1])> val)
Defined at line 168 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
typename std::remove_reference_t<decltype(raw[1])> offset_31_16 ()
In the INTERRUPT_GATE / TRAP_GATE view, bits [3,7] and 12 are MBZ;
offset and ist replace base, limit, AVL and G.
Defined at line 172 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_offset_31_16 (typename std::remove_reference_t<decltype(raw[1])> val)
In the INTERRUPT_GATE / TRAP_GATE view, bits [3,7] and 12 are MBZ;
offset and ist replace base, limit, AVL and G.
Defined at line 172 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
typename std::remove_reference_t<decltype(raw[1])> ist ()
Defined at line 173 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_ist (typename std::remove_reference_t<decltype(raw[1])> val)
Defined at line 173 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
typename std::remove_reference_t<decltype(raw[2])> base_63_32 ()
Word 2
Defined at line 176 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_base_63_32 (typename std::remove_reference_t<decltype(raw[2])> val)
Word 2
Defined at line 176 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
typename std::remove_reference_t<decltype(raw[2])> offset_63_32 ()
Defined at line 177 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
arch::SystemSegmentDesc64 & set_offset_63_32 (typename std::remove_reference_t<decltype(raw[2])> val)
Defined at line 177 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
uint64_t base ()
Get/set the base address, which is scattered amongst various fields
above.
Defined at line 184 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
SystemSegmentDesc64 & set_base (uint64_t base)
Defined at line 188 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
SystemSegmentDesc64 & set_base (uint64_t base)
Defined at line 188 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
uint64_t limit ()
Get/set the limit, which is scattered amongst the various fields above.
Defined at line 196 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
SystemSegmentDesc64 & set_limit (uint64_t limit)
Defined at line 197 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
SystemSegmentDesc64 & set_limit (uint64_t limit)
Defined at line 197 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
uint64_t offset ()
INTERRUPT_GATE and TRAP_GATE descriptors have selector and offset rather
than base and limit.
Defined at line 203 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
SystemSegmentDesc64 & set_offset (uint64_t offset)
Defined at line 206 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
SystemSegmentDesc64 & set_offset (uint64_t offset)
Defined at line 206 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h
Enumerations
enum SegmentType
| Name | Value |
|---|---|
| LDT | 0b0010 |
| TSS_AVAILABLE | 0b1001 |
| TSS_BUSY | 0b1011 |
| CALL_GATE | 0b1100 |
| INTERRUPT_GATE | 0b1110 |
| TRAP_GATE | 0b1111 |
Defined at line 141 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/descriptor.h