diff options
| author | 2014-05-07 21:04:55 -0400 | |
|---|---|---|
| committer | 2014-05-07 21:04:55 -0400 | |
| commit | 72622a1b5a13083e1b4eda3d4584bfa2f04dc55c (patch) | |
| tree | 1a230947b66fd7001c58f96a47f352532d64e4ec /src/core/mem_map_funcs.cpp | |
| parent | added kernel memory to mem_map (diff) | |
| download | yuzu-72622a1b5a13083e1b4eda3d4584bfa2f04dc55c.tar.gz yuzu-72622a1b5a13083e1b4eda3d4584bfa2f04dc55c.tar.xz yuzu-72622a1b5a13083e1b4eda3d4584bfa2f04dc55c.zip | |
- removed HLE mem "hack" and replaced with kernel mem region
- added a helper function for getting command buffer for services
- fixed bug where GSP DMA was incorrectly being done in DataSynchronizationBarrier (instead of gsp_TriggerCmdReqQueue)
Diffstat (limited to 'src/core/mem_map_funcs.cpp')
| -rw-r--r-- | src/core/mem_map_funcs.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/core/mem_map_funcs.cpp b/src/core/mem_map_funcs.cpp index 4812a8d22..8ab647714 100644 --- a/src/core/mem_map_funcs.cpp +++ b/src/core/mem_map_funcs.cpp | |||
| @@ -48,11 +48,9 @@ inline void _Read(T &var, const u32 addr) { | |||
| 48 | 48 | ||
| 49 | const u32 vaddr = _VirtualAddress(addr); | 49 | const u32 vaddr = _VirtualAddress(addr); |
| 50 | 50 | ||
| 51 | // Memory allocated for HLE use that can be addressed from the emulated application | 51 | // Kernel memory command buffer |
| 52 | // The primary use of this is sharing a commandbuffer between the HLE OS (syscore) and the LLE | 52 | if (vaddr >= KERNEL_MEMORY_VADDR && vaddr < KERNEL_MEMORY_VADDR_END) { |
| 53 | // core running the user application (appcore) | 53 | var = *((const T*)&g_kernel_mem[vaddr & KERNEL_MEMORY_MASK]); |
| 54 | if (vaddr >= HLE::CMD_BUFFER_ADDR && vaddr < HLE::CMD_BUFFER_ADDR_END) { | ||
| 55 | HLE::Read<T>(var, vaddr); | ||
| 56 | 54 | ||
| 57 | // Hardware I/O register reads | 55 | // Hardware I/O register reads |
| 58 | // 0x10XXXXXX- is physical address space, 0x1EXXXXXX is virtual address space | 56 | // 0x10XXXXXX- is physical address space, 0x1EXXXXXX is virtual address space |
| @@ -92,11 +90,9 @@ template <typename T> | |||
| 92 | inline void _Write(u32 addr, const T data) { | 90 | inline void _Write(u32 addr, const T data) { |
| 93 | u32 vaddr = _VirtualAddress(addr); | 91 | u32 vaddr = _VirtualAddress(addr); |
| 94 | 92 | ||
| 95 | // Memory allocated for HLE use that can be addressed from the emulated application | 93 | // Kernel memory command buffer |
| 96 | // The primary use of this is sharing a commandbuffer between the HLE OS (syscore) and the LLE | 94 | if (vaddr >= KERNEL_MEMORY_VADDR && vaddr < KERNEL_MEMORY_VADDR_END) { |
| 97 | // core running the user application (appcore) | 95 | *(T*)&g_kernel_mem[vaddr & KERNEL_MEMORY_MASK] = data; |
| 98 | if (vaddr >= HLE::CMD_BUFFER_ADDR && vaddr < HLE::CMD_BUFFER_ADDR_END) { | ||
| 99 | HLE::Write<T>(vaddr, data); | ||
| 100 | 96 | ||
| 101 | // Hardware I/O register writes | 97 | // Hardware I/O register writes |
| 102 | // 0x10XXXXXX- is physical address space, 0x1EXXXXXX is virtual address space | 98 | // 0x10XXXXXX- is physical address space, 0x1EXXXXXX is virtual address space |
| @@ -140,8 +136,12 @@ inline void _Write(u32 addr, const T data) { | |||
| 140 | u8 *GetPointer(const u32 addr) { | 136 | u8 *GetPointer(const u32 addr) { |
| 141 | const u32 vaddr = _VirtualAddress(addr); | 137 | const u32 vaddr = _VirtualAddress(addr); |
| 142 | 138 | ||
| 139 | // Kernel memory command buffer | ||
| 140 | if (vaddr >= KERNEL_MEMORY_VADDR && vaddr < KERNEL_MEMORY_VADDR_END) { | ||
| 141 | return g_kernel_mem + (vaddr & KERNEL_MEMORY_MASK); | ||
| 142 | |||
| 143 | // ExeFS:/.code is loaded here | 143 | // ExeFS:/.code is loaded here |
| 144 | if ((vaddr >= EXEFS_CODE_VADDR) && (vaddr < EXEFS_CODE_VADDR_END)) { | 144 | } else if ((vaddr >= EXEFS_CODE_VADDR) && (vaddr < EXEFS_CODE_VADDR_END)) { |
| 145 | return g_exefs_code + (vaddr & EXEFS_CODE_MASK); | 145 | return g_exefs_code + (vaddr & EXEFS_CODE_MASK); |
| 146 | 146 | ||
| 147 | // FCRAM - GSP heap | 147 | // FCRAM - GSP heap |