Improve vm86 error handling in Xvesa.

This commit is contained in:
Juliusz Chroboczek 2006-11-06 02:29:49 +01:00
parent 6b2c65fdd1
commit aa0261a98e

View File

@ -235,13 +235,9 @@ Vm86DoInterrupt(Vm86InfoPtr vi, int num)
OsBlockSignals (); OsBlockSignals ();
code = vm86_loop(vi); code = vm86_loop(vi);
OsReleaseSignals (); OsReleaseSignals ();
if(code < 0) { if(code != 0)
ErrorF("vm86 failed (errno %d)\n", errno);
return -1; return -1;
} else if(code != 0) { else
ErrorF("vm86 returned 0x%04X\n", code);
return -1;
} else
return 0; return 0;
} }
@ -269,14 +265,10 @@ Vm86DoPOST(Vm86InfoPtr vi)
OsBlockSignals (); OsBlockSignals ();
code = vm86_loop(vi); code = vm86_loop(vi);
OsReleaseSignals (); OsReleaseSignals ();
if(code < 0) { if(code != 0)
ErrorF("vm86 failed (errno %d)\n", errno);
return -1; return -1;
} else if(code != 0) { else
ErrorF("vm86 returned 0x%04X\n", code); return 0;
return -1;
} else
return 0;
} }
#define DEBUG_VBE 0 #define DEBUG_VBE 0
@ -573,8 +565,17 @@ vm86_loop(Vm86InfoPtr vi)
Vm86Debug(vi); Vm86Debug(vi);
return -1; return -1;
default: default:
ErrorF("Unexpected result code 0x%X from vm86\n", code); if(code < 0) {
Vm86Debug(vi); if(errno == ENOSYS) {
ErrorF("No vm86 support. Are you running on AMD64?\n");
} else {
ErrorF("vm86 failed (errno = %d).\n", errno);
Vm86Debug(vi);
}
} else {
ErrorF("Unexpected result code 0x%X from vm86\n", code);
Vm86Debug(vi);
}
return -1; return -1;
} }
} }