From 3159a40bdb65f215f7ecce831998e8139e57cf02 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Sat, 17 Jul 2021 16:29:50 +0200 Subject: multiboot: manually address regions of the kernel thanks to this, i can specify the region where the bss is - so GRUB won't place any boot modules there --- src/arch/i386/multiboot.s | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src/arch') 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 -- cgit v1.2.3