Important bugfix: passing the instruction cache entry pointer
does not account for arrays of instructions provided by one virtual instruction trace cache entry -> passing the current instruction directly. ALUInstr not yet completely tested. git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1704 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
@ -19,7 +19,7 @@ bx_bool interrupt_injection_request = false;
|
||||
|
||||
BochsController::BochsController()
|
||||
: SimulatorController(new BochsRegisterManager(), new BochsMemoryManager()),
|
||||
m_CPUContext(NULL), m_CacheEntry(NULL)
|
||||
m_CPUContext(NULL), m_CurrentInstruction(NULL)
|
||||
{
|
||||
// -------------------------------------
|
||||
// Add the general purpose register:
|
||||
@ -116,12 +116,12 @@ void BochsController::onBreakpoint(address_t instrPtr, address_t address_space)
|
||||
// implementation.
|
||||
}
|
||||
|
||||
void BochsController::updateBPEventInfo(BX_CPU_C *context, bxICacheEntry_c *cacheEntry)
|
||||
void BochsController::updateBPEventInfo(BX_CPU_C *context, bxInstruction_c *instr)
|
||||
{
|
||||
assert(context != NULL && "FATAL ERROR: Bochs internal member was NULL (not expected)!");
|
||||
assert(cacheEntry != NULL && "FATAL ERROR: Bochs internal member was NULL (not expected)!");
|
||||
assert(instr != NULL && "FATAL ERROR: Bochs internal member was NULL (not expected)!");
|
||||
m_CPUContext = context;
|
||||
m_CacheEntry = cacheEntry;
|
||||
m_CurrentInstruction = instr;
|
||||
}
|
||||
|
||||
void BochsController::onIOPort(unsigned char data, unsigned port, bool out) {
|
||||
@ -229,7 +229,7 @@ void BochsController::onTimerTrigger(void* thisPtr)
|
||||
const std::string& BochsController::getMnemonic() const
|
||||
{
|
||||
static std::string str;
|
||||
bxInstruction_c* pInstr = getICacheEntry()->i;
|
||||
bxInstruction_c* pInstr = getCurrentInstruction();
|
||||
assert(pInstr != NULL && "FATAL ERROR: Bochs internal member was NULL (not expected)!");
|
||||
const char* pszName = get_bx_opcode_name(pInstr->getIaOpcode());
|
||||
if (pszName != NULL)
|
||||
|
||||
Reference in New Issue
Block a user