t_status ia32_gdt_activate(t_ia32_gdt new_gdt) { t_ia32_gdtr gdtr; /* * 1) */ gdtr.address = (t_paddr)new_gdt.descriptor; gdtr.size = new_gdt.count * sizeof (t_ia32_gdte); LGDT(gdtr); /* * 2) */ ia32_gdt.descriptor = new_gdt.descriptor; ia32_gdt.count = new_gdt.count; return STATUS_OK; }
void basic_segmentaion_setup() { LGDT(&thegdt); load_ds(0x10); load_cs(0x8); }
/** * lgdt(): * */ __inline__ void lgdt(addr_t addr) { LGDT(addr); }