summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/i386/i386/sys_machdep.c5
-rw-r--r--sys/i386/include/segments.h1
2 files changed, 6 insertions, 0 deletions
diff --git a/sys/i386/i386/sys_machdep.c b/sys/i386/i386/sys_machdep.c
index b47679a..3fb231b 100644
--- a/sys/i386/i386/sys_machdep.c
+++ b/sys/i386/i386/sys_machdep.c
@@ -523,8 +523,13 @@ user_ldt_free(struct thread *td)
}
if (td == PCPU_GET(curthread)) {
+#ifdef XEN
+ i386_reset_ldt(&default_proc_ldt);
+ PCPU_SET(currentldt, (int)&default_proc_ldt);
+#else
lldt(_default_ldt);
PCPU_SET(currentldt, _default_ldt);
+#endif
}
mdp->md_ldt = NULL;
diff --git a/sys/i386/include/segments.h b/sys/i386/include/segments.h
index deeaf76..1c1ddee 100644
--- a/sys/i386/include/segments.h
+++ b/sys/i386/include/segments.h
@@ -257,6 +257,7 @@ struct region_descriptor {
#ifdef _KERNEL
extern int _default_ldt;
#ifdef XEN
+extern struct proc_ldt default_proc_ldt;
extern union descriptor *gdt;
extern union descriptor *ldt;
#else
OpenPOWER on IntegriCloud