diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2005-11-07 16:05:42 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2005-11-07 16:05:42 -0500 |
commit | 862184fe013146a0d9654a5598c5a2691747541c (patch) | |
tree | 0f3f0d46c79c7eae3d504c0e1be9ff923f1b2e36 /arch/arm/mm/proc-v6.S | |
parent | fea543f47733cc843cd74d95065ed1d4a04b38ed (diff) |
[ARM SMP] Add Realview MPcore SMP support
Add SMP support for the MPcore tile fitted to the Realview ARM
platform.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm/proc-v6.S')
-rw-r--r-- | arch/arm/mm/proc-v6.S | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S index a39d8fa2ede5..92f3ca31b7b9 100644 --- a/arch/arm/mm/proc-v6.S +++ b/arch/arm/mm/proc-v6.S | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/linkage.h> | 12 | #include <linux/linkage.h> |
13 | #include <asm/assembler.h> | 13 | #include <asm/assembler.h> |
14 | #include <asm/asm-offsets.h> | 14 | #include <asm/asm-offsets.h> |
15 | #include <asm/hardware/arm_scu.h> | ||
15 | #include <asm/procinfo.h> | 16 | #include <asm/procinfo.h> |
16 | #include <asm/pgtable.h> | 17 | #include <asm/pgtable.h> |
17 | 18 | ||
@@ -194,6 +195,23 @@ cpu_v6_name: | |||
194 | * - cache type register is implemented | 195 | * - cache type register is implemented |
195 | */ | 196 | */ |
196 | __v6_setup: | 197 | __v6_setup: |
198 | #ifdef CONFIG_SMP | ||
199 | /* Set up the SCU on core 0 only */ | ||
200 | mrc p15, 0, r0, c0, c0, 5 @ CPU core number | ||
201 | ands r0, r0, #15 | ||
202 | moveq r0, #0x10000000 @ SCU_BASE | ||
203 | orreq r0, r0, #0x00100000 | ||
204 | ldreq r5, [r0, #SCU_CTRL] | ||
205 | orreq r5, r5, #1 | ||
206 | streq r5, [r0, #SCU_CTRL] | ||
207 | |||
208 | #ifndef CONFIG_CPU_DCACHE_DISABLE | ||
209 | mrc p15, 0, r0, c1, c0, 1 @ Enable SMP/nAMP mode | ||
210 | orr r0, r0, #0x20 | ||
211 | mcr p15, 0, r0, c1, c0, 1 | ||
212 | #endif | ||
213 | #endif | ||
214 | |||
197 | mov r0, #0 | 215 | mov r0, #0 |
198 | mcr p15, 0, r0, c7, c14, 0 @ clean+invalidate D cache | 216 | mcr p15, 0, r0, c7, c14, 0 @ clean+invalidate D cache |
199 | mcr p15, 0, r0, c7, c5, 0 @ invalidate I cache | 217 | mcr p15, 0, r0, c7, c5, 0 @ invalidate I cache |