summaryrefslogtreecommitdiffstats
path: root/osdep/lrmi.c
diff options
context:
space:
mode:
Diffstat (limited to 'osdep/lrmi.c')
-rw-r--r--osdep/lrmi.c4
1 files changed, 3 insertions, 1 deletions
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);