linux/arch/arc/include/asm
Vineet Gupta 41195d236e 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>
2013-02-15 23:16:02 +05:30
..
Kbuild ARC: [optim] Cache "current" in Register r25 2013-02-15 23:15:58 +05:30
arcregs.h ARC: Boot #1: low-level, setup_arch(), /proc/cpuinfo, mem init 2013-02-15 23:15:54 +05:30
asm-offsets.h
atomic.h ARC: Atomic/bitops/cmpxchg/barriers 2013-02-11 20:00:30 +05:30
barrier.h ARC: Atomic/bitops/cmpxchg/barriers 2013-02-11 20:00:30 +05:30
bitops.h ARC: Atomic/bitops/cmpxchg/barriers 2013-02-11 20:00:30 +05:30
bug.h ARC: Fundamental ARCH data-types/defines 2013-02-11 20:00:34 +05:30
byteorder.h ARC: Checksum/byteorder/swab routines 2013-02-11 20:00:34 +05:30
cache.h ARC: Cache Flush Management 2013-02-15 23:15:50 +05:30
cachectl.h ARC: Cache Flush Management 2013-02-15 23:15:50 +05:30
cacheflush.h ARC: Cache Flush Management 2013-02-15 23:15:50 +05:30
checksum.h ARC: Checksum/byteorder/swab routines 2013-02-11 20:00:34 +05:30
clk.h ARC: [DeviceTree] Convert some Kconfig items to runtime values 2013-02-15 23:15:56 +05:30
cmpxchg.h ARC: Atomic/bitops/cmpxchg/barriers 2013-02-11 20:00:30 +05:30
current.h ARC: [optim] Cache "current" in Register r25 2013-02-15 23:15:58 +05:30
delay.h ARC: Timers/counters/delay management 2013-02-11 20:00:39 +05:30
dma-mapping.h ARC: I/O and DMA Mappings 2013-02-15 23:15:54 +05:30
dma.h ARC: I/O and DMA Mappings 2013-02-15 23:15:54 +05:30
elf.h ARC: Fundamental ARCH data-types/defines 2013-02-11 20:00:34 +05:30
entry.h ARC: SMP support 2013-02-15 23:16:02 +05:30
exec.h ARC: Fundamental ARCH data-types/defines 2013-02-11 20:00:34 +05:30
futex.h ARC: Futex support 2013-02-15 23:16:00 +05:30
io.h ARC: I/O and DMA Mappings 2013-02-15 23:15:54 +05:30
irq.h ARC: [plat-arcfpga] Static platform device for CONFIG_SERIAL_ARC 2013-02-15 23:15:55 +05:30
irqflags.h ARC: Support for high priority interrupts in the in-core intc 2013-02-15 23:16:01 +05:30
kdebug.h ARC: Fundamental ARCH data-types/defines 2013-02-11 20:00:34 +05:30
linkage.h ARC: Fundamental ARCH data-types/defines 2013-02-11 20:00:34 +05:30
mmu.h ARC: MMU Context Management 2013-02-15 23:15:51 +05:30
mmu_context.h ARC: SMP support 2013-02-15 23:16:02 +05:30
module.h ARC: Module support 2013-02-15 23:16:01 +05:30
mutex.h ARC: SMP support 2013-02-15 23:16:02 +05:30
page.h ARC: Page Table Management 2013-02-15 23:15:51 +05:30
pgalloc.h ARC: Page Table Management 2013-02-15 23:15:51 +05:30
pgtable.h ARC: SMP support 2013-02-15 23:16:02 +05:30
processor.h ARC: SMP support 2013-02-15 23:16:02 +05:30
prom.h ARC: [DeviceTree] Basic support 2013-02-15 23:15:55 +05:30
ptrace.h ARC: [Review] Prevent incorrect syscall restarts 2013-02-15 23:15:50 +05:30
sections.h ARC: [DeviceTree] Basic support 2013-02-15 23:15:55 +05:30
segment.h ARC: uaccess friends 2013-02-11 20:00:31 +05:30
setup.h ARC: Boot #1: low-level, setup_arch(), /proc/cpuinfo, mem init 2013-02-15 23:15:54 +05:30
sigcontext.h ARC: Signal handling 2013-02-15 23:03:30 +05:30
signal.h ARC: Signal handling 2013-02-15 23:03:30 +05:30
smp.h ARC: SMP support 2013-02-15 23:16:02 +05:30
spinlock.h ARC: Spinlock/rwlock/mutex primitives 2013-02-11 20:00:35 +05:30
spinlock_types.h ARC: Spinlock/rwlock/mutex primitives 2013-02-11 20:00:35 +05:30
string.h ARC: String library 2013-02-11 20:00:35 +05:30
swab.h ARC: Checksum/byteorder/swab routines 2013-02-11 20:00:34 +05:30
switch_to.h ARC: Process-creation/scheduling/idle-loop 2013-02-11 20:00:38 +05:30
syscall.h ARC: Syscall support (no-legacy-syscall ABI) 2013-02-11 20:00:38 +05:30
syscalls.h ARC: Syscall support (no-legacy-syscall ABI) 2013-02-11 20:00:38 +05:30
thread_info.h ARC: Fundamental ARCH data-types/defines 2013-02-11 20:00:34 +05:30
timex.h ARC: Timers/counters/delay management 2013-02-11 20:00:39 +05:30
tlb-mmu1.h ARC: MMU Exception Handling 2013-02-15 23:15:52 +05:30
tlb.h ARC: TLB flush Handling 2013-02-15 23:15:53 +05:30
tlbflush.h ARC: TLB flush Handling 2013-02-15 23:15:53 +05:30
uaccess.h ARC: [optim] uaccess __{get,put}_user() optimised 2013-02-11 20:00:32 +05:30
unistd.h ARC: Syscall support (no-legacy-syscall ABI) 2013-02-11 20:00:38 +05:30