target/riscv: Fix the interrupt cause code
authorAlistair Francis <alistair.francis@wdc.com>
Wed, 12 Aug 2020 19:13:30 +0000 (12:13 -0700)
committerAlistair Francis <alistair.francis@wdc.com>
Tue, 25 Aug 2020 16:11:36 +0000 (09:11 -0700)
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Message-id: 85b7fdba8abd87adb83275cdc3043ce35a1ed5c3.1597259519.git.alistair.francis@wdc.com
Message-Id: <85b7fdba8abd87adb83275cdc3043ce35a1ed5c3.1597259519.git.alistair.francis@wdc.com>

target/riscv/cpu_helper.c

index 0b4ad4bf4619bf7fcef1aab8fd9169ab6b505bb4..661e790fdca420da2e963aebe31d4cad5ad1d7b7 100644 (file)
@@ -916,14 +916,15 @@ void riscv_cpu_do_interrupt(CPUState *cs)
 
             if (riscv_cpu_virt_enabled(env) && ((hdeleg >> cause) & 1) &&
                 !force_hs_execp) {
+                /* Trap to VS mode */
                 /*
                  * See if we need to adjust cause. Yes if its VS mode interrupt
                  * no if hypervisor has delegated one of hs mode's interrupt
                  */
                 if (cause == IRQ_VS_TIMER || cause == IRQ_VS_SOFT ||
-                    cause == IRQ_VS_EXT)
+                    cause == IRQ_VS_EXT) {
                     cause = cause - 1;
-                /* Trap to VS mode */
+                }
                 env->hstatus = set_field(env->hstatus, HSTATUS_GVA, 0);
             } else if (riscv_cpu_virt_enabled(env)) {
                 /* Trap into HS mode, from virt */