addrmap: Allow creators in the memory map

This commit is contained in:
Olivier Galibert 2021-02-24 07:51:33 +01:00
parent 805a333ebb
commit 95f5bb86b3

View File

@ -128,6 +128,11 @@ public:
assert(&target.first == &m_devbase);
return share(target.second);
}
template<typename _ptrt> address_map_entry &share(const memory_share_creator<_ptrt> &finder) {
const std::pair<device_t &, const char *> target(finder.finder_target());
assert(&target.first == &m_devbase);
return share(target.second);
}
address_map_entry &rom() { m_read.m_type = AMH_ROM; return *this; }
address_map_entry &ram() { m_read.m_type = AMH_RAM; m_write.m_type = AMH_RAM; return *this; }
@ -161,6 +166,22 @@ public:
address_map_entry &bankw(const char *tag) { m_write.m_type = AMH_BANK; m_write.m_tag = tag; return *this; }
address_map_entry &bankrw(const char *tag) { bankr(tag); bankw(tag); return *this; }
address_map_entry &bankr(const memory_bank_creator &finder) {
const std::pair<device_t &, const char *> target(finder.finder_target());
assert(&target.first == &m_devbase);
return bankr(target.second);
}
address_map_entry &bankw(const memory_bank_creator &finder) {
const std::pair<device_t &, const char *> target(finder.finder_target());
assert(&target.first == &m_devbase);
return bankw(target.second);
}
address_map_entry &bankrw(const memory_bank_creator &finder) {
const std::pair<device_t &, const char *> target(finder.finder_target());
assert(&target.first == &m_devbase);
return bankrw(target.second);
}
template<bool _reqd> address_map_entry &bankr(const memory_bank_finder<_reqd> &finder) {
const std::pair<device_t &, const char *> target(finder.finder_target());
assert(&target.first == &m_devbase);