Memory map

From WiiUBrew
Jump to navigation Jump to search

The Wii U has a variety of physical memory sources. There is the 2 GiB of DDR3 split into 4 chips (MEM2), 32 MiB of fast 1T SRAM (MEM1), and the old GX framebuffer (MEM0).

Start Address End Address Size Chip Notes
0x00000000 0x01FFFFFF 0x2000000 MEM1
MEM1-A: 0x00000000 to 0x00000FFF (0x1000)
MEM1-B: 0x00001000 to 0x01FFFFFF (0x1FFF000)
MEM1 foreground: 0x00000000 to 0x01FFFFFF (0x2000000)
Used by Cafe OS apps
0x08000000 0x0811FFFF 0x120000 MEM0
MEM0-A: 0x08000000 to 0x080FFFFF (0x100000)
MEM0-B: 0x08100000 to 0x0811FFFF (0x20000)
MEM0 foreground: 0x080C0000 to 0x0811FFFF (0x60000)
PPC kernel ancast image
0x08120000 0x081BFFFF 0xA0000 MEM0 IOSU kernel
0x081C0000 0x0827FFFF 0xC0000 MEM0 IOSU MCP process
0x08280000 0x082AFFFF 0x30000 MEM0 IOSU CRYPTO process
0x082C0000 0x082DFFFF 0x20000 MEM0 Reserved (IOSU)
0x0C000000 0x0C3FFFFF 0x400000 MMIO Espresso Registers (GX2/DSP/OTP)
0x0D000000 0x0D005FFF 0x6000 MMIO Latte registers (shared with Espresso)
0x0D006000 0x0D00FFFF 0xA000 MMIO Legacy registers (DI/SI/EXI/AI)
0x0D010000 0x0D01FFFF 0x10000 MMIO NAND registers
0x0D020000 0x0D02FFFF 0x10000 MMIO AES registers (has a virtual mapping at 0x0D820000)
0x0D030000 0x0D03FFFF 0x10000 MMIO SHA-1 registers (has a virtual mapping at 0x0D830000)
0x0D040000 0x0D04FFFF 0x10000 MMIO EHCI-0 registers
0x0D050000 0x0D05FFFF 0x10000 MMIO OHCI-0:0 registers
0x0D060000 0x0D06FFFF 0x10000 MMIO OHCI-0:1 registers
0x0D070000 0x0D07FFFF 0x10000 MMIO SDIO registers
0x0D080000 0x0D08FFFF 0x10000 MMIO SDIO registers (802.11 Wireless)
0x0D100000 0x0D10FFFF 0x10000 MMIO SDIO registers (eMMC)
0x0D110000 0x0D11FFFF 0x10000 MMIO SDIO registers (Toucan)
0x0D120000 0x0D12FFFF 0x10000 MMIO EHCI-1 registers
0x0D130000 0x0D13FFFF 0x10000 MMIO OHCI-1:0 registers
0x0D140000 0x0D14FFFF 0x10000 MMIO EHCI-2 registers
0x0D150000 0x0D15FFFF 0x10000 MMIO OHCI-2:0 registers
0x0D160000 0x0D16FFFF 0x10000 MMIO SATA registers
0x0D180000 0x0D18FFFF 0x10000 MMIO AESS registers (has a virtual mapping at 0x0D980000)
0x0D190000 0x0D19FFFF 0x10000 MMIO SHAS-1 registers (has a virtual mapping at 0x0D990000)
0x0D400000 0x0D40FFFF 0x10000 SRAM1 boot1 (mirrored in 0xFFF00000)
0x0D410000 0x0D41FFFF 0x10000 SRAM0 boot0 (mirrored in 0xFFFF0000)
0x0D800000 0x0D805FFF 0x6000 MMIO Latte registers
0x0D8B0000 0x0D8B3FFF 0x4000 MMIO AHMN registers
0x0D8B4000 0x0D8BFFFF 0xC000 MMIO Memory Controller registers
0x10000000 0x100FFFFF 0x100000 MEM2 boot1 warmboot PRSH/PRST
0x10100000 0x104CFFFF 0x3D0000 MEM2 IOSU USB process
0x10800000 0x11EDFFFF 0x16E0000 MEM2 IOSU FS process
0x11F00000 0x1215FFFF 0x260000 MEM2 IOSU PAD process
0x12300000 0x1288FFFF 0x590000 MEM2 IOSU NET process
0x12900000 0x12B6FFFF 0x270000 MEM2 IOSU ACP process
0x12BC0000 0x12EAFFFF 0x2F0000 MEM2 IOSU NSEC process
0x12EC0000 0x1358FFFF 0x6D0000 MEM2 IOSU NIM-BOSS process
0x13640000 0x1393FFFF 0x300000 MEM2 IOSU FPD process
0x13A40000 0x13B9FFFF 0x160000 MEM2 IOSU TEST process
0x13C00000 0x13C70000 0x70000 MEM2 IOSU AUXIL process
0x13CC0000 0x13D7FFFF 0xC0000 MEM2 IOSU BSP process
0x13D80000 0x13DBFFFF 0x40000 MEM2 IOSU MCP process (debug and recovery mode)
0x14000000 0x1CFFFFFF 0x9000000 MEM2
MEM2-A: 0x14000000 to 0x1CFFFFFF (0x9000000)
- Loader data: 0x1B900000 to 0x1B97FFFF (0x80000)
PPC region
The loader's data is allocated here
0x1D000000 0x1FAFFFFF 0x2B00000 MEM2 IOSU global heap
0x1FB00000 0x1FDFFFFF 0x300000 MEM2 IOSU global IOB (input/output block)
0x1FE00000 0x1FE3FFFF 0x40000 MEM2 MCP shared region (for IOSU)
0x1FE40000 0x1FFFFFFF 0x1C0000 MEM2 MCP setup region (launch, ramdisk and file system cache)
0x20000000 0x27FFFFFF 0x8000000 MEM2 RAMDISK
0x28000000 0xCFFFFFFF 0xA8000000 MEM2
MEM2-B: 0x28000000 to 0xCFFFFFFF (0xA8000000). The 0x10000000 vmem is mapped to the following areas depending on the RAMPID:
- Home Menu (RAMPID 5): 0x28000000 to 0x2FFFFFFF (0x8000000)
- root.rpx (RAMPID 1): 0x30000000 to 0x31FFFFFF (0x2000000)
- Cafe OS loader and libraries: 0x32000000 to 0x327FFFFF (0x800000)
- Error display (RAMPID 6): 0x33000000 to 0x33FFFFFF (0x1000000)
- Background app memory (RAMPID 4): 0x34000000 to 0x4FFFFFFF (0x1C000000)
- Foreground app memory (RAMPID 7): 0x50000000 to 0x8FFFFFFF (0x40000000)
- Extra app memory for devkits: 0x90000000 to 0xCFFFFFFF (0x40000000)
PPC region
Cafe OS loader, libraries and apps
0xFFC00000 0xFFE7FFFF 0x280000 UNK Used by Cafe OS (codegen and PPC kernel ancast image mirror)
0xFFF00000 0xFFF07FFF 0x8000 SRAM1 C2W (cafe2wii) boot heap (used to store the old Wii SEEPROM data)
0xFFFE0000 0xFFFE7FFF 0x8000 SRAM1 Mirror of SRAM1. Hai C2W uses this one for (some) Hai params instead of the former?
IOS80 also uses this one for SEEPROM data despite the data being written to the former.
0xFFFF0000 0xFFFFFFFF 0x10000 SRAM0 IOSU kernel SRAM / C2W (cafe2wii)