diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/mem_map.cpp | 3 | ||||
| -rw-r--r-- | src/core/mem_map.h | 1 | ||||
| -rw-r--r-- | src/core/mem_map_funcs.cpp | 10 | 
3 files changed, 12 insertions, 2 deletions
| diff --git a/src/core/mem_map.cpp b/src/core/mem_map.cpp index eea6c5bf1..a14e8303e 100644 --- a/src/core/mem_map.cpp +++ b/src/core/mem_map.cpp @@ -21,6 +21,7 @@ u8* g_heap                      = nullptr;   ///< Application heap (main memory)  u8* g_heap_linear               = nullptr;   ///< Linear heap  u8* g_vram                      = nullptr;   ///< Video memory (VRAM) pointer  u8* g_shared_mem                = nullptr;   ///< Shared memory +u8* g_dsp_mem                   = nullptr;   ///< DSP memory  u8* g_kernel_mem;                              ///< Kernel memory  static u8* physical_bootrom     = nullptr;   ///< Bootrom physical memory @@ -32,6 +33,7 @@ static u8* physical_fcram       = nullptr;   ///< Main physical memory (FCRAM)  static u8* physical_heap_gsp    = nullptr;   ///< GSP heap physical memory  static u8* physical_vram        = nullptr;   ///< Video physical memory (VRAM)  static u8* physical_shared_mem  = nullptr;   ///< Physical shared memory +static u8* physical_dsp_mem     = nullptr;   ///< Physical DSP memory  static u8* physical_kernel_mem;              ///< Kernel memory  // We don't declare the IO region in here since its handled by other means. @@ -41,6 +43,7 @@ static MemoryView g_views[] = {      {&g_heap,           &physical_fcram,        HEAP_VADDR,             HEAP_SIZE,          MV_IS_PRIMARY_RAM},      {&g_shared_mem,     &physical_shared_mem,   SHARED_MEMORY_VADDR,    SHARED_MEMORY_SIZE, 0},      {&g_system_mem,     &physical_system_mem,   SYSTEM_MEMORY_VADDR,    SYSTEM_MEMORY_SIZE, 0}, +    {&g_dsp_mem,        &physical_dsp_mem,      DSP_MEMORY_VADDR,       DSP_MEMORY_SIZE,    0},      {&g_kernel_mem,     &physical_kernel_mem,   KERNEL_MEMORY_VADDR,    KERNEL_MEMORY_SIZE, 0},      {&g_heap_linear,    &physical_heap_gsp,     HEAP_LINEAR_VADDR,      HEAP_LINEAR_SIZE,   0},  }; diff --git a/src/core/mem_map.h b/src/core/mem_map.h index a2ef9d3af..fad40ae0c 100644 --- a/src/core/mem_map.h +++ b/src/core/mem_map.h @@ -134,6 +134,7 @@ extern u8* g_heap;          ///< Application heap (main memory)  extern u8* g_vram;          ///< Video memory (VRAM)  extern u8* g_shared_mem;    ///< Shared memory  extern u8* g_kernel_mem;    ///< Kernel memory +extern u8* g_dsp_mem;       ///< DSP memory  extern u8* g_system_mem;    ///< System memory  extern u8* g_exefs_code;    ///< ExeFS:/.code is loaded here diff --git a/src/core/mem_map_funcs.cpp b/src/core/mem_map_funcs.cpp index fdf382ed6..97ef1c5a3 100644 --- a/src/core/mem_map_funcs.cpp +++ b/src/core/mem_map_funcs.cpp @@ -82,6 +82,10 @@ inline void Read(T &var, const VAddr vaddr) {      } else if ((vaddr >= CONFIG_MEMORY_VADDR)  && (vaddr < CONFIG_MEMORY_VADDR_END)) {          ConfigMem::Read<T>(var, vaddr); +    // DSP memory +    } else if ((vaddr >= DSP_MEMORY_VADDR)  && (vaddr < DSP_MEMORY_VADDR_END)) { +        var = *((const T*)&g_dsp_mem[vaddr - DSP_MEMORY_VADDR]); +      // VRAM      } else if ((vaddr >= VRAM_VADDR)  && (vaddr < VRAM_VADDR_END)) {          var = *((const T*)&g_vram[vaddr - VRAM_VADDR]); @@ -122,8 +126,10 @@ inline void Write(const VAddr vaddr, const T data) {      } else if ((vaddr >= VRAM_VADDR)  && (vaddr < VRAM_VADDR_END)) {          *(T*)&g_vram[vaddr - VRAM_VADDR] = data; -    //} else if ((vaddr & 0xFFF00000) == 0x1FF00000) { -    //    _assert_msg_(MEMMAP, false, "umimplemented write to DSP memory"); +    // DSP memory +    } else if ((vaddr >= DSP_MEMORY_VADDR)  && (vaddr < DSP_MEMORY_VADDR_END)) { +        *(T*)&g_dsp_mem[vaddr - DSP_MEMORY_VADDR] = data; +      //} else if ((vaddr & 0xFFFF0000) == 0x1FF80000) {      //    _assert_msg_(MEMMAP, false, "umimplemented write to Configuration Memory");      //} else if ((vaddr & 0xFFFFF000) == 0x1FF81000) { | 
