Changes

Jump to navigation Jump to search
4,187 bytes added ,  00:08, 5 February 2021
no edit summary
Line 2: Line 2:     
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 +
! Old3DS
 
! A9/A11
 
! A9/A11
! Category
+
! Category
! Physical address start
+
! Physaddr
 
! Used by
 
! Used by
 
! Comments
 
! Comments
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A9
 
| A9
| [[CONFIG Registers]]
+
| [[CONFIG9 Registers]]
 
| 0x10000000
 
| 0x10000000
 
| Boot9, Process9
 
| Boot9, Process9
 
|
 
|
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A9
 
| A9
 
| [[IRQ Registers]]
 
| [[IRQ Registers]]
 
| 0x10001000
 
| 0x10001000
 
| Boot9, Process9, Kernel9
 
| Boot9, Process9, Kernel9
|
+
| ARM9 Interrupt Masking
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A9
 
| A9
 
| [[NDMA Registers]]
 
| [[NDMA Registers]]
 
| 0x10002000
 
| 0x10002000
 
| Boot9, Process9
 
| Boot9, Process9
|
+
| AHB DMA Engine
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A9
 
| A9
 
| [[TIMER Registers]]
 
| [[TIMER Registers]]
Line 32: Line 37:  
|
 
|
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A9
 
| A9
 
| [[CTRCARD Registers]]
 
| [[CTRCARD Registers]]
Line 38: Line 44:  
|
 
|
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A9
 
| A9
 
| [[EMMC Registers]]
 
| [[EMMC Registers]]
 
| 0x10006000 / 0x10007000
 
| 0x10006000 / 0x10007000
| Boot9, Process9
+
| Boot9, Process9, NewKernel9Loader
| 0x10007000 is apparently not used on retail
+
| SD(IO) controller 1 and 3. 3 is normally mapped to ARM11.
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A9
 
| A9
 
| [[PXI Registers]]
 
| [[PXI Registers]]
Line 50: Line 58:  
|  
 
|  
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A9
 
| A9
 
| [[AES Registers]]
 
| [[AES Registers]]
 
| 0x10009000
 
| 0x10009000
| Boot9, Process9
+
| Boot9, Process9, NewKernel9Loader
 
|
 
|
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A9
 
| A9
 
| [[SHA Registers]]
 
| [[SHA Registers]]
 
| 0x1000A000
 
| 0x1000A000
| Boot9, Process9
+
| Boot9, Process9, NewKernel9Loader
 
|
 
|
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A9
 
| A9
 
| [[RSA Registers]]
 
| [[RSA Registers]]
Line 68: Line 79:  
|
 
|
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A9
 
| A9
| [[XDMA Registers]]
+
| [[Corelink DMA Engines|XDMA Registers]]
 
| 0x1000C000
 
| 0x1000C000
 
| Boot9, Kernel9
 
| Boot9, Kernel9
| CoreLink™ DMA-330. [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0424d/index.html Info]
+
| [http://infocenter.arm.com/help/topic/com.arm.doc.subset.primecell.system/index.html CoreLink™ DMA-330 r0p0] (AXI busmaster, two channels, uses 32-bit bus width instead of 64).
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A9
 
| A9
 
| [[SPICARD Registers]]
 
| [[SPICARD Registers]]
Line 80: Line 93:  
|
 
|
 
|-style="border-top: double"
 
|-style="border-top: double"
| ?
+
| style="background: green" | Yes
 +
| A9
 
| [[CONFIG Registers]]
 
| [[CONFIG Registers]]
 
| 0x10010000
 
| 0x10010000
Line 86: Line 100:  
|
 
|
 
|-
 
|-
| ?
+
| style="background: green" | Yes
| [[CONFIG Registers]]
+
| A9
 +
| PRNG Registers
 
| 0x10011000
 
| 0x10011000
| Process9
+
| Boot9, Process9
|
+
| Used as entropy-source for seeding random number generators.
 
|-
 
|-
| ?
+
| style="background: green" | Yes
| ?
+
| A9
 +
| [[OTP Registers]]
 
| 0x10012000
 
| 0x10012000
|
+
| Boot9, Kernel9, NewKernel9Loader
|
+
| Top secret.
 
|-
 
|-
| ?
+
| style="background: green" | Yes
| ?
+
| A9
 +
| [[ARM7|ARM7 Registers]]
 
| 0x10018000
 
| 0x10018000
 
| TwlProcess9
 
| TwlProcess9
|
+
| Used to setup the ARM7 core for AGB/TWL
 
|-style="border-top: double"
 
|-style="border-top: double"
| ?
+
| style="background: green" | Yes
|  
+
| A11/A9
 +
| TMIO SD(IO) controller 3
 
| 0x10100000
 
| 0x10100000
|
   
|  
 
|  
 +
| NWM references this controller but doesn't have access to it.
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[HASH Registers]]
 
| [[HASH Registers]]
 
| 0x10101000
 
| 0x10101000
 
| [[Filesystem services]]
 
| [[Filesystem services]]
|  
+
| These registers function the same as the [[SHA Registers]], with the exception of the FIFO being located at 0x10301000.
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
| ?
+
| [[Y2R Registers]]
 
| 0x10102000
 
| 0x10102000
|
+
| [[Camera Services]]
|  
+
| y2r
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
| [[CSND Registers]] / DSP
+
| [[CSND Registers]]
 
| 0x10103000
 
| 0x10103000
 
| TwlBg, [[Codec Services]], [[CSND Services]], [[DSP Services]]
 
| TwlBg, [[Codec Services]], [[CSND Services]], [[DSP Services]]
|  
+
| Sound hardware.
 
|-style="border-top: double"
 
|-style="border-top: double"
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
| ?
+
| [[MTX_Registers|LgyFb bottom screen]]
 
| 0x10110000
 
| 0x10110000
|
+
| TwlBg
|  
+
| IO registers used to access legacy output framebuffer, as well as configure the upscaling filter.
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
| ?
+
| [[MTX_Registers|LgyFb top screen]]
 
| 0x10111000
 
| 0x10111000
 
| TwlBg
 
| TwlBg
|
+
| IO registers used to access legacy output framebuffer, as well as configure the upscaling filter.
 
|-style="border-top: double"
 
|-style="border-top: double"
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
| ?
+
| [[Camera Registers]]
 
| 0x10120000
 
| 0x10120000
|
+
| [[Camera Services]]
 
|  
 
|  
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
| ?
+
| [[Camera Registers]]
 
| 0x10121000
 
| 0x10121000
|
+
| [[Camera Services]]
 
| Mirror of 0x10120000?
 
| Mirror of 0x10120000?
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
| ?
+
| [[WIFI Registers]]
 
| 0x10122000
 
| 0x10122000
 
| [[NWM Services]]
 
| [[NWM Services]]
|  
+
| WIFI SDIO bus registers
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| ?
 
| ?
 
| 0x10123000
 
| 0x10123000
 
| [[NWM Services]]
 
| [[NWM Services]]
|  
+
| WIFI?
 
|-style="border-top: double"
 
|-style="border-top: double"
 +
| style="background: red" | No
 
| A11/A9
 
| A11/A9
 
| [[MVD Registers]]
 
| [[MVD Registers]]
 
| 0x10130000
 
| 0x10130000
 
| [[MVD Services]]
 
| [[MVD Services]]
| New3DS only?
+
|  
 
|-
 
|-
 +
| style="background: red" | No
 
| A11/A9
 
| A11/A9
 
| [[MVD Registers]]
 
| [[MVD Registers]]
 
| 0x10131000
 
| 0x10131000
 
| [[MVD Services]]
 
| [[MVD Services]]
| New3DS only?
+
|  
 
|-
 
|-
 +
| style="background: red" | No
 
| A11/A9
 
| A11/A9
 
| [[MVD Registers]]
 
| [[MVD Registers]]
 
| 0x10132000
 
| 0x10132000
 
| [[MVD Services]]
 
| [[MVD Services]]
| New3DS only?
+
|  
 
|-style="border-top: double"
 
|-style="border-top: double"
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
|  
+
| [[CONFIG11 Registers]]
 
| 0x10140000
 
| 0x10140000
 
| Process9, Boot11, Kernel11, TwlBg, [[DSP Services]], [[NWM Services]], [[SPI Services]]
 
| Process9, Boot11, Kernel11, TwlBg, [[DSP Services]], [[NWM Services]], [[SPI Services]]
| Power management
+
| System configuration.
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
| [[PDN Registers]] / [[CODEC Registers]]
+
| [[PDN Registers]]
 
| 0x10141000
 
| 0x10141000
| Process9, Boot11, Kernel11, TwlBg, [[Codec Services]], [[NWM Services]], [[SPI Services]]
+
| Process9, Boot11, Kernel11, TwlBg, [[Codec Services]], [[NWM Services]], [[SPI Services]], [[PDN Services]]
 
| Power management
 
| Power management
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[SPI Registers]]
 
| [[SPI Registers]]
Line 200: Line 233:  
|  
 
|  
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[SPI Registers]]
 
| [[SPI Registers]]
 
| 0x10143000
 
| 0x10143000
| TwlBg
+
| TwlBg, dmnt Module
| Only used under TWL_FIRM?
+
| Debugger related?
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[I2C Registers]]
 
| [[I2C Registers]]
 
| 0x10144000
 
| 0x10144000
 
| Boot11, Kernel11, TwlBg, [[I2C Services]]
 
| Boot11, Kernel11, TwlBg, [[I2C Services]]
|  
+
| 3DS I2C interface (MCU + Cameras + LCD)
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
| [[CODEC Registers]]
+
| [[I2S Registers]]
 
| 0x10145000
 
| 0x10145000
| TwlBg, [[Codec Services]]
+
| TwlBg, AgbBg, [[Codec Services]]
|  
+
| Sound input/output lines
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[HID Registers]]
 
| [[HID Registers]]
 
| 0x10146000
 
| 0x10146000
| Boot11, Kernel11, TwlBg, [[HID Services]]
+
| Boot9, Boot11, Kernel11, TwlBg, [[HID Services]], dlp Services
 
| See [[PAD]].
 
| See [[PAD]].
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[GPIO Registers]]
 
| [[GPIO Registers]]
 
| 0x10147000
 
| 0x10147000
| Boot11, TwlBg, [[GPIO Services]]
+
| Boot11, TwlBg, [[GPIO Services]], [[DSP Services]](v0)
 
|  
 
|  
 
|-  
 
|-  
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[I2C Registers]]
 
| [[I2C Registers]]
 
| 0x10148000
 
| 0x10148000
 
| TwlBg, [[I2C Services]]
 
| TwlBg, [[I2C Services]]
|  
+
| 3DS I2C interface (Gyro + IR)
 
|-style="border-top: double"
 
|-style="border-top: double"
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[SPI Registers]]
 
| [[SPI Registers]]
Line 242: Line 282:  
|  
 
|  
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[I2C Registers]]
 
| [[I2C Registers]]
 
| 0x10161000
 
| 0x10161000
 
| Boot11, TwlBg, [[I2C Services]]
 
| Boot11, TwlBg, [[I2C Services]]
|  
+
| TWL I2C interface (MCU + Cameras)
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[MIC Registers]]
 
| [[MIC Registers]]
Line 254: Line 296:  
|  
 
|  
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[PXI Registers]]
 
| [[PXI Registers]]
Line 260: Line 303:  
|  
 
|  
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[NTRCARD Registers]]
 
| [[NTRCARD Registers]]
Line 266: Line 310:  
|
 
|
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[MP Registers]]
 
| [[MP Registers]]
Line 272: Line 317:  
|
 
|
 
|-style="border-top: double"
 
|-style="border-top: double"
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
|  [[MP Registers]]
 
|  [[MP Registers]]
Line 278: Line 324:  
| NTR WIFI Registers, see [http://problemkaputt.de/gbatek.htm#dswirelesscommunications GBATek].
 
| NTR WIFI Registers, see [http://problemkaputt.de/gbatek.htm#dswirelesscommunications GBATek].
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
|  [[MP Registers]]
 
|  [[MP Registers]]
Line 284: Line 331:  
| NTR WIFI Registers (mirror)
 
| NTR WIFI Registers (mirror)
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
|  
+
|?
 
| 0x10172000
 
| 0x10172000
|
+
|?
 
| NTR WIFI Unused?
 
| NTR WIFI Unused?
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
|
+
|?
 
| 0x10173000
 
| 0x10173000
|
+
|?
 
| NTR WIFI Unused?
 
| NTR WIFI Unused?
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[MP Registers]]
 
| [[MP Registers]]
Line 302: Line 352:  
| NTR WIFI RAM
 
| NTR WIFI RAM
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[MP Registers]]
 
| [[MP Registers]]
 
| 0x10175000
 
| 0x10175000
|
+
|?
 
| NTR WIFI RAM
 
| NTR WIFI RAM
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
|  [[MP Registers]]
 
|  [[MP Registers]]
 
| 0x10176000
 
| 0x10176000
|  
+
|?
 
| NTR WIFI Registers (mirror)
 
| NTR WIFI Registers (mirror)
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
|  [[MP Registers]]
 
|  [[MP Registers]]
 
| 0x10177000
 
| 0x10177000
|  
+
|?
 
| NTR WIFI Registers (mirror)
 
| NTR WIFI Registers (mirror)
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11/A9
 
| A11/A9
 
| [[MP Registers]]
 
| [[MP Registers]]
 
| 0x10178000 - 0x10180000
 
| 0x10178000 - 0x10180000
 
| [[MP Services]]
 
| [[MP Services]]
| Wifi WS1 Region
+
| NTR WIFI WS1 Region
 
|-style="border-top: double"
 
|-style="border-top: double"
 +
| style="background: green" | Yes
 
| A11
 
| A11
| CDMA
+
| [[Corelink DMA Engines|CDMA]]
 
| 0x10200000
 
| 0x10200000
 
| Boot11, Kernel11
 
| Boot11, Kernel11
| CoreLink™ DMA-330. [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0424d/index.html Info]
+
| [http://infocenter.arm.com/help/topic/com.arm.doc.subset.primecell.system/index.html CoreLink™ DMA-330 r0p0] (eight channels). Only used by bootrom on New3DS.
 +
|-
 +
| style="background: green" | Yes
 +
| A11
 +
| FCRAM configuration
 +
| 0x10201000
 +
| TwlBg, Kernel11 (dead code)
 +
|
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11
 
| A11
| ?
+
| [[LCD Registers]]
 
| 0x10202000
 
| 0x10202000
 
| TwlBg, Kernel11, [[GSP Services]]
 
| TwlBg, Kernel11, [[GSP Services]]
 
|
 
|
 
|-
 
|-
 +
| style="background: green" | Yes
 
| A11
 
| A11
| DSP
+
| [[DSP Registers]]
 
| 0x10203000
 
| 0x10203000
 +
| [[DSP Services]]
 +
| see the "DSi XpertTeak" section in [http://problemkaputt.de/gba.htm no$gba] help.
 +
|-style="border-top: double"
 +
| style="background: red" | No
 +
| A11
 +
| ?
 +
| 0x10204000
 +
| ?
 
|  
 
|  
|
   
|-
 
|-
 +
|  style="background: red" | No
 +
| A11
 +
| [[Corelink DMA Engines|CDMA]]
 +
| 0x10206000
 +
| NewKernel11
 +
| [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0424d/index.html CoreLink™ DMA-330 r1p2] (eight channels). This is the DMA engine actually being used by the New3DS ARM11 kernel.
 +
|-
 +
| style="background: red" | No
 
| A11
 
| A11
 
| [[MVD Registers]]
 
| [[MVD Registers]]
 
| 0x10207000
 
| 0x10207000
 
| [[MVD Services]]
 
| [[MVD Services]]
| New3DS only?
+
| New 3DS only?
|-
+
|-style="border-top: double"
 +
| style="background: green" | Yes
 
| A11
 
| A11
| GPU?
+
| AXI
 
| 0x1020F000
 
| 0x1020F000
 
| TwlBg, [[GSP Services]]
 
| TwlBg, [[GSP Services]]
|  
+
| [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0422a/CHDGHIID.html CoreLink™ NIC-301 r1p0].
 
|-style="border-top: double"
 
|-style="border-top: double"
 +
| style="background: green" | Yes
 
| A11
 
| A11
| [[HASH Registers]]
+
| AHB (or AXI?) FIFOs region
| 0x10301000
+
| 0x10300000-0x10340000
| [[Filesystem services]]
+
|
|
+
| Pages present in this region correspond to the same respective devices in the 0x10100000-0x10140000 region but don't hold the same registers. They hold the FIFOs instead: the HASH FIFO register is located at 0x10301000. The LgyFb scaler data FIFO are located at 0x10310000 (top) and 0x10311000 (bot), etc. Needed for DMA.
|-
  −
| A11
  −
| [[MVD Registers]]
  −
| 0x10330000
  −
| [[MVD services]]
  −
| New3DS only?
  −
|-
  −
| A11
  −
| [[MVD Registers]]
  −
| 0x10331000
  −
| [[MVD services]]
  −
| New3DS only?
  −
|-
  −
| A11
  −
| [[MVD Registers]]
  −
| 0x10332000
  −
| [[MVD services]]
  −
| New3DS only?
  −
|-style="border-top: double"
  −
| A11
  −
| ?
  −
| 0x10322000
  −
| [[NWM Services]]
  −
|
  −
|-
  −
| A11
  −
| ?
  −
| 0x10323000
  −
| [[NWM Services]]
  −
|
   
|-style="border-top: double"
 
|-style="border-top: double"
 +
| style="background: green" | Yes
 
| A11
 
| A11
| [[LCD Registers]]
+
| [[GPU/External_Registers|GPU Registers]]
 
| 0x10400000
 
| 0x10400000
 
| Boot11, Kernel11, [[GSP Services]]
 
| Boot11, Kernel11, [[GSP Services]]
|
+
||
|-
  −
| 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).
+
IO registers starting at physical address 0x10200000 are not accessible from the ARM9 (which includes all LCD/GPU registers). It seems IO registers below physical address 0x10100000 are not accessible from the ARM11 bus.
   −
ARM11 kernel virtual address mappings for these registers varies for different builds.
+
ARM11 kernel virtual address mappings for these registers varies for different builds. For ARM11 user mode applications you have:
 +
physaddr = virtaddr - 0x1EC00000 + 0x10100000
516

edits

Navigation menu