All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/5] target/riscv: Expose interrupt pending bits as GPIO lines
@ 2021-07-14  7:24 ` Alistair Francis
  0 siblings, 0 replies; 24+ messages in thread
From: Alistair Francis @ 2021-07-14  7:24 UTC (permalink / raw)
  To: qemu-devel, qemu-riscv; +Cc: alistair.francis, bmeng.cn, palmer, alistair23

Expose the 12 interrupt pending bits in MIP as GPIO lines.

Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
---
 target/riscv/cpu.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index 991a6bb760..86321baf9f 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -565,11 +565,41 @@ static void riscv_cpu_realize(DeviceState *dev, Error **errp)
     mcc->parent_realize(dev, errp);
 }
 
+#ifndef CONFIG_USER_ONLY
+static void riscv_cpu_set_irq(void *opaque, int irq, int level)
+{
+    RISCVCPU *cpu = RISCV_CPU(opaque);
+
+    switch (irq) {
+    case IRQ_U_SOFT:
+    case IRQ_S_SOFT:
+    case IRQ_VS_SOFT:
+    case IRQ_M_SOFT:
+    case IRQ_U_TIMER:
+    case IRQ_S_TIMER:
+    case IRQ_VS_TIMER:
+    case IRQ_M_TIMER:
+    case IRQ_U_EXT:
+    case IRQ_S_EXT:
+    case IRQ_VS_EXT:
+    case IRQ_M_EXT:
+        riscv_cpu_update_mip(cpu, 1 << irq, BOOL_TO_MASK(level));
+        break;
+    default:
+        g_assert_not_reached();
+    }
+}
+#endif /* CONFIG_USER_ONLY */
+
 static void riscv_cpu_init(Object *obj)
 {
     RISCVCPU *cpu = RISCV_CPU(obj);
 
     cpu_set_cpustate_pointers(cpu);
+
+#ifndef CONFIG_USER_ONLY
+    qdev_init_gpio_in(DEVICE(cpu), riscv_cpu_set_irq, 12);
+#endif /* CONFIG_USER_ONLY */
 }
 
 static Property riscv_cpu_properties[] = {
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2021-07-23  6:51 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-14  7:24 [PATCH v2 1/5] target/riscv: Expose interrupt pending bits as GPIO lines Alistair Francis
2021-07-14  7:24 ` Alistair Francis
2021-07-14  7:24 ` [PATCH v2 2/5] hw/intc: sifive_clint: Use RISC-V CPU " Alistair Francis
2021-07-14  7:24   ` Alistair Francis
2021-07-15  8:21   ` Bin Meng
2021-07-15  8:21     ` Bin Meng
2021-07-15 11:32   ` LIU Zhiwei
2021-07-15 11:32     ` LIU Zhiwei
2021-07-14  7:24 ` [PATCH v2 3/5] hw/intc: ibex_plic: Convert the PLIC to use " Alistair Francis
2021-07-14  7:24   ` Alistair Francis
2021-07-15  8:21   ` Bin Meng
2021-07-15  8:21     ` Bin Meng
2021-07-14  7:25 ` [PATCH v2 4/5] hw/intc: sifive_plic: " Alistair Francis
2021-07-14  7:25   ` Alistair Francis
2021-07-15  8:21   ` Bin Meng
2021-07-15  8:21     ` Bin Meng
2021-07-14  7:25 ` [PATCH v2 5/5] hw/intc: ibex_timer: Convert the timer " Alistair Francis
2021-07-14  7:25   ` Alistair Francis
2021-07-15  8:21   ` Bin Meng
2021-07-15  8:21     ` Bin Meng
2021-07-23  6:49     ` Alistair Francis
2021-07-23  6:49       ` Alistair Francis
2021-07-15  8:21 ` [PATCH v2 1/5] target/riscv: Expose interrupt pending bits as " Bin Meng
2021-07-15  8:21   ` Bin Meng

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.