aboutsummaryrefslogtreecommitdiff
path: root/qtmips_machine/memory.h
diff options
context:
space:
mode:
Diffstat (limited to 'qtmips_machine/memory.h')
-rw-r--r--qtmips_machine/memory.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/qtmips_machine/memory.h b/qtmips_machine/memory.h
index 49ae04e..2b20366 100644
--- a/qtmips_machine/memory.h
+++ b/qtmips_machine/memory.h
@@ -61,6 +61,11 @@ public:
virtual void sync();
virtual enum LocationStatus location_status(std::uint32_t offset) const;
+ virtual std::uint32_t get_change_counter() const = 0;
+
+signals:
+ void external_change_notify(const MemoryAccess *mem_access, std::uint32_t start_addr,
+ std::uint32_t last_addr, bool external) const;
protected:
virtual bool wword(std::uint32_t offset, std::uint32_t value) = 0;
@@ -78,6 +83,7 @@ public:
bool wword(std::uint32_t offset, std::uint32_t value);
std::uint32_t rword(std::uint32_t offsetbool, bool debug_access = false) const;
+ virtual std::uint32_t get_change_counter() const override;
void merge(MemorySection&);
std::uint32_t length() const;
@@ -108,16 +114,13 @@ public:
MemorySection *get_section(std::uint32_t address, bool create) const; // returns section containing given address
bool wword(std::uint32_t address, std::uint32_t value);
std::uint32_t rword(std::uint32_t address, bool debug_access = false) const;
+ virtual std::uint32_t get_change_counter() const override;
bool operator==(const Memory&) const;
bool operator!=(const Memory&) const;
const union MemoryTree *get_memorytree_root() const;
- inline std::uint32_t get_change_counter() const {
- return change_counter;
- }
-
private:
union MemoryTree *mt_root;
std::uint32_t change_counter;