You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Many architectures have different types of memory (flash, RAM, EEPROM,
etc), which is currently not well supported in the FAIL* toolchain.
Therefore, this change introduces memory types.
A memory type is a simple tag that is attached to memory events and
memory listeners. Furthermore, the generic-tracing experiment records
memory types and dump-trace displays them. Currently, they are not yet
used in importing. However, with SAIL integration, we require this
kind of disambiguation between different memory types.
Furthermore, MemoryAccessEvents now carry the memory area that was accessed.
This change should not break previous experiments and/or results.
Co-authored-by: Malte Bargholz <malte@screenri.de>
std::map<memory_type_t, MemoryManager *> m_Mems; //!< access to memory pool(s)
45
45
std::vector<ConcreteCPU*> m_CPUs; //!< list of CPUs in the target system
46
46
friendclassListenerManager; //!< "outsources" the listener management
47
47
std::string m_argv0; //!< Invocation name of simulator process
48
48
public:
49
49
SimulatorController()
50
50
: m_log("SimulatorController", false),
51
-
m_isInitialized(false),
52
-
m_Mem(nullptr)
51
+
m_isInitialized(false)
53
52
{ /* blank */ }
54
53
SimulatorController(MemoryManager* mem)
55
54
: m_log("SimulatorController", false),
56
-
m_isInitialized(false),
57
-
m_Mem(mem)
58
-
{ /* blank */}
55
+
m_isInitialized(false) {
56
+
m_Mems[MEMTYPE_RAM] = mem; // The RAM memory manager is the default
57
+
}
59
58
virtual~SimulatorController() { }
60
59
/**
61
60
* @brief Initialization function each implementation needs to call on
@@ -95,11 +94,14 @@ class SimulatorController {
95
94
* @param len the length of the accessed memory
96
95
* @param is_write \c true if memory is written, \c false if read
97
96
* @param instrPtr the address of the instruction causing the memory
97
+
* @param type The type of memory that was accessed.
98
+
* @param data The data which is stored at the memory location which was accessed. At most 8 bytes are supported, passed in the form of a concatenated 64 bit integer.
98
99
* access
99
100
*
100
101
* FIXME: should instrPtr be part of this interface?
0 commit comments