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