[Top][All Lists]
[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; \
- [Qemu-devel] [Patch] sparc32 remove an unnecessary cpu irq set,
Artyom Tarasenko <=