aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlistair Francis <alistair.francis@wdc.com>2020-11-05 18:32:19 -0800
committerAlistair Francis <alistair.francis@wdc.com>2020-11-09 15:09:53 -0800
commit96338fefc19a143abdc91f6c44f37683274b08d4 (patch)
treea3c4041d35c35abd7726e4b72ca00ab4dcc0b7be
parent7687537ab0c16e0b1e69e7707456573a64b8e13b (diff)
hw/intc/ibex_plic: Clear the claim register when read
After claiming the interrupt by reading the claim register we want to clear the register to make sure the interrupt doesn't appear at the next read. This matches the documentation for the claim register as when an interrupt is claimed by a target the relevant bit of IP is cleared (which we already do): https://docs.opentitan.org/hw/ip/rv_plic/doc/index.html This also matches the current hardware. Signed-off-by: Alistair Francis <alistair.francis@wdc.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-id: 68d4575deef2559b7a747f3bda193fcf43af4558.1604629928.git.alistair.francis@wdc.com
-rw-r--r--hw/intc/ibex_plic.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/hw/intc/ibex_plic.c b/hw/intc/ibex_plic.c
index f49fa67c91..235e6b88ff 100644
--- a/hw/intc/ibex_plic.c
+++ b/hw/intc/ibex_plic.c
@@ -139,6 +139,9 @@ static uint64_t ibex_plic_read(void *opaque, hwaddr addr,
/* Return the current claimed interrupt */
ret = s->claim;
+ /* Clear the claimed interrupt */
+ s->claim = 0x00000000;
+
/* Update the interrupt status after the claim */
ibex_plic_update(s);
}