diff --git a/osdep/lrmi.c b/osdep/lrmi.c index 12dd6e4c3c..c8aac7700c 100644 --- a/osdep/lrmi.c +++ b/osdep/lrmi.c @@ -11,6 +11,7 @@ This software has NO WARRANTY. Use it at your own risk. Original location: http://cvs.debian.org/lrmi/ */ +#include #include #include #include @@ -789,10 +790,17 @@ static int run_vm86(void) { unsigned int vret; + sigset_t allsigs, cursigs; + unsigned long oldgs; while (1) { + sigfillset(&allsigs); + sigprocmask(SIG_SETMASK, &allsigs, &cursigs); + asm volatile ("movl %%gs, %0" : "=g" (oldgs)); vret = lrmi_vm86(&context.vm); + asm volatile ("movl %0, %%gs" :: "g" (oldgs)); + sigprocmask(SIG_SETMASK, &cursigs, NULL); if (VM86_TYPE(vret) == VM86_INTx) {