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 --- |