platform: sifive: fu540: Add 32-bit specific fdt/payload addresses
authorBin Meng <bmeng.cn@gmail.com>
Tue, 18 Feb 2020 10:15:59 +0000 (02:15 -0800)
committerAnup Patel <anup@brainfault.org>
Wed, 19 Feb 2020 11:22:07 +0000 (16:52 +0530)
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>
docs/platform/sifive_fu540.md
platform/sifive/fu540/config.mk

index 7b14001..065fd4d 100644 (file)
@@ -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
index ad099cc..e76adcd 100644 (file)
@@ -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