23 #ifndef LIBBSP_ARM_SHARED_ARM_GIC_IRQ_H 24 #define LIBBSP_ARM_SHARED_ARM_GIC_IRQ_H 34 #define ARM_GIC_IRQ_SGI_0 0 35 #define ARM_GIC_IRQ_SGI_1 1 36 #define ARM_GIC_IRQ_SGI_2 2 37 #define ARM_GIC_IRQ_SGI_3 3 38 #define ARM_GIC_IRQ_SGI_5 5 39 #define ARM_GIC_IRQ_SGI_6 6 40 #define ARM_GIC_IRQ_SGI_7 7 41 #define ARM_GIC_IRQ_SGI_8 8 42 #define ARM_GIC_IRQ_SGI_9 9 43 #define ARM_GIC_IRQ_SGI_10 10 44 #define ARM_GIC_IRQ_SGI_11 11 45 #define ARM_GIC_IRQ_SGI_12 12 46 #define ARM_GIC_IRQ_SGI_13 13 47 #define ARM_GIC_IRQ_SGI_14 14 48 #define ARM_GIC_IRQ_SGI_15 15 50 #define ARM_GIC_DIST ((volatile gic_dist *) BSP_ARM_GIC_DIST_BASE) 72 void bsp_interrupt_set_affinity(
74 const Processor_mask *affinity
77 void bsp_interrupt_get_affinity(
79 Processor_mask *affinity
83 ARM_GIC_IRQ_SOFTWARE_IRQ_TO_ALL_IN_LIST,
84 ARM_GIC_IRQ_SOFTWARE_IRQ_TO_ALL_EXCEPT_SELF,
85 ARM_GIC_IRQ_SOFTWARE_IRQ_TO_SELF
86 } arm_gic_irq_software_irq_target_filter;
90 arm_gic_irq_software_irq_target_filter filter,
96 if (vector <= ARM_GIC_IRQ_SGI_15) {
97 volatile gic_dist *dist = ARM_GIC_DIST;
99 dist->icdsgir = GIC_DIST_ICDSGIR_TARGET_LIST_FILTER(filter)
100 | GIC_DIST_ICDSGIR_CPU_TARGET_LIST(targets)
101 #ifdef BSP_ARM_GIC_ENABLE_FIQ_FOR_GROUP_0 102 | GIC_DIST_ICDSGIR_NSATT
104 | GIC_DIST_ICDSGIR_SGIINTID(vector);
112 static inline uint32_t arm_gic_irq_processor_count(
void)
114 volatile gic_dist *dist = ARM_GIC_DIST;
116 return GIC_DIST_ICDICTR_CPU_NUMBER_GET(dist->icdictr) + 1;
119 void arm_gic_irq_initialize_secondary_cpu(
void);
Definition: arm-gic-regs.h:88
ISR_Vector_number rtems_vector_number
Control block type used to manage the vectors.
Definition: intr.h:47
rtems_status_code
Classic API Status.
Definition: status.h:43