diff options
Diffstat (limited to 'src/devices/cpu/i386/i386.cpp')
-rw-r--r-- | src/devices/cpu/i386/i386.cpp | 16 |
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 */ |