Qemu debug float 指令问题

我使用WINDOWS 11上跑的WSL,然后安装了QEMU和gdb-multiarch.

第一步我以QEMU系统方式跑TEST.ELF,让执行停在第一个指令。

qemu-system-riscv64 -machine virt -m 256M -S -gdb tcp::1234 -kernel test.elf

下来运行到flw ft0, 0(t5), 这个时候我无论执行SI或才是NI都会得到同一个结果 :QEMU界面上面的PAUSE 没有了,表示它在运行,同时GDB这边也挂着了。

对于整数指令都没有问题,但是就是对浮点型指令就有问题。同时我可以使用 qemu-riscv64 -L ~/riscv64-root 执行这个程序,只要不是使用QEMU系统方式就是可以执行的,但是就是无法使用QEMU进行调试。

如果哪位大拿知道,请指教。谢谢!

1 个赞

估计是sstatus.FS 为0导致的

(gdb) p/x (($sstatus >> 32) & 3)
$2 = 0x2

好像是CLEAN

(gdb) info registers sstatus
sstatus 0x200000000 8589934592

(($sstatus >> 32) & 3) 这个是UXL,不是FS

FS是13-14位

2 个赞

谢了!就是这个问题!

那个UXL,唉,是又一回被GPT蒙蔽了。。

1 个赞