summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/i386/i386.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/i386/i386.cpp')
-rw-r--r--src/devices/cpu/i386/i386.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/devices/cpu/i386/i386.cpp b/src/devices/cpu/i386/i386.cpp
index 4b4b8286818..637af658c6e 100644
--- a/src/devices/cpu/i386/i386.cpp
+++ b/src/devices/cpu/i386/i386.cpp
@@ -2199,10 +2199,10 @@ void i386_device::i386_protected_mode_retf(uint8_t count, uint8_t operand32)
FAULT(FAULT_SS,0)
}
}
- if(operand32 == 0)
- REG16(SP) += (4+count);
+ if(STACK_32BIT)
+ REG32(ESP) += (operand32 ? 8 : 4) + count;
else
- REG32(ESP) += (8+count);
+ REG16(SP) += (operand32 ? 8 : 4) + count;
}
else if(RPL > CPL)
{
@@ -3244,7 +3244,7 @@ void i386_device::i386_common_init()
}
m_program = &space(AS_PROGRAM);
- m_direct = &m_program->direct();
+ m_direct = m_program->direct<0>();
m_io = &space(AS_IO);
m_smi = false;
m_debugger_temp = 0;
@@ -4021,11 +4021,15 @@ bool i386_device::memory_translate(int spacenum, int intention, offs_t &address)
return ret;
}
-offs_t i386_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options)
+int i386_device::get_mode() const
{
- return i386_dasm_one(stream, pc, oprom, m_sreg[CS].d ? 32 : 16);
+ return m_sreg[CS].d ? 32 : 16;
}
+util::disasm_interface *i386_device::create_disassembler()
+{
+ return new i386_disassembler(this);
+}
/*****************************************************************************/
/* Intel 486 */