qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [RFC v3 42/56] sparc: convert to cpu_interrupt_request


From: Emilio G. Cota
Subject: [Qemu-devel] [RFC v3 42/56] sparc: convert to cpu_interrupt_request
Date: Thu, 18 Oct 2018 21:06:11 -0400

Cc: Mark Cave-Ayland <address@hidden>
Cc: Artyom Tarasenko <address@hidden>
Signed-off-by: Emilio G. Cota <address@hidden>
---
 hw/sparc64/sparc64.c | 19 +++++++++++++------
 target/sparc/cpu.c   |  2 +-
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/hw/sparc64/sparc64.c b/hw/sparc64/sparc64.c
index 372bbd4f5b..640c4b6a30 100644
--- a/hw/sparc64/sparc64.c
+++ b/hw/sparc64/sparc64.c
@@ -56,11 +56,13 @@ void cpu_check_irqs(CPUSPARCState *env)
     /* The bit corresponding to psrpil is (1<< psrpil), the next bit
        is (2 << psrpil). */
     if (pil < (2 << env->psrpil)) {
-        if (cs->interrupt_request & CPU_INTERRUPT_HARD) {
+        cpu_mutex_lock(cs);
+        if (cpu_interrupt_request(cs) & CPU_INTERRUPT_HARD) {
             trace_sparc64_cpu_check_irqs_reset_irq(env->interrupt_index);
             env->interrupt_index = 0;
             cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD);
         }
+        cpu_mutex_unlock(cs);
         return;
     }
 
@@ -87,11 +89,16 @@ void cpu_check_irqs(CPUSPARCState *env)
                 break;
             }
         }
-    } else if (cs->interrupt_request & CPU_INTERRUPT_HARD) {
-        trace_sparc64_cpu_check_irqs_disabled(pil, env->pil_in, env->softint,
-                                              env->interrupt_index);
-        env->interrupt_index = 0;
-        cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD);
+    } else {
+        cpu_mutex_lock(cs);
+        if (cpu_interrupt_request(cs) & CPU_INTERRUPT_HARD) {
+            trace_sparc64_cpu_check_irqs_disabled(pil, env->pil_in,
+                                                  env->softint,
+                                                  env->interrupt_index);
+            env->interrupt_index = 0;
+            cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD);
+        }
+        cpu_mutex_unlock(cs);
     }
 }
 
diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
index 0f090ece54..88427283c1 100644
--- a/target/sparc/cpu.c
+++ b/target/sparc/cpu.c
@@ -709,7 +709,7 @@ static bool sparc_cpu_has_work(CPUState *cs)
     SPARCCPU *cpu = SPARC_CPU(cs);
     CPUSPARCState *env = &cpu->env;
 
-    return (cs->interrupt_request & CPU_INTERRUPT_HARD) &&
+    return (cpu_interrupt_request(cs) & CPU_INTERRUPT_HARD) &&
            cpu_interrupts_enabled(env);
 }
 
-- 
2.17.1




reply via email to

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