summaryrefslogtreecommitdiff
path: root/kernel/src/arch/i686/start.asm
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--kernel/src/arch/i686/start.asm16
1 files changed, 7 insertions, 9 deletions
diff --git a/kernel/src/arch/i686/start.asm b/kernel/src/arch/i686/start.asm
index 2151b51..98b59be 100644
--- a/kernel/src/arch/i686/start.asm
+++ b/kernel/src/arch/i686/start.asm
@@ -1,7 +1,6 @@
global start
bits 32
-
; create the multiboot header
section .bootstrap.data
align 8
@@ -17,7 +16,7 @@ mb_end:
; create the stack for bootstrapping
-section .bootstrap.stack
+section .bootstrap.bss
align 16
bootstrap_stack_start:
resb 1024 ; 1 KiB
@@ -25,7 +24,7 @@ bootstrap_stack_end:
; create the stack for the kernel
-section .stack
+section .bss
align 16
stack_start:
resb 16384 ; 16 KiB
@@ -46,6 +45,7 @@ start:
jmp near load_kernel
+
; initalize kernel after it has been loaded in higher half
section .text
align 8
@@ -53,7 +53,7 @@ load_kernel:
; init stack
mov esp, stack_end
mov ebp, stack_end
-
+
; load global descripter table
extern load_gdt
call load_gdt
@@ -64,14 +64,12 @@ load_kernel:
; initalize the FPU
finit
-
- ; push multiboot header
- extern KERNEL_MAPPING
- add ebx, KERNEL_MAPPING
- push ebx
; start kernel
sti
+ extern KERNEL_MAPPING
+ add ebx, KERNEL_MAPPING
+ push ebx
call kernel_main
extern kernel_main