From d19b6f69e5118e177c3f05707be71bf7ce00b142 Mon Sep 17 00:00:00 2001 From: Gitea Date: Sun, 10 Jan 2021 14:42:49 -0600 Subject: [PATCH] Change gdt setup, set state different --- arch/i386/init.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/arch/i386/init.c b/arch/i386/init.c index 343139c..7645b57 100755 --- a/arch/i386/init.c +++ b/arch/i386/init.c @@ -27,8 +27,8 @@ void setup_gdt(void) { struct GDT gdt[4]; gdt[0].base = 0; gdt[0].limit = 0; gdt[0].type = 0; - gdt[1].base = 0; gdt[1].limit = 0xFFFFFFFF; gdt[1].type = 0x9A; - gdt[2].base = 0; gdt[2].limit = 0xFFFFFFFF; gdt[2].type = 0x92; + gdt[1].base = 0x4000000; gdt[1].limit = 0x3FFFFFF; gdt[1].type = 0x9A; + gdt[2].base = 0x8000000; gdt[2].limit = 0x3FFFFFF; gdt[2].type = 0x92; gdt[3].base = (unsigned int) tss; gdt[3].limit=sizeof(tss); gdt[3].type = 0x89; unsigned short int GDT[4]; @@ -40,10 +40,12 @@ void setup_gdt(void) { set_gdt(GDT, sizeof(GDT)); } +extern void enter_pmode(void); + int init(void) { - NMI_disable(); - A20_enable(); + printf("Setting up GDT...\n"); setup_gdt(); + printf("Enabling interrupts...\n"); idt_init(); printf("Fenix Dev Pre-release v0.0.3\n"); return 0;