summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/emumem.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/emumem.h')
-rw-r--r--src/emu/emumem.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/emu/emumem.h b/src/emu/emumem.h
index 946623f0c8b..6112bbdd5f5 100644
--- a/src/emu/emumem.h
+++ b/src/emu/emumem.h
@@ -290,6 +290,8 @@ public:
// debug helpers
const char *get_handler_string(read_or_write readorwrite, offs_t byteaddress);
+ bool debugger_access() const { return m_debugger_access; }
+ void set_debugger_access(bool debugger) { m_debugger_access = debugger; }
bool log_unmap() const { return m_log_unmap; }
void set_log_unmap(bool log) { m_log_unmap = log; }
void dump_map(FILE *file, read_or_write readorwrite);
@@ -460,6 +462,7 @@ protected:
offs_t m_logbytemask; // byte-converted logical address mask
u64 m_unmap; // unmapped value
address_spacenum m_spacenum; // address space index
+ bool m_debugger_access; // treat accesses as coming from the debugger
bool m_log_unmap; // log unmapped accesses in this space?
std::unique_ptr<direct_read_data> m_direct; // fast direct-access read info
const char * m_name; // friendly name of the address space
@@ -472,6 +475,33 @@ private:
};
+// ======================> address_space_debug_wrapper
+
+// wrapper for temporarily setting the debug flag on a memory space (especially one being accessed through another space)
+class address_space_debug_wrapper
+{
+public:
+ // construction
+ address_space_debug_wrapper(address_space &space, bool debugger_access)
+ : m_target(space)
+ , m_prev_debugger_access(space.debugger_access())
+ {
+ space.set_debugger_access(debugger_access);
+ }
+
+ // destruction
+ ~address_space_debug_wrapper() { m_target.set_debugger_access(m_prev_debugger_access); }
+
+ // getter
+ address_space &space() const { return m_target; }
+
+private:
+ // internal state
+ address_space &m_target;
+ const bool m_prev_debugger_access;
+};
+
+
// ======================> memory_block
// a memory block is a chunk of RAM associated with a range of memory in a device's address space