diff options
author | dzwdz | 2021-07-17 16:29:50 +0200 |
---|---|---|
committer | dzwdz | 2021-07-17 16:29:50 +0200 |
commit | 3159a40bdb65f215f7ecce831998e8139e57cf02 (patch) | |
tree | 1b888f51b44089dd930e5253ca22eaab5b35a5c4 /src/arch/i386 | |
parent | 4c7b4a3d0f798f62775d16b47b8f192c2c2b5ef0 (diff) |
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
Diffstat (limited to 'src/arch/i386')
-rw-r--r-- | src/arch/i386/multiboot.s | 20 |
1 files changed, 14 insertions, 6 deletions
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 |