24 #include <linux/sched.h>
26 #include <asm/mmu_context.h>
33 static void *mailbox_set_regs[] = {
38 static void *mailbox_clear_regs[] = {
43 static void *mailbox_regs[] = {
57 change_c0_status(
ST0_IM, imask);
69 static void sb1250_send_ipi_single(
int cpu,
unsigned int action)
74 static inline void sb1250_send_ipi_mask(
const struct cpumask *
mask,
80 sb1250_send_ipi_single(i, action);
86 static
void __cpuinit sb1250_init_secondary(
void)
97 static void __cpuinit sb1250_smp_finish(
void)
108 static void sb1250_cpus_done(
void)
124 printk(
"cfe_start_cpu(%i) returned %i\n" , cpu, retval);
134 static void __init sb1250_smp_setup(
void)
142 for (i = 1, num = 0; i <
NR_CPUS; i++) {
152 static void __init sb1250_prepare_cpus(
unsigned int max_cpus)
157 .send_ipi_single = sb1250_send_ipi_single,
158 .send_ipi_mask = sb1250_send_ipi_mask,
159 .init_secondary = sb1250_init_secondary,
160 .smp_finish = sb1250_smp_finish,
161 .cpus_done = sb1250_cpus_done,
162 .boot_secondary = sb1250_boot_secondary,
163 .smp_setup = sb1250_smp_setup,
164 .prepare_cpus = sb1250_prepare_cpus,
175 action = (____raw_readq(mailbox_regs[cpu]) >> 48) & 0xffff;
178 ____raw_writeq(((
u64)action) << 48, mailbox_clear_regs[cpu]);