From d9443c7fdf756212bb52ffc934b1166038bc2ad3 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Wed, 21 Apr 2021 12:23:54 +0200 Subject: Refactoring --- src/boot/boot.S | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'src/boot/boot.S') diff --git a/src/boot/boot.S b/src/boot/boot.S index 676ace7..8391e70 100644 --- a/src/boot/boot.S +++ b/src/boot/boot.S @@ -1,6 +1,5 @@ .globl _start .globl MB_INFO -.extern boucane .extern _bss_start .extern _bss_end .extern boucane @@ -49,7 +48,16 @@ MB_INFO: _start: mov %ebx,(MB_INFO) - +# Zeroing the .bss section +mov $_bss_start, %eax +mov $_bss_end, %ebx +start_zeroing: + movb $0x0, (%eax) + cmp %eax, %ebx + je end_zeroing + inc %eax + jmp start_zeroing +end_zeroing: # ----- Setup PAE Paging (identity on the first 10MB) mov $8192, %ecx # 8*4096/4 (8 tables of 4096 byte each divide by 4 because of movl) mov $0, %eax @@ -104,7 +112,20 @@ lgdt (gdtr) jmp $0x08, $new_cs new_cs: +mov $0x10, %ax +mov %ax, %ds +mov %ax, %es +mov %ax, %fs +mov %ax, %gs +mov %ax, %ss + +# Pay attention here! +# You are in long mode here +# Thus if you want to add any instructions +# You should use .code64 before + # Run boucane +.code64 jmp boucane # GDT @@ -121,8 +142,8 @@ gdt64: gdt64_ds: .long 0 .byte 0 - .byte 0b10000000 + .byte 0b10010010 .word 0 gdtr: .word . - gdt64 - 1 - .quad gdt64 \ No newline at end of file + .quad gdt64 -- cgit v1.2.3