Skip to content

Commit accel/tcg: Always require can_do_io breaks riscv64 bare metal firmware

Hello,

commit 18a536f1 breaks translation for our riscv64 bare metal firmware, we have verified that reverting this single commit on 8.1.2 release allows our firmware to work under qemu.

The affected instructions are atomic write operations on 32-bit registers, running qemu with -d in_asm,nochain shows this as the last executed instruction when 18a536f1 is applied:

----------------
IN: github.com/usbarmory/tamago/soc/sifive/uart.(*UART).Write
Priv: 3; Virt: 0
0x8024d3bc:  0e63a02f          amoswap.w.aq.rl         zero,t1,(t2)

If 18a536f1 is reverted then all works correctly.

Happy to provide more debugging information if I can.

This has been tested on a Linux host.

Thanks

Edited by Andrea Barisani
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information