#include struct gdt_entry { uint16_t limit_low; uint16_t base_low; uint8_t base_middle; uint8_t access; uint8_t granularity; uint8_t base_high; } __attribute__((packed)); struct gdt_ptr { uint16_t limit; uint32_t base; } __attribute__((packed)); struct gdt_entry gdt[3]; struct gdt_ptr gp; /* assembly */ extern void gdt_flush(uint32_t); void gdt_init(void);