memory: Combine the map_range and handler_read/write() operations into one. [O. Galibert]

This commit is contained in:
Olivier Galibert 2011-05-31 19:18:10 +00:00
parent 9d7efea985
commit e5fb48ffdc

View File

@ -827,6 +827,12 @@ public:
virtual handler_entry &handler(UINT32 index) const; virtual handler_entry &handler(UINT32 index) const;
handler_entry_read &handler_read(UINT32 index) const { assert(index < ARRAY_LENGTH(m_handlers)); return *m_handlers[index]; } handler_entry_read &handler_read(UINT32 index) const { assert(index < ARRAY_LENGTH(m_handlers)); return *m_handlers[index]; }
// range getter
handler_entry_read &handler_map_range(offs_t bytestart, offs_t byteend, offs_t bytemask, offs_t bytemirror) {
UINT32 entry = map_range(bytestart, byteend, bytemask, bytemirror);
return handler_read(entry);
}
private: private:
// internal unmapped handler // internal unmapped handler
template<typename _UintType> template<typename _UintType>
@ -883,6 +889,12 @@ public:
virtual handler_entry &handler(UINT32 index) const; virtual handler_entry &handler(UINT32 index) const;
handler_entry_write &handler_write(UINT32 index) const { assert(index < ARRAY_LENGTH(m_handlers)); return *m_handlers[index]; } handler_entry_write &handler_write(UINT32 index) const { assert(index < ARRAY_LENGTH(m_handlers)); return *m_handlers[index]; }
// range getter
handler_entry_write &handler_map_range(offs_t bytestart, offs_t byteend, offs_t bytemask, offs_t bytemirror) {
UINT32 entry = map_range(bytestart, byteend, bytemask, bytemirror);
return handler_write(entry);
}
private: private:
// internal handlers // internal handlers
template<typename _UintType> template<typename _UintType>
@ -1974,7 +1986,7 @@ inline void address_space::adjust_addresses(offs_t &start, offs_t &end, offs_t &
//------------------------------------------------- //-------------------------------------------------
// prepare_map - allocate the address map and // prepare_map - allocate the address map and
// walk through it to find implcit memory regions // walk through it to find implicit memory regions
// and identify shared regions // and identify shared regions
//------------------------------------------------- //-------------------------------------------------
@ -2484,8 +2496,7 @@ void address_space::install_readwrite_port(offs_t addrstart, offs_t addrend, off
throw emu_fatalerror("Attempted to map non-existent port '%s' for read in space %s of device '%s'\n", rtag, m_name, m_device.tag()); throw emu_fatalerror("Attempted to map non-existent port '%s' for read in space %s of device '%s'\n", rtag, m_name, m_device.tag());
// map the range and set the ioport // map the range and set the ioport
UINT32 entry = read().map_range(addrstart, addrend, addrmask, addrmirror); read().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_ioport(*port);
read().handler_read(entry).set_ioport(*port);
} }
if (wtag != NULL) if (wtag != NULL)
@ -2496,8 +2507,7 @@ void address_space::install_readwrite_port(offs_t addrstart, offs_t addrend, off
fatalerror("Attempted to map non-existent port '%s' for write in space %s of device '%s'\n", wtag, m_name, m_device.tag()); fatalerror("Attempted to map non-existent port '%s' for write in space %s of device '%s'\n", wtag, m_name, m_device.tag());
// map the range and set the ioport // map the range and set the ioport
UINT32 entry = write().map_range(addrstart, addrend, addrmask, addrmirror); write().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_ioport(*port);
write().handler_write(entry).set_ioport(*port);
} }
// update the memory dump // update the memory dump
@ -2625,8 +2635,7 @@ UINT8 *address_space::install_read_handler(offs_t addrstart, offs_t addrend, off
core_i64_hex_format(addrmask, m_addrchars), core_i64_hex_format(addrmirror, m_addrchars), core_i64_hex_format(addrmask, m_addrchars), core_i64_hex_format(addrmirror, m_addrchars),
handler.name(), core_i64_hex_format(unitmask, data_width() / 4))); handler.name(), core_i64_hex_format(unitmask, data_width() / 4)));
UINT32 entry = read().map_range(addrstart, addrend, addrmask, addrmirror); read().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_delegate(handler, unitmask);
read().handler_read(entry).set_delegate(handler, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT8 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT8 *>(find_backing_memory(addrstart, addrend));
} }
@ -2638,8 +2647,7 @@ UINT8 *address_space::install_write_handler(offs_t addrstart, offs_t addrend, of
core_i64_hex_format(addrmask, m_addrchars), core_i64_hex_format(addrmirror, m_addrchars), core_i64_hex_format(addrmask, m_addrchars), core_i64_hex_format(addrmirror, m_addrchars),
handler.name(), core_i64_hex_format(unitmask, data_width() / 4))); handler.name(), core_i64_hex_format(unitmask, data_width() / 4)));
UINT32 entry = write().map_range(addrstart, addrend, addrmask, addrmirror); write().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_delegate(handler, unitmask);
write().handler_write(entry).set_delegate(handler, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT8 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT8 *>(find_backing_memory(addrstart, addrend));
} }
@ -2664,8 +2672,7 @@ UINT8 *address_space::install_legacy_read_handler(offs_t addrstart, offs_t addre
core_i64_hex_format(addrmask, m_addrchars), core_i64_hex_format(addrmirror, m_addrchars), core_i64_hex_format(addrmask, m_addrchars), core_i64_hex_format(addrmirror, m_addrchars),
rname, core_i64_hex_format(unitmask, data_width() / 4))); rname, core_i64_hex_format(unitmask, data_width() / 4)));
UINT32 entry = read().map_range(addrstart, addrend, addrmask, addrmirror); read().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(*this, rhandler, rname, unitmask);
read().handler_read(entry).set_legacy_func(*this, rhandler, rname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT8 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT8 *>(find_backing_memory(addrstart, addrend));
} }
@ -2677,8 +2684,7 @@ UINT8 *address_space::install_legacy_write_handler(offs_t addrstart, offs_t addr
core_i64_hex_format(addrmask, m_addrchars), core_i64_hex_format(addrmirror, m_addrchars), core_i64_hex_format(addrmask, m_addrchars), core_i64_hex_format(addrmirror, m_addrchars),
wname, core_i64_hex_format(unitmask, data_width() / 4))); wname, core_i64_hex_format(unitmask, data_width() / 4)));
UINT32 entry = write().map_range(addrstart, addrend, addrmask, addrmirror); write().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(*this, whandler, wname, unitmask);
write().handler_write(entry).set_legacy_func(*this, whandler, wname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT8 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT8 *>(find_backing_memory(addrstart, addrend));
} }
@ -2702,8 +2708,7 @@ UINT8 *address_space::install_legacy_read_handler(device_t &device, offs_t addrs
core_i64_hex_format(addrmask, m_addrchars), core_i64_hex_format(addrmirror, m_addrchars), core_i64_hex_format(addrmask, m_addrchars), core_i64_hex_format(addrmirror, m_addrchars),
rname, core_i64_hex_format(unitmask, data_width() / 4), device.tag())); rname, core_i64_hex_format(unitmask, data_width() / 4), device.tag()));
UINT32 entry = read().map_range(addrstart, addrend, addrmask, addrmirror); read().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(device, rhandler, rname, unitmask);
read().handler_read(entry).set_legacy_func(device, rhandler, rname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT8 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT8 *>(find_backing_memory(addrstart, addrend));
} }
@ -2715,8 +2720,7 @@ UINT8 *address_space::install_legacy_write_handler(device_t &device, offs_t addr
core_i64_hex_format(addrmask, m_addrchars), core_i64_hex_format(addrmirror, m_addrchars), core_i64_hex_format(addrmask, m_addrchars), core_i64_hex_format(addrmirror, m_addrchars),
wname, core_i64_hex_format(unitmask, data_width() / 4), device.tag())); wname, core_i64_hex_format(unitmask, data_width() / 4), device.tag()));
UINT32 entry = write().map_range(addrstart, addrend, addrmask, addrmirror); write().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(device, whandler, wname, unitmask);
write().handler_write(entry).set_legacy_func(device, whandler, wname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT8 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT8 *>(find_backing_memory(addrstart, addrend));
} }
@ -2735,16 +2739,14 @@ UINT8 *address_space::install_legacy_readwrite_handler(device_t &device, offs_t
UINT16 *address_space::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read16_delegate handler, UINT64 unitmask) UINT16 *address_space::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read16_delegate handler, UINT64 unitmask)
{ {
UINT32 entry = read().map_range(addrstart, addrend, addrmask, addrmirror); read().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_delegate(handler, unitmask);
read().handler_read(entry).set_delegate(handler, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT16 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT16 *>(find_backing_memory(addrstart, addrend));
} }
UINT16 *address_space::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write16_delegate handler, UINT64 unitmask) UINT16 *address_space::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write16_delegate handler, UINT64 unitmask)
{ {
UINT32 entry = write().map_range(addrstart, addrend, addrmask, addrmirror); write().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_delegate(handler, unitmask);
write().handler_write(entry).set_delegate(handler, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT16 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT16 *>(find_backing_memory(addrstart, addrend));
} }
@ -2764,16 +2766,14 @@ UINT16 *address_space::install_readwrite_handler(offs_t addrstart, offs_t addren
UINT16 *address_space::install_legacy_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read16_space_func rhandler, const char *rname, UINT64 unitmask) UINT16 *address_space::install_legacy_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read16_space_func rhandler, const char *rname, UINT64 unitmask)
{ {
UINT32 entry = read().map_range(addrstart, addrend, addrmask, addrmirror); read().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(*this, rhandler, rname, unitmask);
read().handler_read(entry).set_legacy_func(*this, rhandler, rname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT16 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT16 *>(find_backing_memory(addrstart, addrend));
} }
UINT16 *address_space::install_legacy_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write16_space_func whandler, const char *wname, UINT64 unitmask) UINT16 *address_space::install_legacy_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write16_space_func whandler, const char *wname, UINT64 unitmask)
{ {
UINT32 entry = write().map_range(addrstart, addrend, addrmask, addrmirror); write().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(*this, whandler, wname, unitmask);
write().handler_write(entry).set_legacy_func(*this, whandler, wname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT16 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT16 *>(find_backing_memory(addrstart, addrend));
} }
@ -2792,16 +2792,14 @@ UINT16 *address_space::install_legacy_readwrite_handler(offs_t addrstart, offs_t
UINT16 *address_space::install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read16_device_func rhandler, const char *rname, UINT64 unitmask) UINT16 *address_space::install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read16_device_func rhandler, const char *rname, UINT64 unitmask)
{ {
UINT32 entry = read().map_range(addrstart, addrend, addrmask, addrmirror); read().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(device, rhandler, rname, unitmask);
read().handler_read(entry).set_legacy_func(device, rhandler, rname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT16 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT16 *>(find_backing_memory(addrstart, addrend));
} }
UINT16 *address_space::install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write16_device_func whandler, const char *wname, UINT64 unitmask) UINT16 *address_space::install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write16_device_func whandler, const char *wname, UINT64 unitmask)
{ {
UINT32 entry = write().map_range(addrstart, addrend, addrmask, addrmirror); write().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(device, whandler, wname, unitmask);
write().handler_write(entry).set_legacy_func(device, whandler, wname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT16 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT16 *>(find_backing_memory(addrstart, addrend));
} }
@ -2820,16 +2818,14 @@ UINT16 *address_space::install_legacy_readwrite_handler(device_t &device, offs_t
UINT32 *address_space::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read32_delegate handler, UINT64 unitmask) UINT32 *address_space::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read32_delegate handler, UINT64 unitmask)
{ {
UINT32 entry = read().map_range(addrstart, addrend, addrmask, addrmirror); read().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_delegate(handler, unitmask);
read().handler_read(entry).set_delegate(handler, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT32 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT32 *>(find_backing_memory(addrstart, addrend));
} }
UINT32 *address_space::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write32_delegate handler, UINT64 unitmask) UINT32 *address_space::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write32_delegate handler, UINT64 unitmask)
{ {
UINT32 entry = write().map_range(addrstart, addrend, addrmask, addrmirror); write().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_delegate(handler, unitmask);
write().handler_write(entry).set_delegate(handler, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT32 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT32 *>(find_backing_memory(addrstart, addrend));
} }
@ -2849,16 +2845,14 @@ UINT32 *address_space::install_readwrite_handler(offs_t addrstart, offs_t addren
UINT32 *address_space::install_legacy_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read32_space_func rhandler, const char *rname, UINT64 unitmask) UINT32 *address_space::install_legacy_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read32_space_func rhandler, const char *rname, UINT64 unitmask)
{ {
UINT32 entry = read().map_range(addrstart, addrend, addrmask, addrmirror); read().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(*this, rhandler, rname, unitmask);
read().handler_read(entry).set_legacy_func(*this, rhandler, rname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT32 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT32 *>(find_backing_memory(addrstart, addrend));
} }
UINT32 *address_space::install_legacy_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write32_space_func whandler, const char *wname, UINT64 unitmask) UINT32 *address_space::install_legacy_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write32_space_func whandler, const char *wname, UINT64 unitmask)
{ {
UINT32 entry = write().map_range(addrstart, addrend, addrmask, addrmirror); write().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(*this, whandler, wname, unitmask);
write().handler_write(entry).set_legacy_func(*this, whandler, wname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT32 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT32 *>(find_backing_memory(addrstart, addrend));
} }
@ -2877,16 +2871,14 @@ UINT32 *address_space::install_legacy_readwrite_handler(offs_t addrstart, offs_t
UINT32 *address_space::install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read32_device_func rhandler, const char *rname, UINT64 unitmask) UINT32 *address_space::install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read32_device_func rhandler, const char *rname, UINT64 unitmask)
{ {
UINT32 entry = read().map_range(addrstart, addrend, addrmask, addrmirror); read().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(device, rhandler, rname, unitmask);
read().handler_read(entry).set_legacy_func(device, rhandler, rname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT32 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT32 *>(find_backing_memory(addrstart, addrend));
} }
UINT32 *address_space::install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write32_device_func whandler, const char *wname, UINT64 unitmask) UINT32 *address_space::install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write32_device_func whandler, const char *wname, UINT64 unitmask)
{ {
UINT32 entry = write().map_range(addrstart, addrend, addrmask, addrmirror); write().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(device, whandler, wname, unitmask);
write().handler_write(entry).set_legacy_func(device, whandler, wname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT32 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT32 *>(find_backing_memory(addrstart, addrend));
} }
@ -2905,16 +2897,14 @@ UINT32 *address_space::install_legacy_readwrite_handler(device_t &device, offs_t
UINT64 *address_space::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read64_delegate handler, UINT64 unitmask) UINT64 *address_space::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read64_delegate handler, UINT64 unitmask)
{ {
UINT32 entry = read().map_range(addrstart, addrend, addrmask, addrmirror); read().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_delegate(handler, unitmask);
read().handler_read(entry).set_delegate(handler, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT64 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT64 *>(find_backing_memory(addrstart, addrend));
} }
UINT64 *address_space::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write64_delegate handler, UINT64 unitmask) UINT64 *address_space::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write64_delegate handler, UINT64 unitmask)
{ {
UINT32 entry = write().map_range(addrstart, addrend, addrmask, addrmirror); write().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_delegate(handler, unitmask);
write().handler_write(entry).set_delegate(handler, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT64 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT64 *>(find_backing_memory(addrstart, addrend));
} }
@ -2934,16 +2924,14 @@ UINT64 *address_space::install_readwrite_handler(offs_t addrstart, offs_t addren
UINT64 *address_space::install_legacy_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read64_space_func rhandler, const char *rname, UINT64 unitmask) UINT64 *address_space::install_legacy_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read64_space_func rhandler, const char *rname, UINT64 unitmask)
{ {
UINT32 entry = read().map_range(addrstart, addrend, addrmask, addrmirror); read().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(*this, rhandler, rname, unitmask);
read().handler_read(entry).set_legacy_func(*this, rhandler, rname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT64 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT64 *>(find_backing_memory(addrstart, addrend));
} }
UINT64 *address_space::install_legacy_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write64_space_func whandler, const char *wname, UINT64 unitmask) UINT64 *address_space::install_legacy_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write64_space_func whandler, const char *wname, UINT64 unitmask)
{ {
UINT32 entry = write().map_range(addrstart, addrend, addrmask, addrmirror); write().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(*this, whandler, wname, unitmask);
write().handler_write(entry).set_legacy_func(*this, whandler, wname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT64 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT64 *>(find_backing_memory(addrstart, addrend));
} }
@ -2962,16 +2950,14 @@ UINT64 *address_space::install_legacy_readwrite_handler(offs_t addrstart, offs_t
UINT64 *address_space::install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read64_device_func rhandler, const char *rname, UINT64 unitmask) UINT64 *address_space::install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read64_device_func rhandler, const char *rname, UINT64 unitmask)
{ {
UINT32 entry = read().map_range(addrstart, addrend, addrmask, addrmirror); read().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(device, rhandler, rname, unitmask);
read().handler_read(entry).set_legacy_func(device, rhandler, rname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT64 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT64 *>(find_backing_memory(addrstart, addrend));
} }
UINT64 *address_space::install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write64_device_func whandler, const char *wname, UINT64 unitmask) UINT64 *address_space::install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write64_device_func whandler, const char *wname, UINT64 unitmask)
{ {
UINT32 entry = write().map_range(addrstart, addrend, addrmask, addrmirror); write().handler_map_range(addrstart, addrend, addrmask, addrmirror).set_legacy_func(device, whandler, wname, unitmask);
write().handler_write(entry).set_legacy_func(device, whandler, wname, unitmask);
generate_memdump(machine()); generate_memdump(machine());
return reinterpret_cast<UINT64 *>(find_backing_memory(addrstart, addrend)); return reinterpret_cast<UINT64 *>(find_backing_memory(addrstart, addrend));
} }