Difference between revisions of "Memory layout"
Jump to navigation
Jump to search
(Created page with "=Physical memory regions = {| class="wikitable" border="1" |- ! Address ! Size ! Description |- | 0x0 | 0x10000 | Bootrom (super secret code/data @ 0x8000) |- | 0x10000 | 0x...") |
|||
Line 32: | Line 32: | ||
| FCRAM | | FCRAM | ||
|} | |} | ||
+ | |||
+ | =ARM11 User-land memory regions= | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Virtual Address | ||
+ | ! Size | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x00100000 / 0x14000000 | ||
+ | | | ||
+ | | The [[ExeFS]]:/.code is usually loaded here, most executables are loaded to 0x00100000. | ||
+ | |- | ||
+ | | 0x08000000 | ||
+ | | | ||
+ | | Heap mapped by [[SVC|ControlMemory]] | ||
+ | |- | ||
+ | | 0x1EC00000 | ||
+ | | | ||
+ | | IO registers, the mapped IO pages which each process can access is specified in the [[NCCH#CXI|CXI]] exheader.(Applications normally don't have access to registers in this range) | ||
+ | |} | ||
+ | |||
+ | All executable pages are read-only, and data pages have the execute-never permission set. Normally .text from the loaded ExeFS:/.code is the only mapped executable memory. Executable [[RO Services|CROs]] can be loaded into memory, once loaded the CRO .text section memory page permissions are changed via [[SVC|ControlProcessMemory]] from RW- to R-X. |
Revision as of 06:53, 12 November 2012
Physical memory regions
Address | Size | Description |
---|---|---|
0x0 | 0x10000 | Bootrom (super secret code/data @ 0x8000) |
0x10000 | 0x10000 | Bootrom mirror |
0x10000000 | ? | IO memory |
0x1FF00000 | 0x80000 | DSP memory |
0x1FF80000 | 0x80000 | AXI WRAM |
0x20000000 | 0x8000000 | FCRAM |
ARM11 User-land memory regions
Virtual Address | Size | Description |
---|---|---|
0x00100000 / 0x14000000 | The ExeFS:/.code is usually loaded here, most executables are loaded to 0x00100000. | |
0x08000000 | Heap mapped by ControlMemory | |
0x1EC00000 | IO registers, the mapped IO pages which each process can access is specified in the CXI exheader.(Applications normally don't have access to registers in this range) |
All executable pages are read-only, and data pages have the execute-never permission set. Normally .text from the loaded ExeFS:/.code is the only mapped executable memory. Executable CROs can be loaded into memory, once loaded the CRO .text section memory page permissions are changed via ControlProcessMemory from RW- to R-X.