bsps: Add gicv3_ppi_set_pending()

This commit is contained in:
Sebastian Huber
2022-03-14 15:44:30 +01:00
parent 518330069d
commit 2e5b1312c8
2 changed files with 11 additions and 4 deletions

View File

@@ -166,6 +166,16 @@ static inline bool gicv3_sgi_ppi_is_pending(
return (sgi_ppi->icspispendr[0] & (1U << vector)) != 0;
}
static inline void gicv3_ppi_set_pending(
rtems_vector_number vector,
uint32_t cpu_index
)
{
volatile gic_sgi_ppi *sgi_ppi = gicv3_get_sgi_ppi(cpu_index);
sgi_ppi->icspispendr[0] = 1U << vector;
}
static inline void gicv3_trigger_sgi(
rtems_vector_number vector,
uint32_t targets

View File

@@ -104,10 +104,7 @@ rtems_status_code bsp_interrupt_raise(rtems_vector_number vector)
if (vector <= ARM_GIC_IRQ_SGI_LAST) {
arm_gic_trigger_sgi(vector, 1U << _SMP_Get_current_processor());
} else if (vector <= ARM_GIC_IRQ_PPI_LAST) {
volatile gic_sgi_ppi *sgi_ppi =
gicv3_get_sgi_ppi(_SMP_Get_current_processor());
sgi_ppi->icspispendr[0] = 1U << vector;
gicv3_ppi_set_pending(vector, _SMP_Get_current_processor());
} else {
volatile gic_dist *dist = ARM_GIC_DIST;