Difference between revisions of "IO Registers"
Jump to navigation
Jump to search
Line 111: | Line 111: | ||
| ? | | ? | ||
| 0x10012000 | | 0x10012000 | ||
− | | | + | | A9 |
| | | | ||
|- | |- | ||
Line 475: | Line 475: | ||
ARM11 kernel virtual address mappings for these registers varies for different builds. | ARM11 kernel virtual address mappings for these registers varies for different builds. | ||
+ | |||
+ | =0x10012000= | ||
+ | Keys seem to be stored here? Access to this region is disabled once Kernel9 crt0 writes 0x2 to [[CONFIG|REG_SYSPROT9]]. Before writing that bit, Kernel9 copies the low u32 for the TWL keydata to +0x100. On devunits([[CONFIG|UNITINFO]]!=0) Kernel9 uses the first 8-bytes from 0x10012000 for the TWL keydata. | ||
+ | |||
+ | This region is also used by the [[New_3DS]] FIRM loader at the end of the [[FIRM]] ARM9 binary. |
Revision as of 23:59, 7 October 2014
Overview
Old3DS | A9/A11 | Category | Physical address start | Used by | Comments |
---|---|---|---|---|---|
Yes | A9 | CONFIG Registers | 0x10000000 | Boot9, Process9 | |
Yes | A9 | IRQ Registers | 0x10001000 | Boot9, Process9, Kernel9 | |
Yes | A9 | NDMA Registers | 0x10002000 | Boot9, Process9 | |
Yes | A9 | TIMER Registers | 0x10003000 | Boot9, Process9 | |
Yes | A9 | CTRCARD Registers | 0x10004000 / 0x10005000 | Process9 | |
Yes | A9 | EMMC Registers | 0x10006000 / 0x10007000 | Boot9, Process9 | 0x10007000 is apparently not used on retail |
Yes | A9 | PXI Registers | 0x10008000 | Boot9, Process9 | |
Yes | A9 | AES Registers | 0x10009000 | Boot9, Process9 | |
Yes | A9 | SHA Registers | 0x1000A000 | Boot9, Process9 | |
Yes | A9 | RSA Registers | 0x1000B000 | Boot9, Process9 | |
Yes | A9 | XDMA Registers | 0x1000C000 | Boot9, Kernel9 | CoreLink™ DMA-330. Info |
Yes | A9 | SPICARD Registers | 0x1000D800 | Process9 | |
Yes | ? | CONFIG Registers | 0x10010000 | Process9 | |
Yes | ? | CONFIG Registers | 0x10011000 | Process9 | |
Yes | ? | ? | 0x10012000 | A9 | |
Yes | ? | ? | 0x10018000 | TwlProcess9 | |
Yes | ? | 0x10100000 | |||
Yes | A11/A9 | HASH Registers | 0x10101000 | Filesystem services | |
Yes | A11/A9 | ? | 0x10102000 | ||
Yes | A11/A9 | CSND Registers / DSP | 0x10103000 | TwlBg, Codec Services, CSND Services, DSP Services | |
Yes | A11/A9 | ? | 0x10110000 | ||
Yes | A11/A9 | ? | 0x10111000 | TwlBg | |
Yes | A11/A9 | ? | 0x10120000 | ||
Yes | A11/A9 | ? | 0x10121000 | Mirror of 0x10120000? | |
Yes | A11/A9 | ? | 0x10122000 | NWM Services | |
Yes | A11/A9 | ? | 0x10123000 | NWM Services | |
? | A11/A9 | MVD Registers | 0x10130000 | MVD Services | New3DS only? |
? | A11/A9 | MVD Registers | 0x10131000 | MVD Services | New3DS only? |
? | A11/A9 | MVD Registers | 0x10132000 | MVD Services | New3DS only? |
Yes | A11/A9 | 0x10140000 | Process9, Boot11, Kernel11, TwlBg, DSP Services, NWM Services, SPI Services | Power management | |
Yes | A11/A9 | PDN Registers / CODEC Registers | 0x10141000 | Process9, Boot11, Kernel11, TwlBg, Codec Services, NWM Services, SPI Services | Power management |
Yes | A11/A9 | SPI Registers | 0x10142000 | TwlBg, SPI Services | |
Yes | A11/A9 | SPI Registers | 0x10143000 | TwlBg | Only used under TWL_FIRM? |
Yes | A11/A9 | I2C Registers | 0x10144000 | Boot11, Kernel11, TwlBg, I2C Services | |
Yes | A11/A9 | CODEC Registers | 0x10145000 | TwlBg, Codec Services | |
Yes | A11/A9 | HID Registers | 0x10146000 | Boot11, Kernel11, TwlBg, HID Services | See PAD. |
Yes | A11/A9 | GPIO Registers | 0x10147000 | Boot11, TwlBg, GPIO Services | |
Yes | A11/A9 | I2C Registers | 0x10148000 | TwlBg, I2C Services | |
Yes | A11/A9 | SPI Registers | 0x10160000 | Boot9, TwlBg, SPI Services | |
Yes | A11/A9 | I2C Registers | 0x10161000 | Boot11, TwlBg, I2C Services | |
Yes | A11/A9 | MIC Registers | 0x10162000 | MIC Services | |
Yes | A11/A9 | PXI Registers | 0x10163000 | Boot11, Kernel11, TwlBg, PXI Services | |
Yes | A11/A9 | NTRCARD Registers | 0x10164000 | Boot9, Process9 | |
Yes | A11/A9 | MP Registers | 0x10165000 | MP Services | |
Yes | A11/A9 | MP Registers | 0x10170000 | MP Services | NTR WIFI Registers, see GBATek. |
Yes | A11/A9 | MP Registers | 0x10171000 | MP Services | NTR WIFI Registers (mirror) |
Yes | A11/A9 | 0x10172000 | NTR WIFI Unused? | ||
Yes | A11/A9 | 0x10173000 | NTR WIFI Unused? | ||
Yes | A11/A9 | MP Registers | 0x10174000 | MP Services | NTR WIFI RAM |
Yes | A11/A9 | MP Registers | 0x10175000 | NTR WIFI RAM | |
Yes | A11/A9 | MP Registers | 0x10176000 | NTR WIFI Registers (mirror) | |
Yes | A11/A9 | MP Registers | 0x10177000 | NTR WIFI Registers (mirror) | |
Yes | A11/A9 | MP Registers | 0x10178000 - 0x10180000 | MP Services | Wifi WS1 Region |
Yes | A11 | CDMA | 0x10200000 | Boot11, Kernel11 | CoreLink™ DMA-330. Info |
Yes | A11 | ? | 0x10202000 | TwlBg, Kernel11, GSP Services | |
Yes | A11 | DSP | 0x10203000 | ||
? | A11 | MVD Registers | 0x10207000 | MVD Services | New3DS only? |
Yes | A11 | GPU? | 0x1020F000 | TwlBg, GSP Services | |
Yes | A11 | HASH Registers | 0x10301000 | Filesystem services | |
? | A11 | MVD Registers | 0x10330000 | MVD services | New3DS only? |
? | A11 | MVD Registers | 0x10331000 | MVD services | New3DS only? |
? | A11 | MVD Registers | 0x10332000 | MVD services | New3DS only? |
Yes | A11 | ? | 0x10322000 | NWM Services | |
Yes | A11 | ? | 0x10323000 | NWM Services | |
Yes | A11 | LCD Registers | 0x10400000 | Boot11, Kernel11, GSP Services | |
Yes | A11 | LCD Registers | 0x10420000 | GSP Services |
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.
0x10012000
Keys seem to be stored here? Access to this region is disabled once Kernel9 crt0 writes 0x2 to REG_SYSPROT9. Before writing that bit, Kernel9 copies the low u32 for the TWL keydata to +0x100. On devunits(UNITINFO!=0) Kernel9 uses the first 8-bytes from 0x10012000 for the TWL keydata.
This region is also used by the New_3DS FIRM loader at the end of the FIRM ARM9 binary.