summary refs log tree commit diff stats
path: root/hw/intc/ibex_plic.c
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2020-11-10 09:24:56 +0000
committerPeter Maydell <peter.maydell@linaro.org>2020-11-10 09:24:56 +0000
commitf7e1914adad8885a5d4c70239ab90d901ed97e9f (patch)
treee117402b27c20ce664ca2ee01023d271d272c438 /hw/intc/ibex_plic.c
parent43afbbd9fea1b255cc81f5f4bfd0b6a88826c735 (diff)
parent96338fefc19a143abdc91f6c44f37683274b08d4 (diff)
downloadfocaccia-qemu-f7e1914adad8885a5d4c70239ab90d901ed97e9f.tar.gz
focaccia-qemu-f7e1914adad8885a5d4c70239ab90d901ed97e9f.zip
Merge remote-tracking branch 'remotes/alistair/tags/pull-riscv-to-apply-20201109' into staging
This fixes two bugs in the RISC-V port. One is a bug in the
Ibex PLIC, the other fixes the Hypvervisor access functions.

# gpg: Signature made Tue 10 Nov 2020 03:53:49 GMT
# gpg:                using RSA key F6C4AC46D4934868D3B8CE8F21E10D29DF977054
# gpg: Good signature from "Alistair Francis <alistair@alistair23.me>" [full]
# Primary key fingerprint: F6C4 AC46 D493 4868 D3B8  CE8F 21E1 0D29 DF97 7054

* remotes/alistair/tags/pull-riscv-to-apply-20201109:
  hw/intc/ibex_plic: Clear the claim register when read
  target/riscv: Split the Hypervisor execute load helpers
  target/riscv: Remove the hyp load and store functions
  target/riscv: Remove the HS_TWO_STAGE flag
  target/riscv: Set the virtualised MMU mode when doing hyp accesses
  target/riscv: Add a virtualised MMU Mode

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/intc/ibex_plic.c')
-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);
     }