diff options
-rw-r--r-- | linker.ld | 1 | ||||
-rw-r--r-- | src/arch/i386/multiboot.s | 20 |
2 files changed, 15 insertions, 6 deletions
@@ -16,6 +16,7 @@ SECTIONS { *(.data) } + _data_end = .; .bss BLOCK(4K) : ALIGN(4K) { *(COMMON) diff --git a/src/arch/i386/multiboot.s b/src/arch/i386/multiboot.s index 2194982..d67110f 100644 --- a/src/arch/i386/multiboot.s +++ b/src/arch/i386/multiboot.s @@ -1,11 +1,19 @@ .set MAGIC, 0x1BADB002 -.set FLAG_ALIGN, 1<<0 /* align modules on page boundaries */ -.set FLAG_MEMINFO, 1<<1 /* memory map */ -.set FLAGS, FLAG_ALIGN | FLAG_MEMINFO +/* TODO set bss_end_addr, so the init module doesn't get overriden by the stack */ + +/* 1<<0 - align modules on page boundaries. + 1<<16 - enable manual addressing */ +.set FLAGS, 1<<0 | 1<<16 .set CHECKSUM, -(MAGIC + FLAGS) .section .multiboot .align 4 -.long MAGIC -.long FLAGS -.long CHECKSUM +multiboot_header: + .long MAGIC + .long FLAGS + .long CHECKSUM + .long multiboot_header // header_addr + .long multiboot_header // load_addr + .long _data_end // load_end_addr + .long _kernel_end // bss_end_addr + .long _start // entry_addr |