diff options
-rw-r--r-- | arch/arm/mach-tango/Makefile | 4 | ||||
-rw-r--r-- | arch/arm/mach-tango/platsmp.c | 16 | ||||
-rw-r--r-- | arch/arm/mach-tango/setup.c | 14 |
3 files changed, 19 insertions, 15 deletions
diff --git a/arch/arm/mach-tango/Makefile b/arch/arm/mach-tango/Makefile index 99422ea743fd..f33935e42e77 100644 --- a/arch/arm/mach-tango/Makefile +++ b/arch/arm/mach-tango/Makefile | |||
@@ -1,3 +1,5 @@ | |||
1 | plus_sec := $(call as-instr,.arch_extension sec,+sec) | 1 | plus_sec := $(call as-instr,.arch_extension sec,+sec) |
2 | AFLAGS_smc.o :=-Wa,-march=armv7-a$(plus_sec) | 2 | AFLAGS_smc.o := -Wa,-march=armv7-a$(plus_sec) |
3 | |||
3 | obj-y += setup.o smc.o | 4 | obj-y += setup.o smc.o |
5 | obj-$(CONFIG_SMP) += platsmp.o | ||
diff --git a/arch/arm/mach-tango/platsmp.c b/arch/arm/mach-tango/platsmp.c new file mode 100644 index 000000000000..a18d5a34e2f5 --- /dev/null +++ b/arch/arm/mach-tango/platsmp.c | |||
@@ -0,0 +1,16 @@ | |||
1 | #include <linux/init.h> | ||
2 | #include <linux/smp.h> | ||
3 | #include "smc.h" | ||
4 | |||
5 | static int tango_boot_secondary(unsigned int cpu, struct task_struct *idle) | ||
6 | { | ||
7 | tango_set_aux_boot_addr(virt_to_phys(secondary_startup)); | ||
8 | tango_start_aux_core(cpu); | ||
9 | return 0; | ||
10 | } | ||
11 | |||
12 | static struct smp_operations tango_smp_ops __initdata = { | ||
13 | .smp_boot_secondary = tango_boot_secondary, | ||
14 | }; | ||
15 | |||
16 | CPU_METHOD_OF_DECLARE(tango4_smp, "sigma,tango4-smp", &tango_smp_ops); | ||
diff --git a/arch/arm/mach-tango/setup.c b/arch/arm/mach-tango/setup.c index d86900550e63..f14b6c7d255b 100644 --- a/arch/arm/mach-tango/setup.c +++ b/arch/arm/mach-tango/setup.c | |||
@@ -1,21 +1,7 @@ | |||
1 | #include <linux/smp.h> | ||
2 | #include <asm/mach/arch.h> | 1 | #include <asm/mach/arch.h> |
3 | #include <asm/hardware/cache-l2x0.h> | 2 | #include <asm/hardware/cache-l2x0.h> |
4 | #include "smc.h" | 3 | #include "smc.h" |
5 | 4 | ||
6 | static int tango4_boot_secondary(unsigned int cpu, struct task_struct *idle) | ||
7 | { | ||
8 | tango_set_aux_boot_addr(virt_to_phys(secondary_startup)); | ||
9 | tango_start_aux_core(cpu); | ||
10 | return 0; | ||
11 | } | ||
12 | |||
13 | static struct smp_operations tango4_smp_ops __initdata = { | ||
14 | .smp_boot_secondary = tango4_boot_secondary, | ||
15 | }; | ||
16 | |||
17 | CPU_METHOD_OF_DECLARE(tango4_smp, "sigma,tango4-smp", &tango4_smp_ops); | ||
18 | |||
19 | static void tango_l2c_write(unsigned long val, unsigned int reg) | 5 | static void tango_l2c_write(unsigned long val, unsigned int reg) |
20 | { | 6 | { |
21 | if (reg == L2X0_CTRL) | 7 | if (reg == L2X0_CTRL) |