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