Hi all, I'm running icount mode on qemu_nios2 with customized platform(almost same with 10m50_devboard), but cpu abort happened(qemu: fatal: Raised interrupt while not in I/O function) when guest code changes state register with wrctl instruction, add some debug code finding that it's caused by the interrupt_request mismatch, so I made a patch as below, not sure if it's right, hope I can have some discussion with maintainers first! Thanks a lot!
commit efdb3da4e145a7a34ba8b3ab1cdcfc346ae20a11 (HEAD -> master) Author: Wentong Wu <wentong...@intel.com> Date: Fri Jun 5 09:29:43 2020 -0400 hw: nios2: update interrupt_request when CR_STATUS_PIE disabled Update interrupt_request when external interupt pends for STATUS_PIE disabled. Otherwise on icount enabled nios2 target there will be cpu abort when guest code changes state register with wrctl instruction. Signed-off-by: Wentong Wu <wentong...@intel.com> diff --git a/hw/nios2/cpu_pic.c b/hw/nios2/cpu_pic.c index 1c1989d5..b04db4d7 100644 --- a/hw/nios2/cpu_pic.c +++ b/hw/nios2/cpu_pic.c @@ -42,7 +42,9 @@ static void nios2_pic_cpu_handler(void *opaque, int irq, int level) } else if (!level) { env->irq_pending = 0; cpu_reset_interrupt(cs, type); - } + } else { + cs->interrupt_request |= type; + } } else { if (level) { cpu_interrupt(cs, type);