NOVA
Stripped down NOVA kernel for the OSY course
Loading...
Searching...
No Matches
Gdt Class Reference

Static Public Member Functions

static void build ()
static ALWAYS_INLINE void load ()
static ALWAYS_INLINE void unbusy_tss ()

Static Public Attributes

static Gdt gdt [SEL_MAX > > 3]

Additional Inherited Members

Protected Types inherited from Descriptor
enum  Granularity { BYTES = 0u << 23 , PAGES = 1u << 23 }
enum  Size { BIT_16 = 0u << 22 , BIT_32 = 1u << 22 }
enum  Type {
  SYS_LDT = 2u << 8 , SYS_TASK_GATE = 5u << 8 , SYS_TSS = 9u << 8 , SYS_CALL_GATE = 12u << 8 ,
  SYS_INTR_GATE = 14u << 8 , SYS_TRAP_GATE = 15u << 8 , DATA_R = 16u << 8 , DATA_RA = 17u << 8 ,
  DATA_RW = 18u << 8 , DATA_RWA = 19u << 8 , DATA_DOWN_R = 20u << 8 , DATA_DOWN_RA = 21u << 8 ,
  DATA_DOWN_RW = 22u << 8 , DATA_DOWN_RWA = 23u << 8 , CODE_X = 24u << 8 , CODE_XA = 25u << 8 ,
  CODE_XR = 26u << 8 , CODE_XRA = 27u << 8 , CODE_CONF_X = 28u << 8 , CODE_CONF_XA = 29u << 8 ,
  CODE_CONF_XR = 30u << 8 , CODE_CONF_XRA = 31u << 8
}

Member Function Documentation

◆ load()

ALWAYS_INLINE void Gdt::load ( )
inlinestatic
44 {
45 Pseudo_descriptor d (sizeof(gdt) - 1, reinterpret_cast<mword>(gdt));
46 asm volatile("lgdt %0" : : "m" (d));
47 }

◆ unbusy_tss()

ALWAYS_INLINE void Gdt::unbusy_tss ( )
inlinestatic
51 {
52 gdt[SEL_TSS_RUN >> 3].val[1] &= ~0x200;
53 }

The documentation for this class was generated from the following file: