qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [Patch] sparc32 remove an unnecessary cpu irq set


From: Artyom Tarasenko
Subject: [Qemu-devel] [Patch] sparc32 remove an unnecessary cpu irq set
Date: Wed, 12 Aug 2009 18:28:53 +0200

Signed-off-by: Artyom Tarasenko <address@hidden>
---
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -485,9 +485,6 @@ int cpu_exec(CPUState *env1)
                             env->exception_index = env->interrupt_index;
                             do_interrupt(env);
                            env->interrupt_index = 0;
-#if !defined(CONFIG_USER_ONLY)
-                            cpu_check_irqs(env);
-#endif
                         next_tb = 0;
                        }
                    } else if (interrupt_request & CPU_INTERRUPT_TIMER) {
diff --git a/target-sparc/cpu.h b/target-sparc/cpu.h
index 2428bb2..b69ebf5 100644
--- a/target-sparc/cpu.h
+++ b/target-sparc/cpu.h
@@ -480,9 +480,11 @@ static inline int cpu_cwp_dec(CPUSPARCState *env1, int cwp)

 #if !defined (TARGET_SPARC64)
 #define PUT_PSR(env, val) do { int _tmp = val;                          \
+       int _newpsrpil=(_tmp & PSR_PIL) >> 8;                           \
         env->psr = _tmp & PSR_ICC;                                      \
         env->psref = (_tmp & PSR_EF)? 1 : 0;                            \
-        env->psrpil = (_tmp & PSR_PIL) >> 8;                            \
+        if((_newpsrpil>env->psrpil)&& ((env->pil_in&15)>_newpsrpil))
cpu_check_irqs(env); \
+        env->psrpil = _newpsrpil;                                       \
         env->psrs = (_tmp & PSR_S)? 1 : 0;                              \
         env->psrps = (_tmp & PSR_PS)? 1 : 0;                            \
         env->psret = (_tmp & PSR_ET)? 1 : 0;                            \




reply via email to

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