Memory layout: Difference between revisions
Created page with "=Physical memory regions = {| class="wikitable" border="1" |- ! Address ! Size ! Description |- | 0x0 | 0x10000 | Bootrom (super secret code/data @ 0x8000) |- | 0x10000 | 0x..." |
No edit summary |
||
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. |