T-EMU  2
The Terma Emulator
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
Memory.h
Go to the documentation of this file.
1 #ifndef TEMU_MEMORY_IF_H
2 #define TEMU_MEMORY_IF_H
3 
5 
6 #include <stdint.h>
7 
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 typedef enum {
17 
28 typedef struct temu_MemTransaction {
29  uint64_t Va;
30  uint64_t Pa;
31 
35  uint64_t Value;
36 
44  uint8_t Size;
45 
50  uint64_t Offset;
59  void *Initiator;
66  void *Page;
67  uint64_t Cycles;
69 
72 typedef struct temu_MemAccessIface {
75  void (*fetch)(void *Obj, temu_MemTransaction *Mt);
76 
78  void (*read)(void *Obj, temu_MemTransaction *Mt);
79 
81  void (*write)(void *Obj, temu_MemTransaction *Mt);
83 
84 OBJSYS_OBJ_TYPE(temu_MemAccess);
85 
99 
100 typedef struct temu_MemoryIface {
101  void (*readBytes)(void *Obj, void *Dest, uint64_t Offs, uint32_t Size, int Swap);
102  void (*writeBytes)(void *Obj, uint64_t Offs, uint32_t Size, void *Src, int Swap);
104 
105 OBJSYS_OBJ_TYPE(temu_Memory);
106 
107 
109 
119 typedef enum {
121  teMA_WatchRead = 1 << 1,
122  teMA_WatchWrite = 1 << 2,
123  teMA_Upset = 1 << 3,
124  teMA_Faulty = 1 << 4,
125  teMA_User1 = 1 << 5,
126  teMA_User2 = 1 << 6,
127  teMA_User3 = 1 << 7,
129 
134 typedef struct temu_MemoryMapIface {
135  void (*map)(void *Obj, uint64_t Addr, uint64_t Len, temu_MemoryKind Type);
136  void (*mapDevice)(void *Obj, uint64_t Addr, uint64_t Len, void *Device);
137  void (*setAttribute)(void *Obj, uint64_t Addr, uint64_t Len, temu_MemoryAttr Attr);
138  void (*clearAttribute)(void *Obj, uint64_t Addr, uint64_t Len, temu_MemoryAttr Attr);
139  void (*clearAttributes)(void *Obj, uint64_t Addr, uint64_t Len);
141 
142 OBJSYS_OBJ_TYPE(temu_MemoryMap);
143 
152 extern "C" void
153 temu_mapMemorySpace(void *Obj, uint64_t Addr, uint64_t Len, void *MemObj);
154 
155 
156 
157 
166 extern "C" void
167 temu_setMemAttr(void *Obj, uint64_t Addr, uint64_t Len, temu_MemoryAttr Attr);
168 
169 
177 extern "C" void
178 temu_clearMemAttr(void *Obj, uint64_t Addr, uint64_t Len, temu_MemoryAttr Attr);
179 
180 #ifdef __cplusplus
181 }
182 #endif
183 
184 #endif /* ! TEMU_MEMORY_IF_H */
void(* mapDevice)(void *Obj, uint64_t Addr, uint64_t Len, void *Device)
Definition: Memory.h:136
void(* write)(void *Obj, temu_MemTransaction *Mt)
Function called on writes.
Definition: Memory.h:81
uint64_t Pa
64 bit physical address
Definition: Memory.h:30
void(* read)(void *Obj, temu_MemTransaction *Mt)
Function called on reads.
Definition: Memory.h:78
uint8_t Size
Definition: Memory.h:44
struct temu_MemoryMapIface temu_MemoryMapIface
Single event upset.
Definition: Memory.h:123
struct temu_MemoryIface temu_MemoryIface
User definable.
Definition: Memory.h:127
void(* map)(void *Obj, uint64_t Addr, uint64_t Len, temu_MemoryKind Type)
Definition: Memory.h:135
#define OBJSYS_OBJ_TYPE(N)
Definition: Objsys.h:74
void(* clearAttributes)(void *Obj, uint64_t Addr, uint64_t Len)
Definition: Memory.h:139
User definable.
Definition: Memory.h:125
void(* setAttribute)(void *Obj, uint64_t Addr, uint64_t Len, temu_MemoryAttr Attr)
Definition: Memory.h:137
void temu_setMemAttr(void *Obj, uint64_t Addr, uint64_t Len, temu_MemoryAttr Attr)
void(* readBytes)(void *Obj, void *Dest, uint64_t Offs, uint32_t Size, int Swap)
Definition: Memory.h:101
uint64_t Value
Definition: Memory.h:35
Read watchpoint set.
Definition: Memory.h:121
uint64_t Cycles
Cycle cost for memory access (initialised to 0)
Definition: Memory.h:67
temu_MemoryKind
Definition: Memory.h:12
Write watchpoint set.
Definition: Memory.h:122
void(* fetch)(void *Obj, temu_MemTransaction *Mt)
Definition: Memory.h:75
temu_MemoryAttr
Memory attribute enumeration.
Definition: Memory.h:119
void temu_mapMemorySpace(void *Obj, uint64_t Addr, uint64_t Len, void *MemObj)
void temu_clearMemAttr(void *Obj, uint64_t Addr, uint64_t Len, temu_MemoryAttr Attr)
Breakpoint set.
Definition: Memory.h:120
struct temu_MemTransaction temu_MemTransaction
void * Initiator
Definition: Memory.h:59
User definable.
Definition: Memory.h:126
struct temu_MemAccessIface temu_MemAccessIface
void(* writeBytes)(void *Obj, uint64_t Offs, uint32_t Size, void *Src, int Swap)
Definition: Memory.h:102
uint64_t Offset
Definition: Memory.h:50
uint64_t Va
64 bit virtual for unified 32/64 bit interface.
Definition: Memory.h:29
Multiple event upset / uncorrectable.
Definition: Memory.h:124
void(* clearAttribute)(void *Obj, uint64_t Addr, uint64_t Len, temu_MemoryAttr Attr)
Definition: Memory.h:138