/* Launch a slave into smp_bootstrap(). It doesn't take an argument, and we set sp to the kernel stack of the newly created idle process, gp to the proc struct so that current_thread_info() will work.  */
static void __cpuinit ip27_boot_secondary(int cpu, struct task_struct *idle)
/* Launch a slave into smp_bootstrap(). It doesn't take an argument, and we set sp to the kernel stack of the newly created idle process, gp to the proc struct so that current_thread_info() will work.  */
static void __cpuinit ip27_boot_secondary(int cpu, struct task_struct *idle)
{
	unsigned long gp = (unsigned long)task_thread_info(idle);
	unsigned long sp = __KSTK_TOS(idle);
	LAUNCH_SLAVE(cputonasid(cpu), cputoslice(cpu),
		(launch_proc_t)MAPPED_KERN_RW_TO_K0(smp_bootstrap),
		0, (void *) sp, (void *) gp);
}