20 #include <linux/kernel.h>
21 #include <linux/sched.h>
24 #include <linux/compiler.h>
28 #include <asm/cacheflush.h>
30 #include <asm/processor.h>
31 #include <asm/hardirq.h>
32 #include <asm/mmu_context.h>
38 static void __init smvp_copy_vpe_config(
void)
55 static unsigned int __init smvp_vpe_init(
unsigned int tc,
unsigned int mvpconf0,
81 smvp_copy_vpe_config();
86 static void __init smvp_tc_init(
unsigned int tc,
unsigned int mvpconf0)
114 static void vsmp_send_ipi_single(
int cpu,
unsigned int action)
143 static void vsmp_send_ipi_mask(
const struct cpumask *
mask,
unsigned int action)
148 vsmp_send_ipi_single(i, action);
151 static
void __cpuinit vsmp_init_secondary(
void)
153 #ifdef CONFIG_IRQ_GIC
166 static void __cpuinit vsmp_smp_finish(
void)
171 #ifdef CONFIG_MIPS_MT_FPAFF
180 static void vsmp_cpus_done(
void)
231 static void __init vsmp_smp_setup(
void)
233 unsigned int mvpconf0, ntc,
tc, ncpu = 0;
236 #ifdef CONFIG_MIPS_MT_FPAFF
259 for (tc = 0; tc <= ntc; tc++) {
262 smvp_tc_init(tc, mvpconf0);
263 ncpu = smvp_vpe_init(tc, mvpconf0, ncpu);
274 static void __init vsmp_prepare_cpus(
unsigned int max_cpus)
280 .send_ipi_single = vsmp_send_ipi_single,
281 .send_ipi_mask = vsmp_send_ipi_mask,
282 .init_secondary = vsmp_init_secondary,
283 .smp_finish = vsmp_smp_finish,
284 .cpus_done = vsmp_cpus_done,
285 .boot_secondary = vsmp_boot_secondary,
286 .smp_setup = vsmp_smp_setup,
287 .prepare_cpus = vsmp_prepare_cpus,