1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
//! Functions and data-structures to load descriptor tables. /// A struct describing a pointer to a descriptor table (GDT / IDT). /// This is in a format suitable for giving to 'lgdt' or 'lidt'. #[derive(Debug)] #[repr(C, packed)] pub struct DescriptorTablePointer { /// Size of the DT. pub limit: u16, /// Pointer to the memory region containing the DT. pub base: u64, } /// Load GDT table. pub unsafe fn lgdt(gdt: &DescriptorTablePointer) { asm!("lgdt ($0)" :: "r" (gdt) : "memory"); } /// Load LDT table. pub unsafe fn lldt(ldt: &DescriptorTablePointer) { asm!("lldt ($0)" :: "r" (ldt) : "memory"); } /// Load IDT table. pub unsafe fn lidt(idt: &DescriptorTablePointer) { asm!("lidt ($0)" :: "r" (idt) : "memory"); }