diff options
author | ShizZy <shizzy@6bit.net> | 2013-09-06 05:04:04 +0200 |
---|---|---|
committer | ShizZy <shizzy@6bit.net> | 2013-09-06 05:04:04 +0200 |
commit | 62d873da3ec77044d0135dbb2c6492eca29482fa (patch) | |
tree | 3a21f3df2e1784af68f2df5ac98ced6a73f43c20 /src/core/src/mem_map.h | |
parent | added core and mem_map files to the project (diff) | |
download | yuzu-62d873da3ec77044d0135dbb2c6492eca29482fa.tar yuzu-62d873da3ec77044d0135dbb2c6492eca29482fa.tar.gz yuzu-62d873da3ec77044d0135dbb2c6492eca29482fa.tar.bz2 yuzu-62d873da3ec77044d0135dbb2c6492eca29482fa.tar.lz yuzu-62d873da3ec77044d0135dbb2c6492eca29482fa.tar.xz yuzu-62d873da3ec77044d0135dbb2c6492eca29482fa.tar.zst yuzu-62d873da3ec77044d0135dbb2c6492eca29482fa.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/src/mem_map.h | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/src/core/src/mem_map.h b/src/core/src/mem_map.h index 8ef6e58a2..3251fc416 100644 --- a/src/core/src/mem_map.h +++ b/src/core/src/mem_map.h @@ -32,13 +32,34 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// +#define MEM_BOOTROM_SIZE 0x00010000 ///< Bootrom (super secret code/data @ 0x8000) size +#define MEM_MPCORE_PRIV_SIZE 0x00002000 ///< MPCore private memory region size +#define MEM_VRAM_SIZE 0x00600000 ///< VRAM size +#define MEM_DSP_SIZE 0x00080000 ///< DSP memory size +#define MEM_AXI_WRAM_SIZE 0x00080000 ///< AXI WRAM size +#define MEM_FCRAM_SIZE 0x08000000 ///< FCRAM size + +#define MEMORY_SIZE MEM_FCRAM_SIZE +#define MEMORY_MASK (MEM_FCRAM_SIZE - 1) ///< Main memory mask + +//////////////////////////////////////////////////////////////////////////////////////////////////// + namespace Memory { -extern u8* g_ram; -extern u8* g_vram; +// 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; -extern u32 g_memory_size; -extern u32 g_memory_mask; +// 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_ram; ///< Main memory +extern u8* g_vram; ///< Video memory (VRAM) void Init(); void Shutdown(); |