diff options
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | linker.ld | 13 |
2 files changed, 10 insertions, 7 deletions
@@ -41,8 +41,8 @@ loader.img : loader.elf qemu-elf : kernel.elf qemu-system-arm -m 256 -M raspi2 -serial stdio -kernel $^ -qemu-bin : kernel7.img - qemu-system-arm -m 256 -M raspi2 -serial stdio -kernel $^ +qemu-bin : loader.img kernel7.img pipe_image + ./pipe_image | qemu-system-arm -m 256 -M raspi2 -serial stdio -kernel $< qemu-loader : loader.img qemu-system-arm -m 256 -M raspi2 -serial stdio -kernel $^ @@ -2,12 +2,15 @@ ENTRY(_start) SECTIONS { - /* Starts at LOADER_ADDR. */ - /* Warning! Internet says RPis in 32-bit mode load kernel at 0x8000! */ + /* Starts at LOADER_ADDR, which is 0x8000 - that's where RPis in */ + /* 32-bit mode load kernel at. */ /* My experiments do, however, show, that qemu emulating RPi2 */ - /* Loads the kernel at 0x10000! (took some pain to find out) */ - . = 0x10000; - /* For AArch64, use . = 0x80000; Unless this too is wrong */ + /* loads the kernel at 0x10000! (took some pain to find out). */ + /* Since we're using a bootloader now, we can compile the kernel */ + /* for 0x8000 and bootloader will load it properly (although it */ + /* itself still has to be compiled for 0x10000) */ + . = 0x8000; + /* For AArch64, use . = 0x80000; Unless this too is wrong in qemu… */ __start = .; __text_start = .; .text : |