summaryrefslogtreecommitdiff
path: root/src/boot
diff options
context:
space:
mode:
authorCarlos Maiolino <[email protected]>2025-07-17 19:20:28 +0200
committerCarlos Maiolino <[email protected]>2025-07-17 19:20:28 +0200
commitd8392002629bc97c05ca82961c7ab3439ed7248e (patch)
treedfd3f7dafd4e9efe10fe87b383c78430379580b9 /src/boot
parent7bcc28cb58e99927e14636fe199c5345f6c63a6f (diff)
Start writing the kernel and add a linker script
Move the code unders [BITS 32] label to its own file to be loaded as a kernel by the boot loader. Add a linker script to link the bootloader and the kernel in a single binary file. Add a build script to make it easier to use the cross compiler Update the Makefile to build everything and pack it into the os.bin Signed-off-by: Carlos Maiolino <[email protected]>
Diffstat (limited to 'src/boot')
-rw-r--r--src/boot/bootloader.asm29
1 files changed, 4 insertions, 25 deletions
diff --git a/src/boot/bootloader.asm b/src/boot/bootloader.asm
index fc17af8..eb226a6 100644
--- a/src/boot/bootloader.asm
+++ b/src/boot/bootloader.asm
@@ -3,6 +3,7 @@ BITS 16
CODE_SEG equ gdt_code - gdt_start ; 0x8
DATA_SEG equ gdt_data - gdt_start ; 0x10
+
_start:
jmp short start
nop
@@ -34,7 +35,9 @@ step2:
mov eax, cr0
or eax, 0x1
mov cr0, eax
- jmp CODE_SEG:start_32
+
+ jmp $
+; jmp CODE_SEG:start_32
; GDT table description
gdt_start:
@@ -71,30 +74,6 @@ gdt_table:
dw gdt_end - gdt_start - 1
dd gdt_start
-
-[BITS 32]
-
-; No access to BIOS from now on....
-start_32:
- ; Set all segments to the same as the DATA_SEG
- mov ax, DATA_SEG
- mov ds, ax
- mov es, ax
- mov fs, ax
- mov gs, ax
- mov ss, ax
-
- ; Set the stack pointer and base pointer further in mem
- mov ebp, 0x00200000
- mov esp, ebp
-
- ; Enable A20 line
- in al, 0x92
- or al, 2
- out 0x92, al
-
- jmp $
-
; Fill in to the end and add bootloader signature
times 510 - ($ - $$) db 0
dw 0xAA55