diff --git a/arch/arm/src/armv7-a/arm_gicv2.c b/arch/arm/src/armv7-a/arm_gicv2.c index 6b38e160bea..1020c01e776 100644 --- a/arch/arm/src/armv7-a/arm_gicv2.c +++ b/arch/arm/src/armv7-a/arm_gicv2.c @@ -724,13 +724,8 @@ void arm_cpu_sgi(int sgi, unsigned int cpuset) arm_gic_wait_done(cpuset); -#ifdef CONFIG_SMP regval = GIC_ICDSGIR_INTID(sgi) | GIC_ICDSGIR_CPUTARGET(cpuset) | GIC_ICDSGIR_TGTFILTER_LIST; -#else - regval = GIC_ICDSGIR_INTID(sgi) | GIC_ICDSGIR_CPUTARGET(0) | - GIC_ICDSGIR_TGTFILTER_THIS; -#endif #if defined(CONFIG_ARCH_TRUSTZONE_SECURE) if (sgi >= GIC_IRQ_SGI0 && sgi <= GIC_IRQ_SGI7) diff --git a/arch/arm/src/qemu/qemu_irq.c b/arch/arm/src/qemu/qemu_irq.c index 398cdc1f1c7..06530b3d501 100644 --- a/arch/arm/src/qemu/qemu_irq.c +++ b/arch/arm/src/qemu/qemu_irq.c @@ -116,9 +116,15 @@ void up_irqinitialize(void) * access to the GIC. */ - /* Initialize the Generic Interrupt Controller (GIC) for CPU0 */ + /* Initialize the Generic Interrupt Controller (GIC) for CPU0. + * In AMP mode, we want arm_gic0_initialize to be called only once. + */ + + if (sched_getcpu() == 0) + { + arm_gic0_initialize(); /* Initialization unique to CPU0 */ + } - arm_gic0_initialize(); /* Initialization unique to CPU0 */ arm_gic_initialize(); /* Initialization common to all CPUs */ #ifndef CONFIG_SUPPRESS_INTERRUPTS