diff --git a/linker.ld b/linker.ld index 9873a11..539d49f 100644 --- a/linker.ld +++ b/linker.ld @@ -1,6 +1,6 @@ ENTRY(_start) -/* OUTPUT_FORMAT(elf32-i386) */ -OUTPUT_FORMAT(binary) +OUTPUT_FORMAT(elf32-i386) +/* OUTPUT_FORMAT(binary) */ OUTPUT(kernel.elf) SEARCH_DIR(bin/kernel) SECTIONS{ diff --git a/src/bootloader/main.s b/src/bootloader/main.s index d6d04a6..c970bfe 100644 --- a/src/bootloader/main.s +++ b/src/bootloader/main.s @@ -305,10 +305,13 @@ part_2: mov edi, kernel_file call open_file mov esi, eax - mov edi, 0x10000 + mov edi, kload_paddr call read_file jc load_fail + mov esi, kload_paddr + call load_elf + jmp $ load_kernel: get_mmap: @@ -603,6 +606,7 @@ mmove: load_elf: ;parse elf and relocate each section to it's appropriate location + ;esi: address of loaded kernel; ;kernel info k_info: .memory_map_ptr: dd 0x2000