[rtems commit] bsps/riscv: bsp_interrupt_raise_on()
Sebastian Huber
sebh at rtems.org
Thu Nov 10 07:44:05 UTC 2022
Module: rtems
Branch: master
Commit: 1bf1c779e1eea50930bb0953ca92e308a0503745
Changeset: http://git.rtems.org/rtems/commit/?id=1bf1c779e1eea50930bb0953ca92e308a0503745
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Wed Nov 9 10:18:29 2022 +0100
bsps/riscv: bsp_interrupt_raise_on()
Implement bsp_interrupt_raise_on() and bsp_interrupt_raise().
---
bsps/riscv/riscv/irq/irq.c | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/bsps/riscv/riscv/irq/irq.c b/bsps/riscv/riscv/irq/irq.c
index eeb7787080..e414711ef6 100644
--- a/bsps/riscv/riscv/irq/irq.c
+++ b/bsps/riscv/riscv/irq/irq.c
@@ -346,10 +346,27 @@ rtems_status_code bsp_interrupt_is_pending(
return RTEMS_SUCCESSFUL;
}
-rtems_status_code bsp_interrupt_raise(rtems_vector_number vector)
+static inline rtems_status_code riscv_raise_on(
+ rtems_vector_number vector,
+ uint32_t cpu_index
+)
{
+ Per_CPU_Control *cpu;
+
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
- return RTEMS_UNSATISFIED;
+
+ if (vector != RISCV_INTERRUPT_VECTOR_SOFTWARE) {
+ return RTEMS_UNSATISFIED;
+ }
+
+ cpu = _Per_CPU_Get_by_index(cpu_index);
+ *cpu->cpu_per_cpu.clint_msip = 0x1;
+ return RTEMS_SUCCESSFUL;
+}
+
+rtems_status_code bsp_interrupt_raise(rtems_vector_number vector)
+{
+ return riscv_raise_on(vector, rtems_scheduler_get_processor());
}
#if defined(RTEMS_SMP)
@@ -358,8 +375,7 @@ rtems_status_code bsp_interrupt_raise_on(
uint32_t cpu_index
)
{
- bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
- return RTEMS_UNSATISFIED;
+ return riscv_raise_on(vector, cpu_index);
}
#endif
More information about the vc
mailing list