mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	Common: Remove mem_arena.cpp/h
It is superfluous for Citra. (It's only really necessary if you're doing JIT. We were using it but not taking any advantage from it.) This should make 32-bit builds work again.
This commit is contained in:
		
							parent
							
								
									d9df5b575a
								
							
						
					
					
						commit
						3396f352cb
					
				
					 5 changed files with 31 additions and 560 deletions
				
			
		|  | @ -2,10 +2,8 @@ | |||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "common/common_funcs.h" | ||||
| #include "common/common_types.h" | ||||
| #include "common/logging/log.h" | ||||
| #include "common/mem_arena.h" | ||||
| 
 | ||||
| #include "core/mem_map.h" | ||||
| 
 | ||||
|  | @ -13,100 +11,51 @@ | |||
| 
 | ||||
| namespace Memory { | ||||
| 
 | ||||
| u8* g_base;                     ///< The base pointer to the auto-mirrored arena.
 | ||||
| u8* g_exefs_code;  ///< ExeFS:/.code is loaded here
 | ||||
| u8* g_system_mem;  ///< System memory
 | ||||
| u8* g_heap;        ///< Application heap (main memory)
 | ||||
| u8* g_heap_linear; ///< Linear heap
 | ||||
| u8* g_vram;        ///< Video memory (VRAM) pointer
 | ||||
| u8* g_shared_mem;  ///< Shared memory
 | ||||
| u8* g_dsp_mem;     ///< DSP memory
 | ||||
| u8* g_kernel_mem;  ///< Kernel memory
 | ||||
| 
 | ||||
| static MemArena arena;          ///< The MemArena class
 | ||||
| namespace { | ||||
| 
 | ||||
| u8* g_exefs_code;               ///< ExeFS:/.code is loaded here
 | ||||
| u8* g_system_mem;               ///< System memory
 | ||||
| u8* g_heap;                     ///< Application heap (main memory)
 | ||||
| u8* g_heap_linear;              ///< Linear heap
 | ||||
| u8* g_vram;                     ///< Video memory (VRAM) pointer
 | ||||
| u8* g_shared_mem;               ///< Shared memory
 | ||||
| u8* g_dsp_mem;                  ///< DSP memory
 | ||||
| u8* g_kernel_mem;               ///< Kernel memory
 | ||||
| 
 | ||||
| static u8* physical_bootrom;    ///< Bootrom physical memory
 | ||||
| static u8* uncached_bootrom; | ||||
| 
 | ||||
| static u8* physical_exefs_code; ///< Phsical ExeFS:/.code is loaded here
 | ||||
| static u8* physical_system_mem; ///< System physical memory
 | ||||
| static u8* physical_fcram;      ///< Main physical memory (FCRAM)
 | ||||
| static u8* physical_heap_gsp;   ///< GSP heap physical memory
 | ||||
| static u8* physical_vram;       ///< Video physical memory (VRAM)
 | ||||
| static u8* physical_shared_mem; ///< Physical shared memory
 | ||||
| static u8* physical_dsp_mem;    ///< 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.
 | ||||
| static MemoryView g_views[] = { | ||||
|     {&g_exefs_code,     &physical_exefs_code,   EXEFS_CODE_VADDR,       EXEFS_CODE_SIZE,    0}, | ||||
|     {&g_vram,           &physical_vram,         VRAM_VADDR,             VRAM_SIZE,          0}, | ||||
|     {&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}, | ||||
| struct MemoryArea { | ||||
|     u8** ptr; | ||||
|     size_t size; | ||||
| }; | ||||
| 
 | ||||
| /*static MemoryView views[] =
 | ||||
| { | ||||
|     {&m_pScratchPad, &m_pPhysicalScratchPad,  0x00010000, SCRATCHPAD_SIZE, 0}, | ||||
|     {NULL,           &m_pUncachedScratchPad,  0x40010000, SCRATCHPAD_SIZE, MV_MIRROR_PREVIOUS}, | ||||
|     {&m_pVRAM,       &m_pPhysicalVRAM,        0x04000000, 0x00800000, 0}, | ||||
|     {NULL,           &m_pUncachedVRAM,        0x44000000, 0x00800000, MV_MIRROR_PREVIOUS}, | ||||
|     {&m_pRAM,        &m_pPhysicalRAM,         0x08000000, g_MemorySize, MV_IS_PRIMARY_RAM},    // only from 0x08800000 is it usable (last 24 megs)
 | ||||
|     {NULL,           &m_pUncachedRAM,         0x48000000, g_MemorySize, MV_MIRROR_PREVIOUS | MV_IS_PRIMARY_RAM}, | ||||
|     {NULL,           &m_pKernelRAM,           0x88000000, g_MemorySize, MV_MIRROR_PREVIOUS | MV_IS_PRIMARY_RAM}, | ||||
| // We don't declare the IO regions in here since its handled by other means.
 | ||||
| static MemoryArea memory_areas[] = { | ||||
|     {&g_exefs_code,  EXEFS_CODE_SIZE   }, | ||||
|     {&g_vram,        VRAM_SIZE         }, | ||||
|     {&g_heap,        HEAP_SIZE         }, | ||||
|     {&g_shared_mem,  SHARED_MEMORY_SIZE}, | ||||
|     {&g_system_mem,  SYSTEM_MEMORY_SIZE}, | ||||
|     {&g_dsp_mem,     DSP_MEMORY_SIZE   }, | ||||
|     {&g_kernel_mem,  KERNEL_MEMORY_SIZE}, | ||||
|     {&g_heap_linear, HEAP_LINEAR_SIZE  }, | ||||
| }; | ||||
| 
 | ||||
|     // TODO: There are a few swizzled mirrors of VRAM, not sure about the best way to
 | ||||
|     // implement those.
 | ||||
| };*/ | ||||
| 
 | ||||
| static const int kNumMemViews = sizeof(g_views) / sizeof(MemoryView);    ///< Number of mem views
 | ||||
| } | ||||
| 
 | ||||
| void Init() { | ||||
|     int flags = 0; | ||||
| 
 | ||||
|     for (size_t i = 0; i < ARRAY_SIZE(g_views); i++) { | ||||
|         if (g_views[i].flags & MV_IS_PRIMARY_RAM) | ||||
|             g_views[i].size = FCRAM_SIZE; | ||||
|     for (MemoryArea& area : memory_areas) { | ||||
|         *area.ptr = new u8[area.size]; | ||||
|     } | ||||
| 
 | ||||
|     g_base = MemoryMap_Setup(g_views, kNumMemViews, flags, &arena); | ||||
|     MemBlock_Init(); | ||||
| 
 | ||||
|     LOG_DEBUG(HW_Memory, "initialized OK, RAM at %p (mirror at 0 @ %p)", g_heap, | ||||
|         physical_fcram); | ||||
|     LOG_DEBUG(HW_Memory, "initialized OK, RAM at %p", g_heap); | ||||
| } | ||||
| 
 | ||||
| void Shutdown() { | ||||
|     u32 flags = 0; | ||||
|     MemoryMap_Shutdown(g_views, kNumMemViews, flags, &arena); | ||||
|     arena.ReleaseSpace(); | ||||
|     MemBlock_Shutdown(); | ||||
| 
 | ||||
|     g_base = nullptr; | ||||
|     g_exefs_code = nullptr; | ||||
|     g_system_mem = nullptr; | ||||
|     g_heap = nullptr; | ||||
|     g_heap_linear = nullptr; | ||||
|     g_vram = nullptr; | ||||
|     g_shared_mem = nullptr; | ||||
|     g_dsp_mem = nullptr; | ||||
|     g_kernel_mem = nullptr; | ||||
| 
 | ||||
|     physical_bootrom = nullptr; | ||||
|     uncached_bootrom = nullptr; | ||||
|     physical_exefs_code = nullptr; | ||||
|     physical_system_mem = nullptr; | ||||
|     physical_fcram = nullptr; | ||||
|     physical_heap_gsp = nullptr; | ||||
|     physical_vram = nullptr; | ||||
|     physical_shared_mem = nullptr; | ||||
|     physical_dsp_mem = nullptr; | ||||
|     physical_kernel_mem = nullptr; | ||||
|     for (MemoryArea& area : memory_areas) { | ||||
|         delete[] *area.ptr; | ||||
|         *area.ptr = nullptr; | ||||
|     } | ||||
| 
 | ||||
|     LOG_DEBUG(HW_Memory, "shutdown OK"); | ||||
| } | ||||
|  |  | |||
|  | @ -105,18 +105,6 @@ struct MemoryBlock { | |||
| 
 | ||||
| ////////////////////////////////////////////////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| // Base is a pointer to the base of the memory map. Yes, some MMU tricks
 | ||||
| // are used to set up a full GC or Wii memory map in process memory.  on
 | ||||
| // 32-bit, you have to mask your offsets with 0x3FFFFFFF. This means that
 | ||||
| // some things are mirrored too many times, but eh... it works.
 | ||||
| 
 | ||||
| // In 64-bit, this might point to "high memory" (above the 32-bit limit),
 | ||||
| // so be sure to load it into a 64-bit register.
 | ||||
| extern u8 *g_base; | ||||
| 
 | ||||
| // These are guaranteed to point to "low memory" addresses (sub-32-bit).
 | ||||
| // 64-bit: Pointers to low-mem (sub-0x10000000) mirror
 | ||||
| // 32-bit: Same as the corresponding physical/virtual pointers.
 | ||||
| extern u8* g_heap_linear;   ///< Linear heap (main memory)
 | ||||
| extern u8* g_heap;          ///< Application heap (main memory)
 | ||||
| extern u8* g_vram;          ///< Video memory (VRAM)
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue