diff options
author | Bin Meng <bmeng.cn@gmail.com> | 2020-02-18 13:15:59 +0300 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2020-02-19 14:22:07 +0300 |
commit | 66fb729a1e46a9a46e809f3b7867fef91477e494 (patch) | |
tree | 95d0ab06215dae7c42dc0cab93740dd2643634a5 | |
parent | 24c3082ea496d39d406601ee4243b724f4d31aec (diff) | |
download | opensbi-66fb729a1e46a9a46e809f3b7867fef91477e494.tar.xz |
platform: sifive: fu540: Add 32-bit specific fdt/payload addresses
For testing 32-bit SiFive specific drivers with QEMU riscv32, add
32-bit specific FW_JUMP_FDT_ADDR and FW_PAYLOAD_OFFSET.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
-rw-r--r-- | docs/platform/sifive_fu540.md | 4 | ||||
-rw-r--r-- | platform/sifive/fu540/config.mk | 16 |
2 files changed, 18 insertions, 2 deletions
diff --git a/docs/platform/sifive_fu540.md b/docs/platform/sifive_fu540.md index 7b14001..065fd4d 100644 --- a/docs/platform/sifive_fu540.md +++ b/docs/platform/sifive_fu540.md @@ -193,5 +193,9 @@ generated by QEMU, and u-boot.bin should be used as the payload image, like: make PLATFORM=sifive/fu540 FW_PAYLOAD_PATH=<u-boot_build_dir>/u-boot.bin ``` +While the real hardware operates at the 64-bit mode, it's possible for QEMU to +test the 32-bit OpenSBI firmware. This can be helpful for testing 32-bit SiFive +specific drivers. + [U-Boot]: https://gitlab.denx.de/u-boot/u-boot/blob/master/doc/board/sifive/fu540.rst [FSBL]: https://github.com/sifive/freedom-u540-c000-bootloader diff --git a/platform/sifive/fu540/config.mk b/platform/sifive/fu540/config.mk index ad099cc..e76adcd 100644 --- a/platform/sifive/fu540/config.mk +++ b/platform/sifive/fu540/config.mk @@ -21,8 +21,20 @@ platform-runcmd = qemu-system-riscv$(PLATFORM_RISCV_XLEN) -M sifive_u -m 256M \ FW_TEXT_START=0x80000000 FW_DYNAMIC=y FW_JUMP=y -FW_JUMP_ADDR=0x80200000 +ifeq ($(PLATFORM_RISCV_XLEN), 32) + # This needs to be 4MB aligned for 32-bit system + FW_JUMP_ADDR=0x80400000 +else + # This needs to be 2MB aligned for 64-bit system + FW_JUMP_ADDR=0x80200000 +endif FW_JUMP_FDT_ADDR=0x88000000 FW_PAYLOAD=y -FW_PAYLOAD_OFFSET=0x200000 +ifeq ($(PLATFORM_RISCV_XLEN), 32) + # This needs to be 4MB aligned for 32-bit system + FW_PAYLOAD_OFFSET=0x400000 +else + # This needs to be 2MB aligned for 64-bit system + FW_PAYLOAD_OFFSET=0x200000 +endif FW_PAYLOAD_FDT_ADDR=0x88000000 |