ARC: SMP support
authorVineet Gupta <vgupta@synopsys.com>
Fri, 18 Jan 2013 09:42:23 +0000 (15:12 +0530)
committerVineet Gupta <vgupta@synopsys.com>
Fri, 15 Feb 2013 17:46:02 +0000 (23:16 +0530)
commit41195d236e84458bebd4fdc218610a92231ac791
treec0049630c1a21a071c9c942086041029ebdf2866
parent0ef88a54aa341f754707414500158addbf35c780
ARC: SMP support

ARC common code to enable a SMP system + ISS provided SMP extensions.

ARC700 natively lacks SMP support, hence some of the core features are
are only enabled if SoCs have the necessary h/w pixie-dust. This
includes:
-Inter Processor Interrupts (IPI)
-Cache coherency
-load-locked/store-conditional
...

The low level exception handling would be completely broken in SMP
because we don't have hardware assisted stack switching. Thus a fair bit
of this code is repurposing the MMU_SCRATCH reg for event handler
prologues to keep them re-entrant.

Many thanks to Rajeshwar Ranga for his initial "major" contributions to
SMP Port (back in 2008), and to Noam Camus and Gilad Ben-Yossef for help
with resurrecting that in 3.2 kernel (2012).

Note that this platform code is again singleton design pattern - so
multiple SMP platforms won't build at the moment - this deficiency is
addressed in subsequent patches within this series.

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Rajeshwar Ranga <rajeshwar.ranga@gmail.com>
Cc: Noam Camus <noamc@ezchip.com>
Cc: Gilad Ben-Yossef <gilad@benyossef.com>
23 files changed:
arch/arc/Kconfig
arch/arc/Makefile
arch/arc/include/asm/entry.h
arch/arc/include/asm/mmu_context.h
arch/arc/include/asm/mutex.h
arch/arc/include/asm/pgtable.h
arch/arc/include/asm/processor.h
arch/arc/include/asm/smp.h
arch/arc/kernel/Makefile
arch/arc/kernel/ctx_sw.c
arch/arc/kernel/entry.S
arch/arc/kernel/head.S
arch/arc/kernel/irq.c
arch/arc/kernel/setup.c
arch/arc/kernel/smp.c [new file with mode: 0644]
arch/arc/mm/tlb.c
arch/arc/mm/tlbex.S
arch/arc/plat-arcfpga/Kconfig
arch/arc/plat-arcfpga/Makefile
arch/arc/plat-arcfpga/include/plat/irq.h
arch/arc/plat-arcfpga/include/plat/smp.h [new file with mode: 0644]
arch/arc/plat-arcfpga/irq.c
arch/arc/plat-arcfpga/smp.c [new file with mode: 0644]