From ec7e798c70e54cf10e6dddf465cb7f741f760e79 Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Thu, 18 Jan 2024 23:16:56 -0500 Subject: added beginning and end kernel symbols --- kernel/arch/i386/boot.asm | 13 +++++++++++-- kernel/arch/i386/isr_handler.cpp | 2 +- kernel/arch/i386/linker.ld | 5 +++++ 3 files changed, 17 insertions(+), 3 deletions(-) (limited to 'kernel/arch/i386') diff --git a/kernel/arch/i386/boot.asm b/kernel/arch/i386/boot.asm index b5dfe11..494d3ba 100644 --- a/kernel/arch/i386/boot.asm +++ b/kernel/arch/i386/boot.asm @@ -30,10 +30,19 @@ _start: ; setup stack mov esp, stack_top - ; get multiboot header data (for memory map) - extern multiboot_main + ; push the multiboot header data into the stack for later use push eax push ebx + + ; setup paging (to map kernel to the higher half) + ;mov eax, 0 + ;mov cr3, eax + ;mov eax, cr0 + ;or eax, 0x80000001 + ;mov cr0, eax + + ; get multiboot header data (for memory map) + extern multiboot_main call multiboot_main extern _init diff --git a/kernel/arch/i386/isr_handler.cpp b/kernel/arch/i386/isr_handler.cpp index ba825dd..ac8fb49 100644 --- a/kernel/arch/i386/isr_handler.cpp +++ b/kernel/arch/i386/isr_handler.cpp @@ -10,7 +10,7 @@ extern "C" void exception_handler(int e) { //unsigned char errorcode[2]{((unsigned char) e) + 48}; //terminal_initialize(); - printf("Exception\n"); + printf("Exception %x\n", e); } #define PS2_DATA 0x60 diff --git a/kernel/arch/i386/linker.ld b/kernel/arch/i386/linker.ld index 24cfa84..bac95d2 100644 --- a/kernel/arch/i386/linker.ld +++ b/kernel/arch/i386/linker.ld @@ -5,6 +5,9 @@ SECTIONS { . = 1M; + /* Used to get the beginning and end address of the kernel */ + _begin = .; + /* code. multiboot header comes first */ .text BLOCK(4K) : ALIGN(4K) { @@ -30,4 +33,6 @@ SECTIONS *(COMMON) *(.bss) } + + _end = .; } \ No newline at end of file -- cgit v1.2.3-70-g09d2