diff options
| author | 2017-04-30 17:13:53 -0700 | |
|---|---|---|
| committer | 2017-05-09 21:43:59 -0700 | |
| commit | d3db770cad11cdacd46c68112e0095eea23cb103 (patch) | |
| tree | c2646a82202c59689f1ba09a85657ad613322cea /src | |
| parent | Merge pull request #2696 from Subv/vfp_revert (diff) | |
| download | yuzu-d3db770cad11cdacd46c68112e0095eea23cb103.tar.gz yuzu-d3db770cad11cdacd46c68112e0095eea23cb103.tar.xz yuzu-d3db770cad11cdacd46c68112e0095eea23cb103.zip | |
Memory: Add constants for the n3DS additional RAM
This is 4MB of extra, separate memory that was added on the New 3DS.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/memory.cpp | 8 | ||||
| -rw-r--r-- | src/core/memory.h | 10 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 65e4bba85..b8438e490 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp | |||
| @@ -672,12 +672,14 @@ PAddr VirtualToPhysicalAddress(const VAddr addr) { | |||
| 672 | return addr - VRAM_VADDR + VRAM_PADDR; | 672 | return addr - VRAM_VADDR + VRAM_PADDR; |
| 673 | } else if (addr >= LINEAR_HEAP_VADDR && addr < LINEAR_HEAP_VADDR_END) { | 673 | } else if (addr >= LINEAR_HEAP_VADDR && addr < LINEAR_HEAP_VADDR_END) { |
| 674 | return addr - LINEAR_HEAP_VADDR + FCRAM_PADDR; | 674 | return addr - LINEAR_HEAP_VADDR + FCRAM_PADDR; |
| 675 | } else if (addr >= NEW_LINEAR_HEAP_VADDR && addr < NEW_LINEAR_HEAP_VADDR_END) { | ||
| 676 | return addr - NEW_LINEAR_HEAP_VADDR + FCRAM_PADDR; | ||
| 675 | } else if (addr >= DSP_RAM_VADDR && addr < DSP_RAM_VADDR_END) { | 677 | } else if (addr >= DSP_RAM_VADDR && addr < DSP_RAM_VADDR_END) { |
| 676 | return addr - DSP_RAM_VADDR + DSP_RAM_PADDR; | 678 | return addr - DSP_RAM_VADDR + DSP_RAM_PADDR; |
| 677 | } else if (addr >= IO_AREA_VADDR && addr < IO_AREA_VADDR_END) { | 679 | } else if (addr >= IO_AREA_VADDR && addr < IO_AREA_VADDR_END) { |
| 678 | return addr - IO_AREA_VADDR + IO_AREA_PADDR; | 680 | return addr - IO_AREA_VADDR + IO_AREA_PADDR; |
| 679 | } else if (addr >= NEW_LINEAR_HEAP_VADDR && addr < NEW_LINEAR_HEAP_VADDR_END) { | 681 | } else if (addr >= N3DS_EXTRA_RAM_VADDR && addr < N3DS_EXTRA_RAM_VADDR_END) { |
| 680 | return addr - NEW_LINEAR_HEAP_VADDR + FCRAM_PADDR; | 682 | return addr - N3DS_EXTRA_RAM_VADDR + N3DS_EXTRA_RAM_PADDR; |
| 681 | } | 683 | } |
| 682 | 684 | ||
| 683 | LOG_ERROR(HW_Memory, "Unknown virtual address @ 0x%08X", addr); | 685 | LOG_ERROR(HW_Memory, "Unknown virtual address @ 0x%08X", addr); |
| @@ -696,6 +698,8 @@ VAddr PhysicalToVirtualAddress(const PAddr addr) { | |||
| 696 | return addr - DSP_RAM_PADDR + DSP_RAM_VADDR; | 698 | return addr - DSP_RAM_PADDR + DSP_RAM_VADDR; |
| 697 | } else if (addr >= IO_AREA_PADDR && addr < IO_AREA_PADDR_END) { | 699 | } else if (addr >= IO_AREA_PADDR && addr < IO_AREA_PADDR_END) { |
| 698 | return addr - IO_AREA_PADDR + IO_AREA_VADDR; | 700 | return addr - IO_AREA_PADDR + IO_AREA_VADDR; |
| 701 | } else if (addr >= N3DS_EXTRA_RAM_PADDR && addr < N3DS_EXTRA_RAM_PADDR_END) { | ||
| 702 | return addr - N3DS_EXTRA_RAM_PADDR + N3DS_EXTRA_RAM_VADDR; | ||
| 699 | } | 703 | } |
| 700 | 704 | ||
| 701 | LOG_ERROR(HW_Memory, "Unknown physical address @ 0x%08X", addr); | 705 | LOG_ERROR(HW_Memory, "Unknown physical address @ 0x%08X", addr); |
diff --git a/src/core/memory.h b/src/core/memory.h index 903b58a22..802aa465e 100644 --- a/src/core/memory.h +++ b/src/core/memory.h | |||
| @@ -37,6 +37,12 @@ enum : PAddr { | |||
| 37 | VRAM_SIZE = 0x00600000, ///< VRAM size (6MB) | 37 | VRAM_SIZE = 0x00600000, ///< VRAM size (6MB) |
| 38 | VRAM_PADDR_END = VRAM_PADDR + VRAM_SIZE, | 38 | VRAM_PADDR_END = VRAM_PADDR + VRAM_SIZE, |
| 39 | 39 | ||
| 40 | /// New 3DS additional memory. Supposedly faster than regular FCRAM. Part of it can be used by | ||
| 41 | /// applications and system modules if mapped via the ExHeader. | ||
| 42 | N3DS_EXTRA_RAM_PADDR = 0x1F000000, | ||
| 43 | N3DS_EXTRA_RAM_SIZE = 0x00400000, ///< New 3DS additional memory size (4MB) | ||
| 44 | N3DS_EXTRA_RAM_PADDR_END = N3DS_EXTRA_RAM_PADDR + N3DS_EXTRA_RAM_SIZE, | ||
| 45 | |||
| 40 | /// DSP memory | 46 | /// DSP memory |
| 41 | DSP_RAM_PADDR = 0x1FF00000, | 47 | DSP_RAM_PADDR = 0x1FF00000, |
| 42 | DSP_RAM_SIZE = 0x00080000, ///< DSP memory size (512KB) | 48 | DSP_RAM_SIZE = 0x00080000, ///< DSP memory size (512KB) |
| @@ -81,6 +87,10 @@ enum : VAddr { | |||
| 81 | LINEAR_HEAP_SIZE = 0x08000000, | 87 | LINEAR_HEAP_SIZE = 0x08000000, |
| 82 | LINEAR_HEAP_VADDR_END = LINEAR_HEAP_VADDR + LINEAR_HEAP_SIZE, | 88 | LINEAR_HEAP_VADDR_END = LINEAR_HEAP_VADDR + LINEAR_HEAP_SIZE, |
| 83 | 89 | ||
| 90 | /// Maps 1:1 to New 3DS additional memory | ||
| 91 | N3DS_EXTRA_RAM_VADDR = 0x1E800000, | ||
| 92 | N3DS_EXTRA_RAM_VADDR_END = N3DS_EXTRA_RAM_VADDR + N3DS_EXTRA_RAM_SIZE, | ||
| 93 | |||
| 84 | /// Maps 1:1 to the IO register area. | 94 | /// Maps 1:1 to the IO register area. |
| 85 | IO_AREA_VADDR = 0x1EC00000, | 95 | IO_AREA_VADDR = 0x1EC00000, |
| 86 | IO_AREA_VADDR_END = IO_AREA_VADDR + IO_AREA_SIZE, | 96 | IO_AREA_VADDR_END = IO_AREA_VADDR + IO_AREA_SIZE, |