Line 185:
Line 185:
==Virtual Memory Map==
==Virtual Memory Map==
−
*0x01000000 - 0x01800000 '''Loader and system libraries'''
+
{| class="wikitable"
−
*0x0??????? - 0x10000000 '''App executable and libraries''' (start varies, but end is always 0x10000000)
+
|-
−
*0x10000000 - 0x50000000 '''Application/library data area''' (may be smaller)
+
! Virtual address range
−
*0xa0000000 - 0xe0000000 '''Overlay of application memory''' (used by loader?)
+
! Physical address range
−
*0xe0000000 - 0xe4000000 '''Some sort of hardware communication area'''
+
! Size
−
*0xefe00000 - 0xefe80000 '''Loader data area''' (only mapped when running loader)
+
! Userland memory permissions
−
*0xf4000000 - 0xf6000000 '''MEM1'''
+
! Kernel-mode memory permissions
−
*0xf6000000 - 0xf6800000 '''Unknown'''
+
! Description
−
*0xf8000000 - 0xfb000000 '''Read-only shared data (system fonts mostly)'''
+
|-
−
*0xfc000000 - 0xfc0c0000 '''{{hw|Processor Interface}}'''
+
| 0x01000000 - 0x01800000
−
*0xfc200000 - 0xfc280000 '''GX2 TCL registers'''
+
|
−
*0xfc280000 - 0xfc2a0000 '''DSP registers'''
+
| 0x800000
−
*0xfc2a0000 - 0xfc2c0000 '''GX2 FIFO space? (Radeon PKT3 sent here)'''
+
|
−
*0xfc320000 - 0xfd000000 '''Espresso OTP (and other stuff?)'''
+
|
−
*0xfd000000 - 0xfd?????? '''{{hw|Latte registers}}'''
+
| Loader and system libraries
−
*0xfd040250 - 0xfd046c00 '''I2C registers'''
+
|-
−
*0xfd046e00 - 0xfd060520 '''AI registers?'''
+
| 0x0??????? - 0x10000000
−
*0xff200000 - 0xff280000 '''Kernel heap'''
+
|
−
*0xffe00000 - 0xfff20000 '''Kernel ancast image'''
+
|
−
*0xffffffe0(?) - 0xfffffffc(?) '''Per-thread data (e.g. pointer to thread descriptor and thread queue)'''
+
|
+
|
+
| App executable and libraries (start varies, but end is always 0x10000000)
+
|-
+
| 0x10000000 - 0x50000000
+
|
+
| 0x40000000
+
|
+
|
+
| Application/library data area (may be smaller)
+
|-
+
| 0xa0000000 - 0xe0000000
+
|
+
| 0x40000000
+
|
+
|
+
| Overlay of application memory (used by loader?)
+
|-
+
| 0xe0000000 - 0xe4000000
+
| 0x14000000 - 0x18000000
+
| 0x04000000
+
|
+
|
+
| Some sort of hardware communication area
+
|-
+
| 0xefe00000 - 0xefe80000
+
|
+
|
+
|
+
|
+
| Loader data area (only mapped when running loader)
+
|-
+
| 0xf4000000 - 0xf6000000
+
| 0x00000000 - 0x02000000
+
| 0x02000000
+
|
+
|
+
| MEM1
+
|-
+
| 0xf6000000 - 0xf6800000
+
|
+
|
+
|
+
|
+
| Unknown
+
|-
+
| 0xf8000000 - 0xfb000000
+
|
+
|
+
|
+
|
+
| Read-only shared data (system fonts mostly)
+
|-
+
| 0xfc000000 - 0xfc0c0000
+
|
+
|
+
|
+
|
+
| {{hw|Processor Interface}}
+
|-
+
| 0xfc200000 - 0xfc280000
+
|
+
|
+
|
+
|
+
| GX2 TCL registers
+
|-
+
| 0xfc280000 - 0xfc2a0000
+
|
+
|
+
|
+
|
+
| DSP registers
+
|-
+
| 0xfc2a0000 - 0xfc2c0000
+
|
+
|
+
|
+
|
+
| GX2 FIFO space? (Radeon PKT3 sent here)
+
|-
+
| 0xfc320000 - 0xfd000000
+
|
+
|
+
|
+
|
+
| Espresso OTP (and other stuff?)
+
|-
+
| 0xfd000000 - 0xfd??????
+
|
+
|
+
|
+
|
+
| {{hw|Latte registers}}
+
|-
+
| 0xfd040250 - 0xfd046c00
+
|
+
|
+
|
+
|
+
| I2C registers
+
|-
+
| 0xfd046e00 - 0xfd060520
+
|
+
|
+
|
+
|
+
| AI registers?
+
|-
+
| 0xff200000 - 0xff280000
+
|
+
|
+
|
+
|
+
| Kernel heap
+
|-
+
| 0xffe00000 - 0xfff20000
+
|
+
|
+
|
+
|
+
| Kernel ancast image
+
|-
+
| 0xffffffe0(?) - 0xfffffffc(?)
+
|
+
|
+
|
+
|
+
| Per-thread data (e.g. pointer to thread descriptor and thread queue)
+
|}