From 5dfac4879ce5f34503ae7537eefd3fc48d6fa750 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Wed, 25 Aug 2021 23:47:08 +0300 Subject: libfdt seems to work At least as far as reading memory info, cool. One issue I have is that .(ro)data is apparently accessed by absolute addresses, so I need to know at which address the kernel is going to be loaded. I would prefer completely position independent code, but if that's not possible then eh. --- arch/riscv/conf/boot.cmd | 6 ++++-- arch/riscv/conf/init-link.S | 1 - arch/riscv/conf/kernel-link.S | 3 +-- 3 files changed, 5 insertions(+), 5 deletions(-) (limited to 'arch/riscv/conf') diff --git a/arch/riscv/conf/boot.cmd b/arch/riscv/conf/boot.cmd index ddbc319..782c1e8 100644 --- a/arch/riscv/conf/boot.cmd +++ b/arch/riscv/conf/boot.cmd @@ -1,2 +1,4 @@ -fatload ${devtype} ${devnum} ${kernel_addr_r} apos.itb -bootm ${kernel_addr_r} +fdt move ${fdt_addr} ${fdt_addr_r} +fdt addr ${fdt_addr_r} +load ${devtype} ${devnum} ${kernel_addr_r} apos.itb +bootm ${kernel_addr_r} - ${fdt_addr_r} diff --git a/arch/riscv/conf/init-link.S b/arch/riscv/conf/init-link.S index db18822..f1ceadc 100644 --- a/arch/riscv/conf/init-link.S +++ b/arch/riscv/conf/init-link.S @@ -1,4 +1,3 @@ -#include #include OUTPUT_ARCH(riscv) diff --git a/arch/riscv/conf/kernel-link.S b/arch/riscv/conf/kernel-link.S index 873c7de..ebcc877 100644 --- a/arch/riscv/conf/kernel-link.S +++ b/arch/riscv/conf/kernel-link.S @@ -1,4 +1,3 @@ -#include #include OUTPUT_ARCH(riscv) @@ -7,7 +6,7 @@ ENTRY(main) SECTIONS { . = ABSOLUTE(VM_KERN); .text ALIGN(4K) : AT(0) { - *(.text.start); + *(.kernel.start); *(.text); . = ALIGN(4K); } -- cgit v1.3