diff options
Diffstat (limited to 'arch/x86_64/hal/gdt.c')
| -rw-r--r-- | arch/x86_64/hal/gdt.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86_64/hal/gdt.c b/arch/x86_64/hal/gdt.c index a64bdc1..fc7aa8b 100644 --- a/arch/x86_64/hal/gdt.c +++ b/arch/x86_64/hal/gdt.c @@ -53,6 +53,7 @@ void gdt_setup(processor_t *processor) { memcpy(processor->gdt, _gdt, sizeof(struct gdt_entry) * (GDT_TSS_HI+1)); + memset(processor->iopb, 0, 0x2000); struct gdt_descriptor gdtr; gdtr.base = (uintptr_t)&processor->gdt; @@ -76,6 +77,8 @@ gdt_setup(processor_t *processor) tss_lo->limit_0_15 = (uint16_t)(tss_limit & 0xFFFF); tss_lo->limit_flg |= (uint8_t)((tss_limit >> 16) & 0xF); + processor->tss.iopb = sizeof(struct tss); + extern void load_tss(void); load_tss(); } |
