diff --git a/bochs/cpu/exception.cc b/bochs/cpu/exception.cc index 77ec28793..8a8389414 100644 --- a/bochs/cpu/exception.cc +++ b/bochs/cpu/exception.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: exception.cc,v 1.106 2008-04-11 21:40:36 sshwarts Exp $ +// $Id: exception.cc,v 1.107 2008-04-14 21:48:34 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -917,9 +917,7 @@ void BX_CPU_C::exception(unsigned vector, Bit16u error_code, bx_bool is_INT) break; #if BX_CPU_LEVEL >= 4 case BX_AC_EXCEPTION: // alignment check - BX_PANIC(("exception(): alignment-check, vector 17 not implemented")); push_error = 1; - error_code = 0; exception_class = BX_EXCEPTION_CLASS_FAULT; exception_type = BX_ET_BENIGN; break; diff --git a/bochs/cpu/instr.h b/bochs/cpu/instr.h index da1d97f4b..da4b1b092 100755 --- a/bochs/cpu/instr.h +++ b/bochs/cpu/instr.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: instr.h,v 1.10 2008-04-05 17:57:21 sshwarts Exp $ +// $Id: instr.h,v 1.11 2008-04-14 21:48:35 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (c) 2008 Stanislav Shwartsman @@ -289,4 +289,6 @@ public: }; // +extern BxExecutePtr_tR BxOpcodesTable[]; + #endif diff --git a/bochs/cpu/iret.cc b/bochs/cpu/iret.cc index eb4ca37dc..f4dde07cc 100755 --- a/bochs/cpu/iret.cc +++ b/bochs/cpu/iret.cc @@ -1,5 +1,5 @@ //////////////////////////////////////////////////////////////////////// -// $Id: iret.cc,v 1.30 2008-03-29 18:18:07 sshwarts Exp $ +// $Id: iret.cc,v 1.31 2008-04-14 21:48:37 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (c) 2005 Stanislav Shwartsman @@ -382,11 +382,8 @@ BX_CPU_C::long_iret(bxInstruction_c *i) top_nbytes_same = 6; } - // if VM=1 in flags image on stack then STACK_RETURN_TO_V86 - if (new_eflags & EFlagsVMMask) { - BX_PANIC(("iret64: no V86 mode in x86-64 LONG mode")); - new_eflags &= ~EFlagsVMMask; - } + // ignore VM flag in long mode + new_eflags &= ~EFlagsVMMask; parse_selector(raw_cs_selector, &cs_selector);