Difference between revisions of "Configuration Memory"
Line 97: | Line 97: | ||
|- | |- | ||
| 1 | | 1 | ||
− | |||
− | |||
− | |||
| Set for debug units | | Set for debug units | ||
|- | |- | ||
− | | | + | | 2-7 |
| ? | | ? | ||
|} | |} | ||
− | Normally this register is all-zero, however | + | Normally this register is all-zero, however bit1 in this field is set by the ARM11 kernel when ARM debug CP14 DSCR bit14 is set. [[NS]] loads the menu TID from MENUTID when bits 1-7 of this register are clear. [[ErrDisp]] will display development error info when bit0 is clear. |
=== APPMEMALLOC === | === APPMEMALLOC === |
Revision as of 20:25, 13 April 2013
Memory
NAME | PROCESS VIRTUAL ADDRESS | WIDTH |
---|---|---|
? | 0x1FF80000 | 1 |
KERNELVERSIONMINOR | 0x1FF80001 | 1 |
KERNELVERSIONMAJOR | 0x1FF80002 | 1 |
? | 0x1FF80003 | 1 |
UPDATEFLAG | 0x1FF80004 | 4 |
NSTID | 0x1FF80008 | 8 |
SYSCOREVER | 0x1FF80010 | 4 |
UNITINFO | 0x1FF80014 | 1 |
APPMEMALLOC | 0x1FF80040 | 4 |
FIRMVERSIONMINOR | 0x1FF80061 | 1 |
FIRMVERSIONMAJOR | 0x1FF80062 | 1 |
FIRMSYSCOREVER | 0x1FF80064 | 4 |
MENUTID | 0x1FF810A0 | 8 |
ACTIVEMENUTID | 0x1FF810A8 | 8 |
All of these fields are initialized by the ARM11 kernel, except for MENUTID and ACTIVEMENUTID which are set by NS.
KERNELVERSIONMINOR
This is the kernel version-minor, this likely isn't obtained from the FIRM title-version.
FIRMVERSIONMINOR
This is the same as KERNELVERSIONMINOR.
KERNELVERSIONMAJOR
This is the ((title-version & 0x3FF) >> 4), for the currently running FIRM.
FIRMVERSIONMAJOR
This is the same as KERNELVERSIONMAJOR. After AM:InstallNATIVEFIRM checks FIRMSYSCOREVER, AM:InstallNATIVEFIRM then compares FIRMVERSIONMAJOR with the NATIVE_FIRM ((title-version & 0x3FF) >> 4), when the latter is larger than FIRMVERSIONMAJOR AM:InstallNATIVEFIRM will trigger a FIRM install.
UPDATEFLAG
Normally this flag is zero, however when the ARM11 kernel is booting it will set this flag to 1, if the following PAD buttons are pressed: L, R, A, Up. When this flag is set, the system will launch the System Updater title instead of displaying the Home Menu.
NSTID
This field contains the titleID of the first title to launch from CTR-NAND after the FIRM system processes are loaded. The PM module launches this title. If this field 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.
SYSCOREVER
When launching CXIs, the value stored here must match the core version field stored in the CXI exheader. If they do not match, the PM module 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.
FIRMSYSCOREVER
Normally this is the same as SYSCOREVER. This used by AM:InstallNATIVEFIRM for comparing with the NATIVE_FIRM titleID-low. When the low u8 from the NATIVE_FIRM titleID-low is larger than FIRMSYSCOREVER, AM:InstallNATIVEFIRM will trigger FIRM installing. When that u8 is not larger than FIRMSYSCOREVER, and these two values don't match, AM:InstallNATIVEFIRM will return an error.
UNITINFO
Bit | Description |
---|---|
0 | Clear for dev unit, set for retail |
1 | Set for debug units |
2-7 | ? |
Normally this register is all-zero, however bit1 in this field is set by the ARM11 kernel when ARM debug CP14 DSCR bit14 is set. NS loads the menu TID from MENUTID when bits 1-7 of this register are clear. ErrDisp will display development error info when bit0 is clear.
APPMEMALLOC
This contains the total size of the memory that can be allocated with the application memory-type. On retail this is 64MB for prod.
MENUTID
This contains the titleID of the retail menu which will be launched by NS.
ACTIVEMENUTID
This contains the titleID of the currently running menu launched by NS. Normally this is the home menu TID from MENUTID, but if launching that fails this titleID is the alternate menu.(On debug units this is the TID loaded from config)