summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/emumem_hea.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/emumem_hea.h')
-rw-r--r--src/emu/emumem_hea.h18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/emu/emumem_hea.h b/src/emu/emumem_hea.h
index e19a04b4613..9ee6f8c8a1e 100644
--- a/src/emu/emumem_hea.h
+++ b/src/emu/emumem_hea.h
@@ -5,16 +5,16 @@
// parent class for final handlers which want an address base and a mask
-template<int Width, int AddrShift, int Endian> class handler_entry_read_address : public handler_entry_read<Width, AddrShift, Endian>
+template<int Width, int AddrShift> class handler_entry_read_address : public handler_entry_read<Width, AddrShift>
{
public:
- using uX = typename emu::detail::handler_entry_size<Width>::uX;
+ using uX = emu::detail::handler_entry_size_t<Width>;
- handler_entry_read_address(address_space *space, u32 flags) : handler_entry_read<Width, AddrShift, Endian>(space, flags) {}
+ handler_entry_read_address(address_space *space, u32 flags) : handler_entry_read<Width, AddrShift>(space, flags) {}
~handler_entry_read_address() = default;
inline void set_address_info(offs_t base, offs_t mask) {
- m_address_base = base;
+ m_address_base = base & ~handler_entry_read<Width, AddrShift>::NATIVE_MASK;
m_address_mask = mask;
}
@@ -22,16 +22,18 @@ protected:
offs_t m_address_base, m_address_mask;
};
-template<int Width, int AddrShift, int Endian> class handler_entry_write_address : public handler_entry_write<Width, AddrShift, Endian>
+template<int Width, int AddrShift> class handler_entry_write_address : public handler_entry_write<Width, AddrShift>
{
public:
- using uX = typename emu::detail::handler_entry_size<Width>::uX;
+ using uX = emu::detail::handler_entry_size_t<Width>;
- handler_entry_write_address(address_space *space, u32 flags) : handler_entry_write<Width, AddrShift, Endian>(space, flags) {}
+ static constexpr u32 NATIVE_MASK = Width + AddrShift >= 0 ? (1 << (Width + AddrShift)) - 1 : 0;
+
+ handler_entry_write_address(address_space *space, u32 flags) : handler_entry_write<Width, AddrShift>(space, flags) {}
~handler_entry_write_address() = default;
inline void set_address_info(offs_t base, offs_t mask) {
- m_address_base = base;
+ m_address_base = base & ~handler_entry_write<Width, AddrShift>::NATIVE_MASK;
m_address_mask = mask;
}