From 8d2a1d4268e86fc20d9807df9dfe00ea1fb66b37 Mon Sep 17 00:00:00 2001 From: Olivier Galibert Date: Sat, 24 Jun 2017 10:02:45 +0200 Subject: debugcpu: Eliminate direct() from read_opcode [O. Galibert] --- src/emu/debug/debugcpu.cpp | 91 +++------------------------------------------- 1 file changed, 6 insertions(+), 85 deletions(-) diff --git a/src/emu/debug/debugcpu.cpp b/src/emu/debug/debugcpu.cpp index 084372a4b25..012dd917a40 100644 --- a/src/emu/debug/debugcpu.cpp +++ b/src/emu/debug/debugcpu.cpp @@ -705,7 +705,7 @@ u64 debugger_cpu::read_opcode(address_space &space, offs_t address, int size) { device_memory_interface &memory = space.device().memory(); - u64 result = ~u64(0) & (~u64(0) >> (64 - 8*size)), result2; + u64 result = ~u64(0) & (~u64(0) >> (64 - 8*size)); /* keep in logical range */ address &= space.logbytemask(); @@ -729,104 +729,25 @@ u64 debugger_cpu::read_opcode(address_space &space, offs_t address, int size) /* keep in physical range */ address &= space.bytemask(); - offs_t addrxor = 0; - switch (space.data_width() / 8 * 10 + size) - { - /* dump opcodes in bytes from a byte-sized bus */ - case 11: - break; - - /* dump opcodes in bytes from a word-sized bus */ - case 21: - addrxor = (space.endianness() == ENDIANNESS_LITTLE) ? BYTE_XOR_LE(0) : BYTE_XOR_BE(0); - break; - - /* dump opcodes in words from a word-sized bus */ - case 22: - break; - - /* dump opcodes in bytes from a dword-sized bus */ - case 41: - addrxor = (space.endianness() == ENDIANNESS_LITTLE) ? BYTE4_XOR_LE(0) : BYTE4_XOR_BE(0); - break; - - /* dump opcodes in words from a dword-sized bus */ - case 42: - addrxor = (space.endianness() == ENDIANNESS_LITTLE) ? WORD_XOR_LE(0) : WORD_XOR_BE(0); - break; - - /* dump opcodes in dwords from a dword-sized bus */ - case 44: - break; - - /* dump opcodes in bytes from a qword-sized bus */ - case 81: - addrxor = (space.endianness() == ENDIANNESS_LITTLE) ? BYTE8_XOR_LE(0) : BYTE8_XOR_BE(0); - break; - - /* dump opcodes in words from a qword-sized bus */ - case 82: - addrxor = (space.endianness() == ENDIANNESS_LITTLE) ? WORD2_XOR_LE(0) : WORD2_XOR_BE(0); - break; - - /* dump opcodes in dwords from a qword-sized bus */ - case 84: - addrxor = (space.endianness() == ENDIANNESS_LITTLE) ? DWORD_XOR_LE(0) : DWORD_XOR_BE(0); - break; - - /* dump opcodes in qwords from a qword-sized bus */ - case 88: - case 86: // sharc case, 48-bits opcodes - break; - - default: - fatalerror("read_opcode: unknown type = %d\n", space.data_width() / 8 * 10 + size); - } /* switch off the size and handle unaligned accesses */ switch (size) { case 1: - result = space.direct().read_byte(address, addrxor); + result = space.read_byte(address); break; case 2: - result = space.direct().read_word(address & ~1, addrxor); - if (!WORD_ALIGNED(address)) - { - result2 = space.direct().read_word((address & ~1) + 2, addrxor); - if (space.endianness() == ENDIANNESS_LITTLE) - result = (result >> (8 * (address & 1))) | (result2 << (16 - 8 * (address & 1))); - else - result = (result << (8 * (address & 1))) | (result2 >> (16 - 8 * (address & 1))); - result &= 0xffff; - } + result = space.read_word_unaligned(address); break; case 4: - result = space.direct().read_dword(address & ~3, addrxor); - if (!DWORD_ALIGNED(address)) - { - result2 = space.direct().read_dword((address & ~3) + 4, addrxor); - if (space.endianness() == ENDIANNESS_LITTLE) - result = (result >> (8 * (address & 3))) | (result2 << (32 - 8 * (address & 3))); - else - result = (result << (8 * (address & 3))) | (result2 >> (32 - 8 * (address & 3))); - result &= 0xffffffff; - } + result = space.read_dword_unaligned(address); break; - case 8: case 6: - result = space.direct().read_qword(address & ~7, addrxor); - if (!QWORD_ALIGNED(address)) - { - result2 = space.direct().read_qword((address & ~7) + 8, addrxor); - if (space.endianness() == ENDIANNESS_LITTLE) - result = (result >> (8 * (address & 7))) | (result2 << (64 - 8 * (address & 7))); - else - result = (result << (8 * (address & 7))) | (result2 >> (64 - 8 * (address & 7))); - } + case 8: + result = space.read_qword_unaligned(address); break; } -- cgit v1.2.3