summaryrefslogtreecommitdiffstats
path: root/bsps/arm/shared/irq/irq-gic.c
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/arm/shared/irq/irq-gic.c')
-rw-r--r--bsps/arm/shared/irq/irq-gic.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/bsps/arm/shared/irq/irq-gic.c b/bsps/arm/shared/irq/irq-gic.c
index 65a7e6f653..7cf469d0f7 100644
--- a/bsps/arm/shared/irq/irq-gic.c
+++ b/bsps/arm/shared/irq/irq-gic.c
@@ -262,3 +262,19 @@ void bsp_interrupt_get_affinity(
_Processor_mask_From_uint32_t(affinity, targets, 0);
}
+
+void arm_gic_trigger_sgi(
+ rtems_vector_number vector,
+ arm_gic_irq_software_irq_target_filter filter,
+ uint8_t targets
+)
+{
+ 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);
+}