pl330: Don't inhibit ES bits on INTEN
authorPeter Crosthwaite <peter.crosthwaite@xilinx.com>
Tue, 2 Apr 2013 17:59:29 +0000 (17:59 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 5 Apr 2013 15:59:09 +0000 (16:59 +0100)
This if-else logic inhibits setting of the event status (ES) bits
when interrupts are enabled. This is incorrect. ES should be set
regardless on INTEN state. INTEN only inhibits the signalling of
events to PL330 threads, not setting of the ES register.

Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/pl330.c

index 1a04773a71c1be6ec529793195cd7ad2c9ccbc3f..60aa4a8f9f1a768efcb74a9fa2687ecd642b97f8 100644 (file)
@@ -870,9 +870,8 @@ static void pl330_dmasev(PL330Chan *ch, uint8_t opcode, uint8_t *args, int len)
         ch->parent->int_status |= (1 << ev_id);
         DB_PRINT("event interrupt raised %d\n", ev_id);
         qemu_irq_raise(ch->parent->irq[ev_id]);
-    } else {
-        ch->parent->ev_status |= (1 << ev_id);
     }
+    ch->parent->ev_status |= (1 << ev_id);
 }
 
 static void pl330_dmast(PL330Chan *ch, uint8_t opcode, uint8_t *args, int len)