diff --git a/sys/i386/i386/sys_machdep.c b/sys/i386/i386/sys_machdep.c index b47679ab775..3fb231b7866 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 deeaf76ccbc..1c1ddee864f 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