CONFIG9 Registers: Difference between revisions
m Plutooo moved page CONFIG Registers to CONFIG9 Registers |
No edit summary |
||
Line 8: | Line 8: | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| [[# | | [[#CFG9_SYSPROT9|CFG9_SYSPROT9]] | ||
| 0x10000000 | | 0x10000000 | ||
| 1 | | 1 | ||
Line 14: | Line 14: | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| [[# | | [[#CFG9_SYSPROT11|CFG9_SYSPROT11]] | ||
| 0x10000001 | | 0x10000001 | ||
| 1 | | 1 | ||
Line 20: | Line 20: | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| [[# | | [[#CFG9_RST11|CFG9_RST11]] | ||
| 0x10000002 | | 0x10000002 | ||
| 1 | | 1 | ||
Line 26: | Line 26: | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| | | CFG9_DEBUGCTL | ||
| 0x10000004 | | 0x10000004 | ||
| 4 | | 4 | ||
Line 38: | Line 38: | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| [[# | | [[#CFG9_CARDCTL|CFG9_CARDCTL]] | ||
| 0x1000000C | | 0x1000000C | ||
| 2 | | 2 | ||
Line 44: | Line 44: | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| [[# | | [[#CFG9_CARDSTATUS|CFG9_CARDSTATUS]] | ||
| 0x10000010 | | 0x10000010 | ||
| 1 | | 1 | ||
Line 50: | Line 50: | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| | | CFG9_CARDCYCLES0 | ||
| 0x10000012 | | 0x10000012 | ||
| 2 | | 2 | ||
Line 56: | Line 56: | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| | | CFG9_CARDCYCLES1 | ||
| 0x10000014 | | 0x10000014 | ||
| 2 | | 2 | ||
Line 74: | Line 74: | ||
|- | |- | ||
| style="background: red" | No | | style="background: red" | No | ||
| [[# | | [[#CFG9_EXTMEMCNT9|CFG9_EXTMEMCNT9]] | ||
| 0x10000200 | | 0x10000200 | ||
| 1 | | 1 | ||
Line 80: | Line 80: | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| [[# | | [[#CFG9_MPCORECFG|CFG9_MPCORECFG]] | ||
| 0x10000FFC | | 0x10000FFC | ||
| 4 | | 4 | ||
Line 86: | Line 86: | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| [[# | | [[#CFG9_BOOTENV|CFG9_BOOTENV]] | ||
| 0x10010000 | | 0x10010000 | ||
| 4 | | 4 | ||
Line 92: | Line 92: | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| [[# | | [[#CFG9_UNITINFO|CFG9_UNITINFO]] | ||
| 0x10010010 | | 0x10010010 | ||
| 1 | | 1 | ||
Line 98: | Line 98: | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| [[# | | [[#CFG9_TWLUNITINFO|CFG9_TWLUNITINFO]] | ||
| 0x10010014 | | 0x10010014 | ||
| 1 | | 1 | ||
Line 104: | Line 104: | ||
|} | |} | ||
== | == CFG9_SYSPROT9 == | ||
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 125: | Line 125: | ||
|} | |} | ||
On Old 3DS, NATIVE_FIRM reads | 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. | ||
== | == CFG9_SYSPROT11 == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 145: | Line 145: | ||
|} | |} | ||
== | == CFG9_RST11 == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 180: | Line 180: | ||
|} | |} | ||
== | == CFG9_CARDCTL == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Bit | ! Bit | ||
Line 200: | Line 200: | ||
* Selecting CTRCARD1 will activate the register space at [[CTRCARD|0x10005000]]. | * Selecting CTRCARD1 will activate the register space at [[CTRCARD|0x10005000]]. | ||
== | == CFG9_CARDSTATUS == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Bit | ! Bit | ||
Line 215: | Line 215: | ||
|} | |} | ||
== | == CFG9_EXTMEMCNT9 == | ||
This register is New3DS-only. | This register is New3DS-only. | ||
Line 232: | Line 232: | ||
|} | |} | ||
== | == CFG9_MPCORECFG == | ||
Identical to [[PDN#PDN_MPCORE_CFG|PDN_MPCORE_CFG]]. | Identical to [[PDN#PDN_MPCORE_CFG|PDN_MPCORE_CFG]]. | ||
== | == 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. | ||
== | == 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. | ||
== | == 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. |