smp.c (4e73e0eb633f8a1b5cbf20e7f42c6dbfec1d1ca7) smp.c (577eebeae34d340685d8985dfdb7dfe337c511e8)
1/*
2 * Xen SMP support
3 *
4 * This file implements the Xen versions of smp_ops. SMP under Xen is
5 * very straightforward. Bringing a CPU up is simply a matter of
6 * loading its initial context and setting it running.
7 *
8 * IPIs are handled through the Xen event mechanism.

--- 222 unchanged lines hidden (view full) ---

231 gdt = get_cpu_gdt_table(cpu);
232
233 ctxt->flags = VGCF_IN_KERNEL;
234 ctxt->user_regs.ds = __USER_DS;
235 ctxt->user_regs.es = __USER_DS;
236 ctxt->user_regs.ss = __KERNEL_DS;
237#ifdef CONFIG_X86_32
238 ctxt->user_regs.fs = __KERNEL_PERCPU;
1/*
2 * Xen SMP support
3 *
4 * This file implements the Xen versions of smp_ops. SMP under Xen is
5 * very straightforward. Bringing a CPU up is simply a matter of
6 * loading its initial context and setting it running.
7 *
8 * IPIs are handled through the Xen event mechanism.

--- 222 unchanged lines hidden (view full) ---

231 gdt = get_cpu_gdt_table(cpu);
232
233 ctxt->flags = VGCF_IN_KERNEL;
234 ctxt->user_regs.ds = __USER_DS;
235 ctxt->user_regs.es = __USER_DS;
236 ctxt->user_regs.ss = __KERNEL_DS;
237#ifdef CONFIG_X86_32
238 ctxt->user_regs.fs = __KERNEL_PERCPU;
239 ctxt->user_regs.gs = __KERNEL_STACK_CANARY;
239#else
240 ctxt->gs_base_kernel = per_cpu_offset(cpu);
241#endif
242 ctxt->user_regs.eip = (unsigned long)cpu_bringup_and_idle;
243 ctxt->user_regs.eflags = 0x1000; /* IOPL_RING1 */
244
245 memset(&ctxt->fpu_ctxt, 0, sizeof(ctxt->fpu_ctxt));
246

--- 233 unchanged lines hidden ---
240#else
241 ctxt->gs_base_kernel = per_cpu_offset(cpu);
242#endif
243 ctxt->user_regs.eip = (unsigned long)cpu_bringup_and_idle;
244 ctxt->user_regs.eflags = 0x1000; /* IOPL_RING1 */
245
246 memset(&ctxt->fpu_ctxt, 0, sizeof(ctxt->fpu_ctxt));
247

--- 233 unchanged lines hidden ---