Memory layout: Difference between revisions

Dazzozo (talk | contribs)
Neobrain (talk | contribs)
Reordering
Line 1: Line 1:
=ARM11 Physical memory regions =
= Physical Memory =
 
== ARM11 ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 69: Line 71:
|}
|}


==0x17E10000==
===0x17E10000===
The 32bit register at 0x17E10000+0x100 only has bit0 set when, on New3DS, [[PTMSYSM:ConfigureNew3DSCPU]] was used with bit1 set for the input value(the L2 cache flag). All other bits in this register are normally all-zero. Therefore: bit0 set = new cache hardware enabled, clear = new cache hardware disabled(this bit is how the ARM11-kernel checks whether the additional cache hw is enabled).
The 32bit register at 0x17E10000+0x100 only has bit0 set when, on New3DS, [[PTMSYSM:ConfigureNew3DSCPU]] was used with bit1 set for the input value(the L2 cache flag). All other bits in this register are normally all-zero. Therefore: bit0 set = new cache hardware enabled, clear = new cache hardware disabled(this bit is how the ARM11-kernel checks whether the additional cache hw is enabled).


Line 81: Line 83:
* Clears bit0 in 32bit register 0x17E10000+0x100.
* Clears bit0 in 32bit register 0x17E10000+0x100.


=ARM9 Physical memory regions =
=== 0x1F000000 ([[New_3DS]]-only) ===
This area is used by [[QTM Services]](starting at offset 0x200000, size 0x180000). This area is not accessible to the GPU on the old 3DS. The old 3DS and New 3DS GSP module has vaddr->physaddr conversion code for this entire region. On the New 3DS, only the first 0x200000-bytes (half of this memory) are accessible to the GPU.
 
== ARM9 ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 155: Line 160:
|}
|}


==ARM9 MPU regions==
==ARM9 MPU Setup==
For the below instruction permissions: RO = memory is executable, while None = not-executable.
For the below instruction permissions: RO = memory is executable, while None = not-executable.


Line 550: Line 555:
0x01FFFC00 size 0x100-bytes starting with [[9.5.0-22|9.5.0-X]] is the FIRM header used during FIRM-launching.
0x01FFFC00 size 0x100-bytes starting with [[9.5.0-22|9.5.0-X]] is the FIRM header used during FIRM-launching.
|}
|}
=[[New_3DS]] physical 0x1F000000 memory=
This area is used by [[QTM Services]](starting at offset 0x200000, size 0x180000). This area is not accessible to the GPU on the old 3DS. The old 3DS and New 3DS GSP module has vaddr->physaddr conversion code for this entire region. On the New 3DS, only the first 0x200000-bytes (half of this memory) are accessible to the GPU.


=Memory map by firmware=
=Memory map by firmware=