Line 1: |
Line 1: |
− | == Registers ==
| + | = Registers = |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
− | ! Old3dS | + | ! Old3DS |
| ! Name | | ! Name |
| ! Address | | ! Address |
| ! Width | | ! Width |
| + | ! Used by |
| |- | | |- |
| | Yes | | | Yes |
− | | REG_SYSPROT9 | + | | [[#CFG_SYSPROT9|CFG_SYSPROT9]] |
| | 0x10000000 | | | 0x10000000 |
| | 1 | | | 1 |
| + | | Boot9 |
| |- | | |- |
| | Yes | | | Yes |
− | | REG_SYSPROT11 | + | | [[#CFG_SYSPROT11|CFG_SYSPROT11]] |
| | 0x10000001 | | | 0x10000001 |
| | 1 | | | 1 |
| + | | Boot9 |
| |- | | |- |
| | Yes | | | Yes |
− | | REG_DEBUGUNIT | + | | CFG_DEBUGUNIT |
| | 0x10000004 | | | 0x10000004 |
| | 4 | | | 4 |
| + | | |
| |- | | |- |
| | Yes | | | Yes |
− | | REG_CARDCONF | + | | [[#CFG_CARDCONF|CFG_CARDCONF]] |
| | 0x1000000C | | | 0x1000000C |
| | 2 | | | 2 |
| + | | |
| |- | | |- |
| | Yes | | | Yes |
− | | REG_DEBUGGER | + | | CFG_DEBUGGER |
| | 0x10000010 | | | 0x10000010 |
| | 1 | | | 1 |
| + | | |
| |- | | |- |
| | Yes | | | Yes |
Line 35: |
Line 41: |
| | 0x10000011 | | | 0x10000011 |
| | 1 | | | 1 |
| + | | |
| |- | | |- |
| | Yes | | | Yes |
Line 40: |
Line 47: |
| | 0x10000012 | | | 0x10000012 |
| | 2 | | | 2 |
| + | | |
| |- | | |- |
| | Yes | | | Yes |
Line 45: |
Line 53: |
| | 0x10000014 | | | 0x10000014 |
| | 2 | | | 2 |
| + | | |
| |- | | |- |
| | Yes | | | Yes |
Line 50: |
Line 59: |
| | 0x10000020 | | | 0x10000020 |
| | 2 | | | 2 |
| + | | |
| |- | | |- |
| | Yes | | | Yes |
Line 55: |
Line 65: |
| | 0x10000100 | | | 0x10000100 |
| | 2 | | | 2 |
| + | | |
| |- | | |- |
| | No | | | No |
− | | REG_EXTMEMCNT9 | + | | [[#CFG_EXTMEMCNT9|CFG_EXTMEMCNT9]] |
| | 0x10000200 | | | 0x10000200 |
| | 1 | | | 1 |
| + | | Kernel9 |
| |- | | |- |
| | Yes | | | Yes |
− | | REG_MPCORECFG? | + | | CFG_MPCORECFG? |
| | 0x10000FFC | | | 0x10000FFC |
| | 4 | | | 4 |
| + | | |
| |- | | |- |
| | Yes | | | Yes |
− | | REG_BOOTENV | + | | [[#CFG_BOOTENV|CFG_BOOTENV]] |
| | 0x10010000 | | | 0x10010000 |
| | 4 | | | 4 |
| + | | |
| |- | | |- |
| | Yes | | | Yes |
− | | REG_UNITINFO | + | | [[#CFG_UNITINFO|CFG_UNITINFO]] |
| | 0x10010010 | | | 0x10010010 |
| | 1 | | | 1 |
| + | | |
| |- | | |- |
| | Yes | | | Yes |
Line 80: |
Line 95: |
| | 0x10010014 | | | 0x10010014 |
| | 1 | | | 1 |
| + | | |
| |} | | |} |
| | | |
− | == REG_SYSPROT9 == | + | ==CFG_SYSPROT9 == |
| Writing values to SYSPROT sets the specified bitmask. The ARM9 [[Memory_layout|bootrom]](+0x8000) is disabled by writing bit0. bit1 is used by NATIVE_FIRM to make sure console-unique TWL AES-keys are only set at hard-boot. It is not possible to set any other bits. | | Writing values to SYSPROT sets the specified bitmask. The ARM9 [[Memory_layout|bootrom]](+0x8000) is disabled by writing bit0. bit1 is used by NATIVE_FIRM to make sure console-unique TWL AES-keys are only set at hard-boot. It is not possible to set any other bits. |
| | | |
| From disassembly of the New3DS process9, it appears that setting bit1 disables the 0x10012000+ region. | | From disassembly of the New3DS process9, it appears that setting bit1 disables the 0x10012000+ region. |
| | | |
− | == REG_SYSPROT11 == | + | == CFG_SYSPROT11 == |
| ARM11 bootrom (+0x8000) is disabled by writing bit0. It is not possible to set any other bits. | | ARM11 bootrom (+0x8000) is disabled by writing bit0. It is not possible to set any other bits. |
| | | |
− | == REG_CARDCONF == | + | == CFG_CARDCONF == |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Bit | | ! Bit |
Line 107: |
Line 123: |
| * Selecting CTRCARD2 will activate the register space at [[CTRCARD|0x10005000]]. | | * Selecting CTRCARD2 will activate the register space at [[CTRCARD|0x10005000]]. |
| | | |
− | == REG_EXTMEMCNT9 == | + | == CFG_EXTMEMCNT9 == |
| This register is presumably New3DS-only. Only bit0 is writable: 0 = disable New3DS ARM9 memory at 0x08100000 size 0x80000, 1 = enable. | | This register is presumably New3DS-only. Only bit0 is writable: 0 = disable New3DS ARM9 memory at 0x08100000 size 0x80000, 1 = enable. |
| | | |
Line 114: |
Line 130: |
| The data in this extended memory doesn't change when disabling the memory, then re-enabling the memory. Reading this extended memory while disabled results in zeros. | | The data in this extended memory doesn't change when disabling the memory, then re-enabling the memory. Reading this extended memory while disabled results in zeros. |
| | | |
− | == REG_BOOTENV == | + | == CFG_BOOTENV == |
| Initially this is value zero. NATIVE_FIRM writes value 1 here when a FIRM launch begins. The [[Legacy_FIRM_PXI|LGY]] FIRM writes value 3 here when handling PXI command 0x00020080(first TWL PXI command), it also writes value 7 here when handling PXI command 0x00030080(first AGB PXI command). This register can be read to determine what "mode" the system is running under: hard-boot, FIRM launch, or TWL/AGB FIRM. | | Initially this is value zero. NATIVE_FIRM writes value 1 here when a FIRM launch begins. The [[Legacy_FIRM_PXI|LGY]] FIRM writes value 3 here when handling PXI command 0x00020080(first TWL PXI command), it also writes value 7 here when handling PXI command 0x00030080(first AGB PXI command). This register can be read to determine what "mode" the system is running under: hard-boot, FIRM launch, or TWL/AGB FIRM. |
| | | |
Line 121: |
Line 137: |
| It is unknown if this register controls anything. | | It is unknown if this register controls anything. |
| | | |
− | == REG_UNITINFO == | + | == CFG_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. |
| | | |