diff options
Diffstat (limited to 'src/kernel/core/loader_.asm')
-rw-r--r-- | src/kernel/core/loader_.asm | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/kernel/core/loader_.asm b/src/kernel/core/loader_.asm index 5ee998a..07de52c 100644 --- a/src/kernel/core/loader_.asm +++ b/src/kernel/core/loader_.asm @@ -1,3 +1,4 @@ +[EXTERN k_highhalf_addr] [GLOBAL loader] ; making entry point visible to linker [EXTERN kmain] ; kmain is defined in kmain.c [EXTERN tasking_tmpStack] ; a temporary 4k stack used by tasking, and used when setting up kernel stuff @@ -30,10 +31,9 @@ loader: ;here, we load our false GDT, used for having the kernel in higher half section .text higherhalf: ; now we're running in higher half - mov esp, tasking_tmpStack+0x8000 ; set up the stack push eax ; pass Multiboot magic number - add ebx, 0xE0000000 ; update the MB info structure so that it is in the new seg + add ebx, k_highhalf_addr ; update the MB info structure so that it is in the new seg push ebx ; pass Multiboot info structure call kmain ; call kernel proper @@ -51,7 +51,7 @@ trickgdt: ; our false GDT gdt: dd 0, 0 ; null GDT entry - db 0xFF, 0xFF, 0, 0, 0, 10011010b, 11001111b, 0x20 ; kernel code segment - db 0xFF, 0xFF, 0, 0, 0, 10010010b, 11001111b, 0x20 ; kernel data segment + db 0xFF, 0xFF, 0, 0, 0, 10011010b, 11001111b, 0x40 ; kernel code segment + db 0xFF, 0xFF, 0, 0, 0, 10010010b, 11001111b, 0x40 ; kernel data segment gdt_end: |