From b41eb73a8c6a03e93fdedefb7a1f388a44f8aa49 Mon Sep 17 00:00:00 2001 From: Tyler McGurrin Date: Fri, 6 Jun 2025 16:29:55 -0400 Subject: [PATCH] Finally got it working with grub --- src/kernel/boot.asm | 34 +--------------------------------- src/kernel/linker.ld | 9 ++++----- src/kernel/main.c | 3 +++ src/kernel/version.h | 2 +- 4 files changed, 9 insertions(+), 39 deletions(-) diff --git a/src/kernel/boot.asm b/src/kernel/boot.asm index 4ecf793..c42b256 100644 --- a/src/kernel/boot.asm +++ b/src/kernel/boot.asm @@ -4,39 +4,7 @@ ;Tyler McGurrin ; ;/////////////////////; [bits 32] -section .entry - -extern __bss_start -extern __end - -extern start -global entry - -; My Life is totally funnnn -global entry -entry: - ; 6 - setup segment registers - mov ax, 0x10 - mov ds, ax - mov ss, ax - mov al, 0 - cld - rep stosb - - ; clear BSS (uninit data) - mov edi, __bss_start - mov ecx, __end - sub ecx, edi - - - xor edx, edx - push edx - call start - - cli - hlt - -section .text +section .multiboot_header header_start: dd 0xe85250d6 ; magic number dd 0 ; protected mode code diff --git a/src/kernel/linker.ld b/src/kernel/linker.ld index f56ca4a..68936aa 100644 --- a/src/kernel/linker.ld +++ b/src/kernel/linker.ld @@ -1,13 +1,12 @@ -ENTRY(entry) -OUTPUT_FORMAT("binary") -phys = 0x00100000; +ENTRY(start) SECTIONS { - . = phys; + . = 1M; + .boot : { KEEP(*(.multiboot_header))} .entry : { __entry_start = .; *(.entry) } - .text : { __text_start = ALIGN(8); KEEP(*(multiboot_header)) *(.text) } + .text : { __text_start = .; *(.text) } .data : { __data_start = .; *(.data) } .rodata : { __rodata_start = .; *(.rodata) } .bss : { __bss_start = .; *(.bss) } diff --git a/src/kernel/main.c b/src/kernel/main.c index 8b0dabd..0f80db7 100644 --- a/src/kernel/main.c +++ b/src/kernel/main.c @@ -21,6 +21,9 @@ #include #include +extern uint8_t __bss_start; +extern uint8_t __end; + uint16_t DEBUG_COM_PORT = COM1_PORT; void __attribute__((section(".entry"))) start() { diff --git a/src/kernel/version.h b/src/kernel/version.h index 370bd4f..e98fd01 100644 --- a/src/kernel/version.h +++ b/src/kernel/version.h @@ -6,4 +6,4 @@ #pragma once #define LOGO " _ _____ _ __________________\n / | / / | / | / / _/_ __/ ____/\n / |/ / /| | / |/ // / / / / __/ \n / /| / ___ |/ /| // / / / / /___ \n/_/ |_/_/ |_/_/ |_/___/ /_/ /_____/ \n" -#define VERSION "RD-00039" \ No newline at end of file +#define VERSION "RD-00040" \ No newline at end of file