mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-26 14:18:20 +00:00
bsps: Remove ARM GIC SGI target filter
Remove the target filter for software-generated interrupts since this feature is not supported by the affinity routing in GICv3. Update #4202.
This commit is contained in:
@@ -59,7 +59,6 @@ void _CPU_SMP_Send_interrupt( uint32_t target_processor_index )
|
||||
{
|
||||
arm_gic_irq_generate_software_irq(
|
||||
ARM_GIC_IRQ_SGI_0,
|
||||
ARM_GIC_IRQ_SOFTWARE_IRQ_TO_ALL_IN_LIST,
|
||||
1U << target_processor_index
|
||||
);
|
||||
}
|
||||
|
||||
@@ -79,28 +79,17 @@ void bsp_interrupt_get_affinity(
|
||||
Processor_mask *affinity
|
||||
);
|
||||
|
||||
typedef enum {
|
||||
ARM_GIC_IRQ_SOFTWARE_IRQ_TO_ALL_IN_LIST,
|
||||
ARM_GIC_IRQ_SOFTWARE_IRQ_TO_ALL_EXCEPT_SELF,
|
||||
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,
|
||||
uint32_t targets
|
||||
);
|
||||
void arm_gic_trigger_sgi(rtems_vector_number vector, uint32_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,
|
||||
uint32_t targets
|
||||
)
|
||||
{
|
||||
rtems_status_code sc = RTEMS_SUCCESSFUL;
|
||||
|
||||
if (vector <= ARM_GIC_IRQ_SGI_15) {
|
||||
arm_gic_trigger_sgi(vector, filter, targets);
|
||||
arm_gic_trigger_sgi(vector, targets);
|
||||
} else {
|
||||
sc = RTEMS_INVALID_ID;
|
||||
}
|
||||
|
||||
@@ -80,7 +80,6 @@ static inline void Cause_tm27_intr(void)
|
||||
{
|
||||
rtems_status_code sc = arm_gic_irq_generate_software_irq(
|
||||
ARM_GIC_TM27_IRQ_LOW,
|
||||
ARM_GIC_IRQ_SOFTWARE_IRQ_TO_ALL_IN_LIST,
|
||||
1U << (arm_cp15_get_multiprocessor_affinity() & 0xff)
|
||||
);
|
||||
assert(sc == RTEMS_SUCCESSFUL);
|
||||
@@ -95,7 +94,6 @@ static inline void Lower_tm27_intr(void)
|
||||
{
|
||||
rtems_status_code sc = arm_gic_irq_generate_software_irq(
|
||||
ARM_GIC_TM27_IRQ_HIGH,
|
||||
ARM_GIC_IRQ_SOFTWARE_IRQ_TO_ALL_IN_LIST,
|
||||
1U << (arm_cp15_get_multiprocessor_affinity() & 0xff)
|
||||
);
|
||||
assert(sc == RTEMS_SUCCESSFUL);
|
||||
|
||||
@@ -258,15 +258,11 @@ 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,
|
||||
uint32_t targets
|
||||
)
|
||||
void arm_gic_trigger_sgi(rtems_vector_number vector, uint32_t targets)
|
||||
{
|
||||
volatile gic_dist *dist = ARM_GIC_DIST;
|
||||
|
||||
dist->icdsgir = GIC_DIST_ICDSGIR_TARGET_LIST_FILTER(filter)
|
||||
dist->icdsgir = GIC_DIST_ICDSGIR_TARGET_LIST_FILTER(0)
|
||||
| GIC_DIST_ICDSGIR_CPU_TARGET_LIST(targets)
|
||||
#ifdef BSP_ARM_GIC_ENABLE_FIQ_FOR_GROUP_0
|
||||
| GIC_DIST_ICDSGIR_NSATT
|
||||
|
||||
@@ -337,16 +337,8 @@ 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,
|
||||
uint32_t targets
|
||||
)
|
||||
void arm_gic_trigger_sgi(rtems_vector_number vector, uint32_t targets)
|
||||
{
|
||||
/* TODO(kmoore) Handle filter:
|
||||
* ARM_GIC_IRQ_SOFTWARE_IRQ_TO_ALL_IN_LIST,
|
||||
* ARM_GIC_IRQ_SOFTWARE_IRQ_TO_ALL_EXCEPT_SELF,
|
||||
* ARM_GIC_IRQ_SOFTWARE_IRQ_TO_SELF */
|
||||
#ifndef ARM_MULTILIB_ARCH_V4
|
||||
uint64_t mpidr;
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user