Correction - this _is_ necessary for instruction modification

git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1702 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
unzner
2012-09-27 19:50:31 +00:00
parent b07fa4dcb7
commit be9d2912f7

View File

@ -155,6 +155,12 @@ void BX_CPU_C::cpu_loop(Bit32u max_instr_count)
debug_disasm_instruction(BX_CPU_THIS_PTR prev_rip); debug_disasm_instruction(BX_CPU_THIS_PTR prev_rip);
} }
#endif #endif
/****************************************************************
* TUDOS - BOCHS-MODIFIED
*
*/
unsigned orig_len = i->ilen();
/****************************************************************/
/**************************************************************** /****************************************************************
* DanceOS - BOCHS-MODIFIED * DanceOS - BOCHS-MODIFIED
* *
@ -166,7 +172,12 @@ void BX_CPU_C::cpu_loop(Bit32u max_instr_count)
// instruction decoding completed -> continue with execution // instruction decoding completed -> continue with execution
// want to allow changing of the instruction inside instrumentation callback // want to allow changing of the instruction inside instrumentation callback
BX_INSTR_BEFORE_EXECUTION(BX_CPU_ID, i); BX_INSTR_BEFORE_EXECUTION(BX_CPU_ID, i);
RIP += i->ilen(); /****************************************************************
* TUDOS - BOCHS-MODIFIED
*
*/
RIP += orig_len;
/****************************************************************/
BX_CPU_CALL_METHOD(i->execute, (i)); // might iterate repeat instruction BX_CPU_CALL_METHOD(i->execute, (i)); // might iterate repeat instruction
BX_CPU_THIS_PTR prev_rip = RIP; // commit new RIP BX_CPU_THIS_PTR prev_rip = RIP; // commit new RIP
BX_INSTR_AFTER_EXECUTION(BX_CPU_ID, i); BX_INSTR_AFTER_EXECUTION(BX_CPU_ID, i);