Difference between revisions of "Configuration Memory"

From 3dbrew
Jump to navigation Jump to search
Line 37: Line 37:
 
| 8
 
| 8
 
|}
 
|}
 +
 +
All of these registers are initialized by the ARM11 kernel, except for REG_MENUTID and REG_ACTIVEMENUTID which are set by NS.
  
 
=== REG_NSTID ===
 
=== REG_NSTID ===
This register contains the titleID of the first title to launch after various system processes loaded.(This is normally the [[NS]] module titleID) If this register titleID is all-zero, the system will not attempt to launch the title.
+
This register contains the titleID of the first title to launch after the core system processes loaded. If this register titleID is all-zero, the system will not attempt to launch the title. The regular ARM11 kernel sets this to the regular [[NS]] titleID, while the SAFE_MODE ARM11 kernel sets this to the SAFE_MODE NS titleID.
  
 
=== REG_SYSCOREVER ===
 
=== REG_SYSCOREVER ===
When launching [[NCCH#CXI|CXIs]], this register value must match the core version field stored in the CXI exheader. If they do not match, the system will refuse to launch the process.
+
When launching [[NCCH#CXI|CXIs]], this register value must match the core version field stored in the CXI exheader. If they do not match, the system will refuse to launch the ARM11 process. The regular ARM11 kernel sets this to 0x2, while the SAFE_MODE ARM11 kernel sets this to 0x3.
  
 
=== REG_UNITINFO ===
 
=== REG_UNITINFO ===
Line 50: Line 52:
 
|-
 
|-
 
| 0
 
| 0
| Set for retail, clear for dev/debug?
+
| ?
 +
|-
 +
| 1
 +
| ?
 +
|-
 +
| 2
 +
| Set for debug units
 
|-
 
|-
| 1-7
+
| 3-7
| [[NS]] loads the menu TID from REG_MENUTID when this is clear
+
| ?
 
|}
 
|}
 +
 +
Normally this register is all-zero, however bit2 in this register is set by the ARM11 kernel when ARM debug CP14 DSCR bit14 is set. [[NS]] loads the menu TID from REG_MENUTID when bits 1-7 of this register are clear.
  
 
=== REG_MENUTID ===
 
=== REG_MENUTID ===
Line 60: Line 70:
  
 
=== REG_ACTIVEMENUTID ===
 
=== REG_ACTIVEMENUTID ===
This contains the titleID of the currently running menu launched by [[NS]]. Normally this is the home menu TID from REG_MENUTID, but if launching that fails this titleID is the [[NS#Alternate Menu|alternate menu]].(On dev units this is the TID loaded from [[Config Info Blocks|config]])
+
This contains the titleID of the currently running menu launched by [[NS]]. Normally this is the home menu TID from REG_MENUTID, but if launching that fails this titleID is the [[NS#Alternate Menu|alternate menu]].(On debug units this is the TID loaded from [[Config Info Blocks|config]])

Revision as of 23:38, 6 September 2012

Registers

NAME PHYSICAL ADDRESS PROCESS VIRTUAL ADDRESS KERNEL VIRTUAL ADDRESS WIDTH
REG_NSTID ? 0x1FF80008 ? 8
REG_SYSCOREVER ? 0x1FF80010 ? 4
REG_UNITINFO ? 0x1FF80014 ? 1
REG_MENUTID ? 0x1FF810A0 ? 8
REG_ACTIVEMENUTID ? 0x1FF810A8 ? 8

All of these registers are initialized by the ARM11 kernel, except for REG_MENUTID and REG_ACTIVEMENUTID which are set by NS.

REG_NSTID

This register contains the titleID of the first title to launch after the core system processes loaded. If this register titleID is all-zero, the system will not attempt to launch the title. The regular ARM11 kernel sets this to the regular NS titleID, while the SAFE_MODE ARM11 kernel sets this to the SAFE_MODE NS titleID.

REG_SYSCOREVER

When launching CXIs, this register value must match the core version field stored in the CXI exheader. If they do not match, the system will refuse to launch the ARM11 process. The regular ARM11 kernel sets this to 0x2, while the SAFE_MODE ARM11 kernel sets this to 0x3.

REG_UNITINFO

Bit Description
0 ?
1 ?
2 Set for debug units
3-7 ?

Normally this register is all-zero, however bit2 in this register is set by the ARM11 kernel when ARM debug CP14 DSCR bit14 is set. NS loads the menu TID from REG_MENUTID when bits 1-7 of this register are clear.

REG_MENUTID

This contains the titleID of the retail menu which will be launched by NS.

REG_ACTIVEMENUTID

This contains the titleID of the currently running menu launched by NS. Normally this is the home menu TID from REG_MENUTID, but if launching that fails this titleID is the alternate menu.(On debug units this is the TID loaded from config)