From 66fb729a1e46a9a46e809f3b7867fef91477e494 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Tue, 18 Feb 2020 02:15:59 -0800 Subject: [PATCH] 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 Reviewed-by: Anup Patel --- docs/platform/sifive_fu540.md | 4 ++++ 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.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