summaryrefslogtreecommitdiffstats
path: root/bsps/arm/include/bsp/arm-gic-irq.h
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/arm/include/bsp/arm-gic-irq.h')
-rw-r--r--bsps/arm/include/bsp/arm-gic-irq.h15
1 files changed, 7 insertions, 8 deletions
diff --git a/bsps/arm/include/bsp/arm-gic-irq.h b/bsps/arm/include/bsp/arm-gic-irq.h
index b3e893de72..219c3c7189 100644
--- a/bsps/arm/include/bsp/arm-gic-irq.h
+++ b/bsps/arm/include/bsp/arm-gic-irq.h
@@ -85,6 +85,12 @@ typedef enum {
ARM_GIC_IRQ_SOFTWARE_IRQ_TO_SELF
} arm_gic_irq_software_irq_target_filter;
+void arm_gic_trigger_sgi(
+ rtems_vector_number vector,
+ arm_gic_irq_software_irq_target_filter filter,
+ uint8_t targets
+);
+
static inline rtems_status_code arm_gic_irq_generate_software_irq(
rtems_vector_number vector,
arm_gic_irq_software_irq_target_filter filter,
@@ -94,14 +100,7 @@ static inline rtems_status_code arm_gic_irq_generate_software_irq(
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (vector <= ARM_GIC_IRQ_SGI_15) {
- volatile gic_dist *dist = ARM_GIC_DIST;
-
- dist->icdsgir = GIC_DIST_ICDSGIR_TARGET_LIST_FILTER(filter)
- | GIC_DIST_ICDSGIR_CPU_TARGET_LIST(targets)
-#ifdef BSP_ARM_GIC_ENABLE_FIQ_FOR_GROUP_0
- | GIC_DIST_ICDSGIR_NSATT
-#endif
- | GIC_DIST_ICDSGIR_SGIINTID(vector);
+ arm_gic_trigger_sgi(vector, filter, targets);
} else {
sc = RTEMS_INVALID_ID;
}