foss-for-synopsys-dwc-arc-processors / qemu

QEMU port for ARCv2 Processors
Other
12 stars 9 forks source link

Add aux register 0x1F IC_PTAG_HI for HS5x #175

Closed pavelvkozlov closed 1 year ago

pavelvkozlov commented 1 year ago

I see QEMU crash in attempt to write to 0x1F ( IC_PTAG_HI) aux register. The aux register IC_PTAG_HI is a part of Instruction Cache Auxiliary Registers set. The patch https://github.com/foss-for-synopsys-dwc-arc-processors/linux/pull/122 adds code that uses this register, but it causes QEMU to crash.

This register has a similar usage and description in both ARCv2 ISA and ARCv3 32-bit ISA (hs5x).

For configurations with MMUv32, the IC_PTAG_HI register exists and provides physical address bits above
bit 31.
pavelvkozlov commented 1 year ago

I don't know how to get disassembler from QEMU crash, but as @BrunoASMauricio recommended I've added small debug output and it pointed me to this register:

[sr] Crashed on REG 31
**
ERROR:../qemu/target/arc/op_helper.c:248:helper_sr: assertion failed: (aux_reg_detail != NULL)
Bail out! ERROR:../qemu/target/arc/op_helper.c:248:helper_sr: assertion failed: (aux_reg_detail != NULL)
./qemu-arc32-run.sh: line 22:  2968 Aborted                 $ARC_QEMU_PATH/qemu-system-arc -cpu hs5x -M virt -m 2048 -display none -kernel $IMAGE -netdev tap,id=net0,ifname=$TAP,script=no,downscript=no -device virtio-net-device,netdev=net0 -drive file=$SWAP,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 --global cpu.freq_hz=30000000 -nographic
shahab-vahedi commented 1 year ago

@pavelvkozlov please confirm if the merged patch works for you. If it does, please close this issue.

pavelvkozlov commented 1 year ago

That's fixed, thanks.