hw/riscv: sifive_u: Make sure firmware info is 8-byte aligned
authorBin Meng <bmeng.cn@gmail.com>
Thu, 8 Jul 2021 14:33:19 +0000 (22:33 +0800)
committerAlistair Francis <alistair.francis@wdc.com>
Wed, 14 Jul 2021 22:56:00 +0000 (08:56 +1000)
commit623d53cb017fc1506eed71dd01792bef1062a877
tree64a4a6c4f21c88ff6f40cc627465e719e48b83e4
parent074ca702e64dcea15c9c3b2c1931351cf397debe
hw/riscv: sifive_u: Make sure firmware info is 8-byte aligned

Currently the firmware dynamic info (fw_dyn) is put right after
the reset vector, which is not 8-byte aligned on RV64. OpenSBI
fw_dynamic uses ld to read contents from 'struct fw_dynamic_info',
which expects fw_dyn to be on the 8-byte boundary, otherwise the
misaligned load exception may happen. Fortunately this does not
cause any issue on QEMU, as QEMU does support misaligned load.

RV32 does not have any issue as it is 4-byte aligned already.
Change to make sure it is 8-byte aligned which works for both
RV32 and RV64.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-id: 20210708143319.10441-1-bmeng.cn@gmail.com
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
hw/riscv/sifive_u.c