mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
linux-i386: Fix CONFIG_X86_NO_TSS and CONFIG_X86_SYSENTER.
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
This commit is contained in:
1 parent
7db6c822ec
commit
bc5d7734b3
2 files changed
+6
-2
No files matched your search
@@ -595,7 +595,7 @@ void __cpuinit cpu_gdt_init(struct Xgt_desc_struct *gdt_descr)
|
||||
void __cpuinit cpu_init(void)
|
||||
{
|
||||
int cpu = smp_processor_id();
|
||||
#ifdef CONFIG_DOUBLEFAULT
|
||||
#ifndef CONFIG_X86_NO_TSS
|
||||
struct tss_struct * t = &per_cpu(init_tss, cpu);
|
||||
#endif
|
||||
struct thread_struct *thread = ¤t->thread;
|
||||
|
||||
@@ -503,15 +503,19 @@ struct thread_struct {
|
||||
.io_bitmap = { [ 0 ... IO_BITMAP_LONGS] = ~0 }, \
|
||||
}
|
||||
|
||||
static inline void load_esp0(struct tss_struct *tss, struct thread_struct *thread)
|
||||
static inline void __load_esp0(struct tss_struct *tss, struct thread_struct *thread)
|
||||
{
|
||||
tss->esp0 = thread->esp0;
|
||||
#ifdef CONFIG_X86_SYSENTER
|
||||
/* This can only happen when SEP is enabled, no need to test "SEP"arately */
|
||||
if (unlikely(tss->ss1 != thread->sysenter_cs)) {
|
||||
tss->ss1 = thread->sysenter_cs;
|
||||
wrmsr(MSR_IA32_SYSENTER_CS, thread->sysenter_cs, 0);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#define load_esp0(tss, thread) \
|
||||
__load_esp0(tss, thread)
|
||||
#else
|
||||
#define load_esp0(tss, thread) \
|
||||
HYPERVISOR_stack_switch(__KERNEL_DS, (thread)->esp0)
|
||||
|
||||