forked from Imagelibrary/rtems
@@ -116,12 +116,7 @@ void arm_interrupt_handler_dispatch(rtems_vector_number vector);
|
|||||||
*/
|
*/
|
||||||
void gicvx_interrupt_dispatch(void);
|
void gicvx_interrupt_dispatch(void);
|
||||||
|
|
||||||
static inline uint32_t arm_gic_irq_processor_count(void)
|
uint32_t arm_gic_irq_processor_count(void);
|
||||||
{
|
|
||||||
volatile gic_dist *dist = ARM_GIC_DIST;
|
|
||||||
|
|
||||||
return GIC_DIST_ICDICTR_CPU_NUMBER_GET(dist->icdictr) + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void arm_gic_irq_initialize_secondary_cpu(void);
|
void arm_gic_irq_initialize_secondary_cpu(void);
|
||||||
|
|
||||||
|
|||||||
@@ -269,3 +269,10 @@ void arm_gic_trigger_sgi(rtems_vector_number vector, uint32_t targets)
|
|||||||
#endif
|
#endif
|
||||||
| GIC_DIST_ICDSGIR_SGIINTID(vector);
|
| GIC_DIST_ICDSGIR_SGIINTID(vector);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t arm_gic_irq_processor_count(void)
|
||||||
|
{
|
||||||
|
volatile gic_dist *dist = ARM_GIC_DIST;
|
||||||
|
|
||||||
|
return GIC_DIST_ICDICTR_CPU_NUMBER_GET(dist->icdictr) + 1;
|
||||||
|
}
|
||||||
|
|||||||
@@ -354,3 +354,30 @@ void arm_gic_trigger_sgi(rtems_vector_number vector, uint32_t targets)
|
|||||||
#endif
|
#endif
|
||||||
WRITE64_SR(ICC_SGI1, value);
|
WRITE64_SR(ICC_SGI1, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t arm_gic_irq_processor_count(void)
|
||||||
|
{
|
||||||
|
volatile gic_dist *dist = ARM_GIC_DIST;
|
||||||
|
uint32_t cpu_count;
|
||||||
|
|
||||||
|
if ((dist->icddcr & GIC_DIST_ICDDCR_ARE_S) == 0) {
|
||||||
|
cpu_count = GIC_DIST_ICDICTR_CPU_NUMBER_GET(dist->icdictr) + 1;
|
||||||
|
} else {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* Assume that an interrupt export port exists */
|
||||||
|
cpu_count = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < CPU_MAXIMUM_PROCESSORS; ++i) {
|
||||||
|
volatile gic_redist *redist = gicv3_get_redist(i);
|
||||||
|
|
||||||
|
if ((redist->icrtyper & GIC_REDIST_ICRTYPER_LAST) != 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
++cpu_count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return cpu_count;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user