IO Registers: Difference between revisions

No edit summary
m Fixed some stuff and added things we need to know
Line 94: Line 94:
|-style="border-top: double"
|-style="border-top: double"
| style="background: green" | Yes
| style="background: green" | Yes
| ?
|?
| [[CONFIG Registers]]
| [[CONFIG Registers]]
| 0x10010000
| 0x10010000
Line 101: Line 101:
|-
|-
| style="background: green" | Yes
| style="background: green" | Yes
| ?
|?
| [[CONFIG Registers]]
| [[CONFIG Registers]]
| 0x10011000
| 0x10011000
Line 108: Line 108:
|-
|-
| style="background: green" | Yes
| style="background: green" | Yes
| ?
|?
| ?
|?
| 0x10012000
| 0x10012000
| Kernel9, NewKernel9Loader
| Kernel9, NewKernel9Loader
Line 115: Line 115:
|-
|-
| style="background: green" | Yes
| style="background: green" | Yes
| ?
|?
| ?
|?
| 0x10018000
| 0x10018000
| TwlProcess9
| TwlProcess9
Line 122: Line 122:
|-style="border-top: double"
|-style="border-top: double"
| style="background: green" | Yes
| style="background: green" | Yes
| ?
|?
|  
|?
| 0x10100000
| 0x10100000
|
|?
|  
|?
|-
|-
| style="background: green" | Yes
| style="background: green" | Yes
Line 151: Line 151:
| style="background: green" | Yes
| style="background: green" | Yes
| A11/A9
| A11/A9
| ?
|?
| 0x10110000
| 0x10110000
|
|?
|  
|?
|-
|-
| style="background: green" | Yes
| style="background: green" | Yes
| A11/A9
| A11/A9
| ?
|?
| 0x10111000
| 0x10111000
| TwlBg
| TwlBg
Line 179: Line 179:
| style="background: green" | Yes
| style="background: green" | Yes
| A11/A9
| A11/A9
| ?
|?
| 0x10122000
| 0x10122000
| [[NWM Services]]
| [[NWM Services]]
| WIFI ?
| WIFI?
|-
|-
| style="background: green" | Yes
| style="background: green" | Yes
| A11/A9
| A11/A9
| ?
|?
| 0x10123000
| 0x10123000
| [[NWM Services]]
| [[NWM Services]]
| WIFI ?
| WIFI?
|-style="border-top: double"
|-style="border-top: double"
| style="background: red" | No
| style="background: red" | No
Line 333: Line 333:
| style="background: green" | Yes
| style="background: green" | Yes
| A11/A9
| A11/A9
|  
|?
| 0x10172000
| 0x10172000
|
|
Line 340: Line 340:
| style="background: green" | Yes
| style="background: green" | Yes
| A11/A9
| A11/A9
|
|?
| 0x10173000
| 0x10173000
|
|
Line 356: Line 356:
| [[MP Registers]]
| [[MP Registers]]
| 0x10175000
| 0x10175000
|
|?
| NTR WIFI RAM
| NTR WIFI RAM
|-
|-
Line 363: Line 363:
|  [[MP Registers]]
|  [[MP Registers]]
| 0x10176000
| 0x10176000
|  
|?
| NTR WIFI Registers (mirror)
| NTR WIFI Registers (mirror)
|-
|-
Line 370: Line 370:
|  [[MP Registers]]
|  [[MP Registers]]
| 0x10177000
| 0x10177000
|  
|?
| NTR WIFI Registers (mirror)
| NTR WIFI Registers (mirror)
|-
|-
Line 380: Line 380:
| NTR WIFI WS1 Region
| NTR WIFI WS1 Region
|-style="border-top: double"
|-style="border-top: double"
| style="background: orange" | ?
| style="background: orange" |?
| A11
| A11
| CDMA
| CDMA
| 0x10200000
| 0x10200000
| Boot11, Kernel11
| Boot11, Kernel11
| On Old3DS this is [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0424d/index.html CoreLink™ DMA-330]. On New3DS it is unknown what this is.
| On old 3DS this is [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0424d/index.html CoreLink™ DMA-330]. On the New 3DS it is unknown what this is.
|-
|-
| style="background: green" | Yes
| style="background: green" | Yes
| A11
| A11
| ?
|?
| 0x10202000
| 0x10202000
| TwlBg, Kernel11, [[GSP Services]]
| TwlBg, Kernel11, [[GSP Services]]
Line 401: Line 401:
|  
|  
|-
|-
|  style="background: orange" | ?
|  style="background: orange" |?
| A11
| A11
| CDMA
| CDMA
| 0x10206000
| 0x10206000
| NewKernel11
| NewKernel11
| CDMA was moved here on New3DS. [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0424d/index.html CoreLink™ DMA-330].
| CDMA was moved here on New 3DS. [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0424d/index.html CoreLink™ DMA-330].
|-
|-
|  style="background: orange" | ?
|  style="background: orange" |?
| A11
| A11
| [[MVD Registers]]
| [[MVD Registers]]
| 0x10207000
| 0x10207000
| [[MVD Services]]
| [[MVD Services]]
| New3DS only?
| New 3DS only?
|-
|-
| style="background: green" | Yes
| style="background: green" | Yes
Line 427: Line 427:
| 0x10300000-0x10400000
| 0x10300000-0x10400000
|
|
| Mirror of 0x10100000-0x10200000 (faster bus?), CDMA wants these addr's
| Mirror of 0x10100000-0x10200000 (faster bus?), CDMA wants these addresses
|-style="border-top: double"
|-style="border-top: double"
| style="background: green" | Yes
| style="background: green" | Yes
Line 444: Line 444:
|}
|}


IO registers starting at physical address 0x10200000 are not accessible from the ARM9(which includes all LCD/GPU registers).
IO registers starting at physical address 0x10200000 are not accessible from the ARM9 (which includes all LCD/GPU registers).


ARM11 kernel virtual address mappings for these registers varies for different builds. For ARM11 user mode applications you have:
ARM11 kernel virtual address mappings for these registers varies for different builds. For ARM11 user mode applications you have:
Line 450: Line 450:


=0x10012000=
=0x10012000=
Keys seem to be stored here? Access to this region is disabled once the ARM9 writes 0x2 to [[CONFIG|REG_SYSPROT9]]. Before writing that bit, the ARM9 copies the low u32 for the TWL keydata to +0x100(and high u32 keydata to +0x104 with New3DS). On devunits([[CONFIG|UNITINFO]]!=0) ARM9 uses the first 8-bytes from 0x10012000 for the TWL keydata.
Keys seem to be stored here? Access to this region is disabled once the ARM9 writes 0x2 to [[CONFIG|REG_SYSPROT9]]. Before writing that bit, the ARM9 copies the low u32 for the TWL keydata to +0x100 (and high u32 keydata to +0x104 with the New 3DS). On development units ([[CONFIG|UNITINFO]]!=0) ARM9 uses the first 8-bytes from 0x10012000 for the TWL keydata.


Originally the above TWL keyinit + region disable was done by Kernel9. However, with the [[New_3DS]] FIRM ARM9 binary this is now done in the [[FIRM]] ARM9 binary loader, which also uses the 0x10012000 region for key generation.
Originally the above TWL keyinit + region disable was done by Kernel9. However, with the [[New_3DS]] FIRM ARM9 binary this is now done in the [[FIRM]] ARM9 binary loader, which also uses the 0x10012000 region for key generation.