diff options
-rw-r--r-- | sys/i386/i386/sys_machdep.c | 5 | ||||
-rw-r--r-- | sys/i386/include/segments.h | 1 |
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 |