diff --git a/osdep/lrmi.c b/osdep/lrmi.c index c04a470f75..8df2cdc3a1 100644 --- a/osdep/lrmi.c +++ b/osdep/lrmi.c @@ -794,14 +794,16 @@ run_vm86(void) { unsigned int vret; sigset_t allsigs, cursigs; - unsigned long oldgs; + unsigned long oldgs, oldfs; while (1) { sigfillset(&allsigs); sigprocmask(SIG_SETMASK, &allsigs, &cursigs); asm volatile ("movl %%gs, %0" : "=g" (oldgs)); + asm volatile ("movl %%fs, %0" : "=g" (oldfs)); vret = lrmi_vm86(&context.vm); + asm volatile ("movl %0, %%fs" :: "g" (oldfs)); asm volatile ("movl %0, %%gs" :: "g" (oldgs)); sigprocmask(SIG_SETMASK, &cursigs, NULL);