Difference between revisions of "Memory map"
(Add physical base addresses.) |
|||
Line 3: | Line 3: | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Start Address''' | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Start Address''' | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''End Address''' | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''End Address''' | ||
+ | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Physical Address''' | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Size''' | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Size''' | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Description''' | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Description''' | ||
Line 9: | Line 10: | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000000 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000000 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x817FFFFF | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x817FFFFF | ||
+ | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000000 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 24 MB | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 24 MB | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | MEM1 Memory (Cached) | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | MEM1 Memory (Cached) | ||
Line 15: | Line 17: | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xC0000000 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xC0000000 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xC17FFFFF | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xC17FFFFF | ||
+ | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000000 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 24 MB | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 24 MB | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | MEM1 Memory (Uncached) | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | MEM1 Memory (Uncached) | ||
Line 21: | Line 24: | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x90000000 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x90000000 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x93FFFFFF | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x93FFFFFF | ||
+ | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x10000000 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 64 MB | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 64 MB | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | MEM2 Memory (Cached) | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | MEM2 Memory (Cached) | ||
Line 27: | Line 31: | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xD0000000 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xD0000000 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xD3FFFFFF | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xD3FFFFFF | ||
+ | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x10000000 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 64 MB | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 64 MB | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | MEM2 Memory (Uncached) | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | MEM2 Memory (Uncached) | ||
Line 33: | Line 38: | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xCD000000 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xCD000000 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xCD008000 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xCD008000 | ||
+ | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Hardware Registers | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Hardware Registers |
Revision as of 23:47, 14 August 2008
Start Address | End Address | Physical Address | Size | Description |
0x80000000 | 0x817FFFFF | 0x00000000 | 24 MB | MEM1 Memory (Cached) |
0xC0000000 | 0xC17FFFFF | 0x00000000 | 24 MB | MEM1 Memory (Uncached) |
0x90000000 | 0x93FFFFFF | 0x10000000 | 64 MB | MEM2 Memory (Cached) |
0xD0000000 | 0xD3FFFFFF | 0x10000000 | 64 MB | MEM2 Memory (Uncached) |
0xCD000000 | 0xCD008000 | Hardware Registers |
The IOS Heap range is 0x933E0000-0x93400000 it is shown in registers 0x80003130(Start), 0x80003130(End). The top of MEM2 memory is allocated to Starlet. You can access this memory by disabling memory protection via hardware registers in Starlet. (See Starlet Register List. TODO).
Broadway / IOS Global Memory Locations
Address | Size | Value | Description |
0x80000000 | 6 | 0x525350453031 | Game Code 'RSPE01' (Wii Sports) |
0x80000018 | 4 | 0x5D1C9EA3 | Wii Game ID |
0x80000020 | 4 | 0x0D15EA5E | Nintendo Standard Boot Code. |
0x80000024 | 4 | 0x00000001 | Unknown |
0x80000028 | 4 | 0x01800000 | Memory Size (Physical) 24MB |
0x8000002C | 4 | 0x00000023 | Production Board Model |
0x80000030 | 4 | 0x00000000 | Arena Low |
0x80000034 | 4 | 0x817FEC60 | Arena High |
0x80000038 | 4 | 0x817FEC60 | Start of FST (varies in all games) |
0x8000003C | 4 | 0x00001394 | Maximum FST Size (varies in all games) |
0x80000060 | 0x24 | Copyright code | Hook is PPC assembler used by Debugger |
0x800000EC | 4 | 0x81800000 | Dev Debugger Monitor Address (If present) |
0x800000F0 | 4 | 0x01800000 | Simulated Memory Size |
0x800000F4 | 4 | 0x00000000 | BI2 |
0x800000F8 | 4 | 0x0E7BE2C0 | Console Bus Speed |
0x800000FC | 4 | 0x2B73A840 | Console CPU Speed |
0x80001800 | 0x1800 | Unused Exception Vector area often used for loader stubs and reloaders as this area is never cleared or used. | |
0x800030F0 | 4 | 0x00000000 | DOL Execute Parameters |
0x80003130 | 8 | 0x933E0000, 0x93400000 | IOS Heap Range |
0x80003138 | 4 | 0x00000011 | Hollywood Version |
0x80003140 | 8 | 0x00090204,0x00062507 | IOS version |
0x80003158 | 4 | 0x0000FF16 | GDDR Vendor Code |
0x80003180 | 4 | 0x52535045 | Game ID 'RSPE' Wii Sports ID. If these 4 bytes don't match the ID at 80000000, offline mode in games is disabled. |
0x80003184 | 4 | 0x80000000 | Game ID address |
0x8000318C | 4 | 0x00000000 | Title Booted from NAND (Launch Code) |
0x80003190 | 4 | 0x00000000 | Title Booted from NAND (Return Code) |
0x80003400 | 0x100 | NAND boot vector (Broadway initialization code from nandloader) | |
0x80003F00 | 0x132c100 (~19.2MB) | Standard application executable area | |
0x81330000 | 0x4d0000 (~4.8MB) | Loader executable area |
Applications should use the 0x80003F00 - 0x81330000 area for executable code and data loaded as part of their ELF/DOL, while loaders should use from 0x81330000 onwards. Applications can use the loader area and MEM2 as data work space once they are running, but they should restrict the sections contained in the DOL or ELF to the executable area only, since MEM2 is reserved as work area for the loader at that time. To preserve "return to loader" functionality, applications should never use the 0x80001800-0x80003000 area.