]> git.proxmox.com Git - mirror_qemu.git/commitdiff
target-sparc: on UA2005 don't deliver Interrupt_level_n IRQs in hypervisor mode
authorArtyom Tarasenko <atar4qemu@gmail.com>
Sun, 12 Jun 2016 20:19:43 +0000 (22:19 +0200)
committerArtyom Tarasenko <atar4qemu@gmail.com>
Wed, 18 Jan 2017 21:03:44 +0000 (22:03 +0100)
As described in Chapter 5.7.6 of the UltraSPARC Architecture 2005,
outstanding disrupting exceptions that are destined for privileged mode can only
cause a trap when the virtual processor is in nonprivileged or privileged mode and
PSTATE.ie = 1. At all other times, they are held pending.

Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
Reviewed-by: Richard Henderson <rth@twiddle.net>
target/sparc/cpu.h

index f65d8b5c1ebb4706bb915a45c76863fada29f980..21fe0d1d3ed56cece90e90bcd855b915b463a7b4 100644 (file)
@@ -736,8 +736,9 @@ static inline int cpu_interrupts_enabled(CPUSPARCState *env1)
     if (env1->psret != 0)
         return 1;
 #else
-    if (env1->pstate & PS_IE)
+    if ((env1->pstate & PS_IE) && !cpu_hypervisor_mode(env1)) {
         return 1;
+    }
 #endif
 
     return 0;