Blackfin: SMP: work around anomaly 05000491
authorSonic Zhang <sonic.zhang@analog.com>
Thu, 5 Aug 2010 07:49:26 +0000 (07:49 +0000)
committerMike Frysinger <vapier@gentoo.org>
Fri, 18 Mar 2011 08:01:04 +0000 (04:01 -0400)
commitc6345ab1a3d17f4b6c80ac79d7fb0f006b32fdaa
tree8f3980f69cba2e3269aa9688426fca95be56d7a6
parent6f546bc3ac9eedbf770bf3bcbc45ce2ea32c94ad
Blackfin: SMP: work around anomaly 05000491

In order to safely work around anomaly 05000491, we have to execute IFLUSH
from L1 instruction sram.  The trouble with multi-core systems is that all
L1 sram is visible only to the active core.  So we can't just place the
functions into L1 and call it directly.  We need to setup a jump table and
place the entry point in external memory.  This will call the right func
based on the active core.

In the process, convert from the manual relocation of a small bit of code
into Core B's L1 to the more general framework we already have in place
for loading arbitrary pieces of code into L1.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
arch/blackfin/Kconfig
arch/blackfin/include/asm/smp.h
arch/blackfin/kernel/setup.c
arch/blackfin/kernel/vmlinux.lds.S
arch/blackfin/mach-bf561/secondary.S
arch/blackfin/mach-bf561/smp.c
arch/blackfin/mach-common/cache.S
arch/blackfin/mach-common/smp.c