summaryrefslogtreecommitdiff
path: root/src/core/mem_map.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/mem_map.h')
-rw-r--r--src/core/mem_map.h39
1 files changed, 24 insertions, 15 deletions
diff --git a/src/core/mem_map.h b/src/core/mem_map.h
index 3c7810573..eed445046 100644
--- a/src/core/mem_map.h
+++ b/src/core/mem_map.h
@@ -9,6 +9,11 @@
9 9
10namespace Memory { 10namespace Memory {
11 11
12// TODO: It would be nice to eventually replace these with strong types that prevent accidental
13// conversion between each other.
14typedef u32 VAddr; ///< Represents a pointer in the ARM11 virtual address space.
15typedef u32 PAddr; ///< Represents a pointer in the physical address space.
16
12//////////////////////////////////////////////////////////////////////////////////////////////////// 17////////////////////////////////////////////////////////////////////////////////////////////////////
13 18
14enum { 19enum {
@@ -127,25 +132,25 @@ void Init();
127void Shutdown(); 132void Shutdown();
128 133
129template <typename T> 134template <typename T>
130inline void Read(T &var, const u32 addr); 135inline void Read(T &var, VAddr addr);
131 136
132template <typename T> 137template <typename T>
133inline void Write(u32 addr, const T data); 138inline void Write(VAddr addr, T data);
134 139
135u8 Read8(const u32 addr); 140u8 Read8(VAddr addr);
136u16 Read16(const u32 addr); 141u16 Read16(VAddr addr);
137u32 Read32(const u32 addr); 142u32 Read32(VAddr addr);
138 143
139u32 Read8_ZX(const u32 addr); 144u32 Read8_ZX(VAddr addr);
140u32 Read16_ZX(const u32 addr); 145u32 Read16_ZX(VAddr addr);
141 146
142void Write8(const u32 addr, const u8 data); 147void Write8(VAddr addr, u8 data);
143void Write16(const u32 addr, const u16 data); 148void Write16(VAddr addr, u16 data);
144void Write32(const u32 addr, const u32 data); 149void Write32(VAddr addr, u32 data);
145 150
146void WriteBlock(const u32 addr, const u8* data, const int size); 151void WriteBlock(VAddr addr, const u8* data, size_t size);
147 152
148u8* GetPointer(const u32 virtual_address); 153u8* GetPointer(VAddr virtual_address);
149 154
150/** 155/**
151 * Maps a block of memory on the heap 156 * Maps a block of memory on the heap
@@ -163,14 +168,18 @@ u32 MapBlock_Heap(u32 size, u32 operation, u32 permissions);
163 */ 168 */
164u32 MapBlock_HeapGSP(u32 size, u32 operation, u32 permissions); 169u32 MapBlock_HeapGSP(u32 size, u32 operation, u32 permissions);
165 170
166inline const char* GetCharPointer(const u32 address) { 171inline const char* GetCharPointer(const VAddr address) {
167 return (const char *)GetPointer(address); 172 return (const char *)GetPointer(address);
168} 173}
169 174
170/// Converts a physical address to virtual address 175/// Converts a physical address to virtual address
171u32 PhysicalToVirtualAddress(const u32 addr); 176VAddr PhysicalToVirtualAddress(PAddr addr);
172 177
173/// Converts a virtual address to physical address 178/// Converts a virtual address to physical address
174u32 VirtualToPhysicalAddress(const u32 addr); 179PAddr VirtualToPhysicalAddress(VAddr addr);
175 180
176} // namespace 181} // namespace
182
183// These are used often, so re-export then on the root namespace
184using Memory::VAddr;
185using Memory::PAddr;