diff --git a/bochs/cpu/vmexit.cc b/bochs/cpu/vmexit.cc index 4368f5838..b0b3d6824 100755 --- a/bochs/cpu/vmexit.cc +++ b/bochs/cpu/vmexit.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: vmexit.cc,v 1.8 2009-09-30 05:57:21 sshwarts Exp $ +// $Id: vmexit.cc,v 1.9 2009-10-10 13:45:39 sshwarts Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (c) 2009 Stanislav Shwartsman @@ -303,9 +303,14 @@ void BX_CPU_C::VMexit_Event(bxInstruction_c *i, unsigned type, unsigned vector, if (vector == BX_DF_EXCEPTION) BX_CPU_THIS_PTR in_event = 0; // clear in_event indication on #DF - // qualifcation for debug exceptions similar to debug_trap field - if (vector == BX_DB_EXCEPTION) + if (vector == BX_DB_EXCEPTION) { + // qualifcation for debug exceptions similar to debug_trap field qualification = BX_CPU_THIS_PTR debug_trap & 0x0000600f; + } + + // clear debug_trap field + BX_CPU_THIS_PTR debug_trap = 0; + BX_CPU_THIS_PTR inhibit_mask = 0; Bit32u interruption_info = vector | (type << 8); if (errcode_valid)