Changes

Jump to navigation Jump to search
660 bytes added ,  18:01, 7 May 2019
m
Line 8: Line 8:  
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
| [[#CFG_SYSPROT9|CFG_SYSPROT9]]
+
| [[#CFG9_SYSPROT9|CFG9_SYSPROT9]]
 
| 0x10000000
 
| 0x10000000
 
| 1
 
| 1
Line 14: Line 14:  
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
| [[#CFG_SYSPROT11|CFG_SYSPROT11]]
+
| [[#CFG9_SYSPROT11|CFG9_SYSPROT11]]
 
| 0x10000001
 
| 0x10000001
 
| 1
 
| 1
Line 20: Line 20:  
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
| [[#CFG_RST11|CFG_RST11]]
+
| [[#CFG9_RST11|CFG9_RST11]]
 
| 0x10000002
 
| 0x10000002
 
| 1
 
| 1
Line 26: Line 26:  
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
| CFG_DEBUGCTL
+
| CFG9_DEBUGCTL
 
| 0x10000004
 
| 0x10000004
 
| 4
 
| 4
Line 38: Line 38:  
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
| [[#CFG_CARDCTL|CFG_CARDCTL]]
+
| [[#CFG9_CARDCTL|CFG9_CARDCTL]]
 
| 0x1000000C
 
| 0x1000000C
 
| 2
 
| 2
Line 44: Line 44:  
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
| [[#CFG_CARDSTATUS|CFG_CARDSTATUS]]
+
| [[#CFG9_CARDSTATUS|CFG9_CARDSTATUS]]
 
| 0x10000010
 
| 0x10000010
 
| 1
 
| 1
Line 50: Line 50:  
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
| CFG_CARDCYCLES0
+
| CFG9_CARDCYCLES0
 
| 0x10000012
 
| 0x10000012
 
| 2
 
| 2
Line 56: Line 56:  
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
| CFG_CARDCYCLES1
+
| CFG9_CARDCYCLES1
 
| 0x10000014
 
| 0x10000014
 
| 2
 
| 2
Line 62: Line 62:  
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
| ?
+
| [[#CFG9_SDMMCCTL|CFG9_SDMMCCTL]]
 
| 0x10000020
 
| 0x10000020
 
| 2
 
| 2
|
+
| Process9
 
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
Line 74: Line 74:  
|-
 
|-
 
| style="background: red" | No
 
| style="background: red" | No
| [[#CFG_EXTMEMCNT9|CFG_EXTMEMCNT9]]
+
| [[#CFG9_EXTMEMCNT9|CFG9_EXTMEMCNT9]]
 
| 0x10000200
 
| 0x10000200
 
| 1
 
| 1
Line 80: Line 80:  
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
| [[#CFG_MPCORECFG|CFG_MPCORECFG]]
+
| [[#CFG9_MPCORECFG|CFG9_MPCORECFG]]
 
| 0x10000FFC
 
| 0x10000FFC
 
| 4
 
| 4
Line 86: Line 86:  
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
| [[#CFG_BOOTENV|CFG_BOOTENV]]
+
| [[#CFG9_BOOTENV|CFG9_BOOTENV]]
 
| 0x10010000
 
| 0x10010000
 
| 4
 
| 4
Line 92: Line 92:  
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
| [[#CFG_UNITINFO|CFG_UNITINFO]]
+
| [[#CFG9_UNITINFO|CFG9_UNITINFO]]
 
| 0x10010010
 
| 0x10010010
 
| 1
 
| 1
Line 98: Line 98:  
|-
 
|-
 
| style="background: green" | Yes
 
| style="background: green" | Yes
| [[#CFG_TWLUNITINFO|CFG_TWLUNITINFO]]
+
| [[#CFG9_TWLUNITINFO|CFG9_TWLUNITINFO]]
 
| 0x10010014
 
| 0x10010014
 
| 1
 
| 1
Line 104: Line 104:  
|}
 
|}
   −
== CFG_SYSPROT9 ==  
+
== CFG9_SYSPROT9 ==
CFG_SYSPROT9 is used to permanently disable certain security-sensitive ARM9 memory areas until the next hard reset.
+
CFG9_SYSPROT9 is used to permanently disable certain security-sensitive ARM9 memory areas until the next hard reset.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 113: Line 113:  
|-
 
|-
 
| 0
 
| 0
| Disables ARM9 [[Memory_layout|bootrom]](+0x8000) when set to 1. Cannot be cleared to 0 once set to 1.
+
| Disables ARM9 [[Memory_layout|bootrom]](+0x8000) when set to 1, and enables access to [[Memory_layout|FCRAM]]. Cannot be cleared to 0 once set to 1.
 
| Boot9
 
| Boot9
 
|-
 
|-
Line 125: Line 125:  
|}
 
|}
   −
On Old 3DS, NATIVE_FIRM reads CFG_SYSPROT9 to know whether it has previously initialized the TWL console-unique keys using the OTP data.  After setting the TWL console-unique keys, NATIVE_FIRM sets CFG_SYSPROT9 bit 1 to disable the OTP area.  In subsequent FIRM launches prior to the next reset, NATIVE_FIRM will see that the OTP area is disabled, and skip this step.
+
On Old 3DS, NATIVE_FIRM reads CFG9_SYSPROT9 to know whether it has previously initialized the TWL console-unique keys using the OTP data.  After setting the TWL console-unique keys, NATIVE_FIRM sets CFG9_SYSPROT9 bit 1 to disable the OTP area.  In subsequent FIRM launches prior to the next reset, NATIVE_FIRM will see that the OTP area is disabled, and skip this step.
    
On New 3DS, the above is instead done by the [[FIRM#New_3DS_FIRM|Kernel9 loader]].  In addition to using the OTP data for initializing the TWL console-unique keys, the Kernel9 loader will generate the decryption key for NATIVE_FIRM.  The final keyslot for NATIVE_FIRM is preserved, so that at a non-reset FIRM launch, the keyslot can be reused, since the OTP would then be inaccessible.
 
On New 3DS, the above is instead done by the [[FIRM#New_3DS_FIRM|Kernel9 loader]].  In addition to using the OTP data for initializing the TWL console-unique keys, the Kernel9 loader will generate the decryption key for NATIVE_FIRM.  The final keyslot for NATIVE_FIRM is preserved, so that at a non-reset FIRM launch, the keyslot can be reused, since the OTP would then be inaccessible.
   −
== CFG_SYSPROT11 ==  
+
== CFG9_SYSPROT11 ==
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 137: Line 137:  
|-
 
|-
 
| 0
 
| 0
| Disables ARM11 [[Memory_layout|bootrom]](+0x8000) when set to 1. Cannot be cleared to 0 once set to 1.
+
| Disables ARM11 [[Memory_layout|bootrom]](+0x8000) when set to 1, and enables access to [[Memory_layout|FCRAM]]. Cannot be cleared to 0 once set to 1.
 
| Boot9
 
| Boot9
 
|-
 
|-
Line 145: Line 145:  
|}
 
|}
   −
== CFG_RST11 ==  
+
== CFG9_RST11 ==
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 180: Line 180:  
|}
 
|}
   −
== CFG_CARDCTL ==
+
== CFG9_CARDCTL ==
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
!  Bit
 
!  Bit
Line 191: Line 191:  
|-
 
|-
 
| 8
 
| 8
| Enable gamecard eject IRQ, maybe?
+
| 1 = Switch to [[SPICARD_Registers|SPICARD]] interface (savegames).
 
| Process9
 
| Process9
 
|}
 
|}
Line 200: Line 200:  
* Selecting CTRCARD1 will activate the register space at [[CTRCARD|0x10005000]].
 
* Selecting CTRCARD1 will activate the register space at [[CTRCARD|0x10005000]].
   −
== CFG_CARDSTATUS ==
+
== CFG9_CARDSTATUS ==
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
!  Bit
 
!  Bit
Line 215: Line 215:  
|}
 
|}
   −
== CFG_EXTMEMCNT9 ==
+
== CFG9_SDMMCCTL ==
 +
CFG9_SDMMCCTL controls power. Also controls SD card detect?
 +
 
 +
{| class="wikitable" border="1"
 +
!  Bit
 +
!  Description
 +
!  Used by
 +
|-
 +
| 0
 +
| SD slot power.
 +
| Process9
 +
|-
 +
| 1
 +
| eMMC power? NAND init hangs if set.
 +
| Process9
 +
|-
 +
|-
 +
| 2-3
 +
| Other power supplies?
 +
| Process9
 +
|-
 +
| 6
 +
| Never used by anything. Set at cold boot.
 +
|
 +
|-
 +
| 8
 +
| ? This bit seems to do nothing.
 +
| Process9
 +
|-
 +
| 9
 +
| If not set force pulls all SD card lines high.
 +
| Process9
 +
|}
 +
 
 +
== CFG9_EXTMEMCNT9 ==
 
This register is New3DS-only.
 
This register is New3DS-only.
   Line 232: Line 266:  
|}
 
|}
   −
== CFG_MPCORECFG ==
+
== CFG9_MPCORECFG ==
 
Identical to [[PDN#PDN_MPCORE_CFG|PDN_MPCORE_CFG]].
 
Identical to [[PDN#PDN_MPCORE_CFG|PDN_MPCORE_CFG]].
   −
== CFG_BOOTENV ==
+
== CFG9_BOOTENV ==
 
This register is used to determine what the previous running FIRM was. Its value is kept following an MCU reboot. Its initial value (on a cold boot) is 0. NATIVE_FIRM [[Development_Services_PXI|sets it to 1]] on shutdown/FIRM launch. [[Legacy_FIRM_PXI|LGY FIRM]] writes value 3 here when launching a TWL title, and writes value 7 when launching an AGB title.
 
This register is used to determine what the previous running FIRM was. Its value is kept following an MCU reboot. Its initial value (on a cold boot) is 0. NATIVE_FIRM [[Development_Services_PXI|sets it to 1]] on shutdown/FIRM launch. [[Legacy_FIRM_PXI|LGY FIRM]] writes value 3 here when launching a TWL title, and writes value 7 when launching an AGB title.
    
NATIVE_FIRM will only launch titles if this is not value 0, and will only save the [[Flash_Filesystem|AGB_FIRM savegame]] to SD if this is value 7.
 
NATIVE_FIRM will only launch titles if this is not value 0, and will only save the [[Flash_Filesystem|AGB_FIRM savegame]] to SD if this is value 7.
   −
== CFG_UNITINFO ==
+
== CFG9_UNITINFO ==
 
This 8-bit register is value zero for retail, non-zero for dev/debug units.
 
This 8-bit register is value zero for retail, non-zero for dev/debug units.
   −
== CFG_TWLUNITINFO ==
+
== CFG9_TWLUNITINFO ==
 
In the console-unique TWL key-init/etc function the ARM9 copies the u8 value from REG_UNITINFO to this register.
 
In the console-unique TWL key-init/etc function the ARM9 copies the u8 value from REG_UNITINFO to this register.
    
This is also used by TWL_FIRM Process9.
 
This is also used by TWL_FIRM Process9.
136

edits

Navigation menu