qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[RFC] hw: nios2: update interrupt_request when STATUS_PIE disabled


From: Wu, Wentong
Subject: [RFC] hw: nios2: update interrupt_request when STATUS_PIE disabled
Date: Fri, 5 Jun 2020 05:59:06 +0000

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.wu@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.wu@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);


reply via email to

[Prev in Thread] Current Thread [Next in Thread]