Changes

64 bytes added ,  02:20, 5 December 2012
Line 125: Line 125:  
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
!  Virtual Address
+
!  Virtual Address Base
 +
!  Physical Address Base
 
!  Region Max Size
 
!  Region Max Size
 
!  Description
 
!  Description
 
|-
 
|-
 
| 0x00100000 / 0x14000000
 
| 0x00100000 / 0x14000000
 +
|
 
| 0x03F00000
 
| 0x03F00000
 
| The [[ExeFS]]:/.code is loaded here, executables must be loaded to the 0x00100000 region when the exheader "special memory" flag is clear. The 0x03F00000-byte size restriction only applies when this flag is clear. Executables are usually loaded to 0x14000000 when the exheader "special memory" flag is set, however this address can be arbitrary.
 
| The [[ExeFS]]:/.code is loaded here, executables must be loaded to the 0x00100000 region when the exheader "special memory" flag is clear. The 0x03F00000-byte size restriction only applies when this flag is clear. Executables are usually loaded to 0x14000000 when the exheader "special memory" flag is set, however this address can be arbitrary.
 
|-
 
|-
 
| 0x08000000
 
| 0x08000000
 +
|
 
| 0x08000000
 
| 0x08000000
 
| Heap mapped by [[SVC|ControlMemory]]
 
| Heap mapped by [[SVC|ControlMemory]]
 
|-
 
|-
 
| 0x10000000-StackSize
 
| 0x10000000-StackSize
 +
|
 
| StackSize from process exheader
 
| StackSize from process exheader
 
| Stack for the main-thread, initialized by the ARM11 kernel. The StackSize from the exheader is usually 0x4000, therefore the stack-bottom is usually 0x0FFFC000. The stack for the other threads is normally located in the process .data section however this can be arbitrary.
 
| Stack for the main-thread, initialized by the ARM11 kernel. The StackSize from the exheader is usually 0x4000, therefore the stack-bottom is usually 0x0FFFC000. The stack for the other threads is normally located in the process .data section however this can be arbitrary.
 
|-
 
|-
 
| 0x10000000
 
| 0x10000000
 +
|
 
| 0x04000000
 
| 0x04000000
 
| Applications usually map this region for HID
 
| Applications usually map this region for HID
 
|-
 
|-
 
| 0x14000000
 
| 0x14000000
 +
|
 
| 0x08000000
 
| 0x08000000
 
| Can be mapped by [[SVC|ControlMemory]]
 
| Can be mapped by [[SVC|ControlMemory]]
 
|-
 
|-
 
| 0x1EC00000
 
| 0x1EC00000
 +
| 0x10100000
 
|  
 
|  
 
| [[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)
 
| [[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)
 
|-
 
|-
 
| 0x1FF80000
 
| 0x1FF80000
 +
|
 
| 0x1000
 
| 0x1000
 
| [[Configuration Memory]], all processes have access to this however write-permission to this page is specified by the exheader "Shared page writing" kernel flag.
 
| [[Configuration Memory]], all processes have access to this however write-permission to this page is specified by the exheader "Shared page writing" kernel flag.
 
|-
 
|-
 
| 0x1FF81000
 
| 0x1FF81000
 +
|
 
| 0x1000
 
| 0x1000
 
| Shared page, access to this is the same as 0x1FF80000.
 
| Shared page, access to this is the same as 0x1FF80000.