Line 1: |
Line 1: |
− | == ARM11 Kernel Configuration Memory ==
| + | = ARM11 Kernel Configuration Memory = |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! NAME | | ! NAME |
Line 72: |
Line 72: |
| This memory page is [[Memory_layout|read-only]] for ARM11 processes. | | This memory page is [[Memory_layout|read-only]] for ARM11 processes. |
| | | |
− | == Shared Memory Page For ARM11 Processes ==
| + | = Shared Memory Page For ARM11 Processes = |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! NAME | | ! NAME |
Line 89: |
Line 89: |
| This memory page is normally read-only for ARM11 processes, write-access is [[Memory_layout|determined]] by the process exheader kernel "Shared page writing" flag. | | This memory page is normally read-only for ARM11 processes, write-access is [[Memory_layout|determined]] by the process exheader kernel "Shared page writing" flag. |
| | | |
− | == ARM11 Kernel Config Fields ==
| + | = ARM11 Kernel Config Fields = |
| | | |
− | === 0x1FF80000 / 0x1FF80060 ===
| + | == 0x1FF80000 / 0x1FF80060 == |
| Unknown, this is normally value 0. | | Unknown, this is normally value 0. |
| | | |
− | === KERNEL_VERSIONREVISION / FIRM_VERSIONREVISION ===
| + | == KERNEL_VERSIONREVISION / FIRM_VERSIONREVISION == |
| This is the version-revision for the currently running [[FIRM]]. | | This is the version-revision for the currently running [[FIRM]]. |
| | | |
− | === KERNEL_VERSIONMINOR ===
| + | == KERNEL_VERSIONMINOR == |
| This is the version-minor from ((title-version & 0x3FF) >> 4), for the currently running [[FIRM]]. The values from KERNEL_VERSIONMINOR and KERNEL_VERSIONMAJOR can be stored in applications' [[NCCH#CXI|CXI]] exheader. | | This is the version-minor from ((title-version & 0x3FF) >> 4), for the currently running [[FIRM]]. The values from KERNEL_VERSIONMINOR and KERNEL_VERSIONMAJOR can be stored in applications' [[NCCH#CXI|CXI]] exheader. |
| | | |
− | === FIRM_VERSIONMINOR ===
| + | == FIRM_VERSIONMINOR == |
| This is the same as KERNEL_VERSIONMINOR. After [[AM:InstallNATIVEFIRM]] checks FIRM_SYSCOREVER, [[AM:InstallNATIVEFIRM]] then compares FIRM_VERSIONMINOR with the NATIVE_FIRM ((title-version & 0x3FF) >> 4), when the latter is larger than FIRM_VERSIONMINOR [[AM:InstallNATIVEFIRM]] will trigger a [[FIRM]] install. | | This is the same as KERNEL_VERSIONMINOR. After [[AM:InstallNATIVEFIRM]] checks FIRM_SYSCOREVER, [[AM:InstallNATIVEFIRM]] then compares FIRM_VERSIONMINOR with the NATIVE_FIRM ((title-version & 0x3FF) >> 4), when the latter is larger than FIRM_VERSIONMINOR [[AM:InstallNATIVEFIRM]] will trigger a [[FIRM]] install. |
| | | |
− | === KERNEL_VERSIONMAJOR / FIRM_VERSIONMAJOR ===
| + | == KERNEL_VERSIONMAJOR / FIRM_VERSIONMAJOR == |
| This is the version-major for the currently running [[FIRM]]. | | This is the version-major for the currently running [[FIRM]]. |
| | | |
− | === UPDATEFLAG ===
| + | == 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_Settings#System_Updater|System Updater]] title instead of displaying the [[Home Menu]]. | | 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_Settings#System_Updater|System Updater]] title instead of displaying the [[Home Menu]]. |
| | | |
− | === NSTID ===
| + | == NSTID == |
| This field contains the titleID of the first title to launch from CTR-NAND after the [[FIRM]] system processes are loaded. The [[Process Manager Ports|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. | | This field contains the titleID of the first title to launch from CTR-NAND after the [[FIRM]] system processes are loaded. The [[Process Manager Ports|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 ===
| + | == SYSCOREVER == |
| When launching [[NCCH#CXI|CXIs]], the value stored here must match the core version field stored in the CXI exheader. If they do not match, the [[Process Manager Ports|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. | | When launching [[NCCH#CXI|CXIs]], the value stored here must match the core version field stored in the CXI exheader. If they do not match, the [[Process Manager Ports|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. |
| | | |
− | === FIRM_SYSCOREVER ===
| + | == FIRM_SYSCOREVER == |
| 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 FIRM_SYSCOREVER, and these two values don't match, [[AM:InstallNATIVEFIRM]] will return an error. | | 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 FIRM_SYSCOREVER, and these two values don't match, [[AM:InstallNATIVEFIRM]] will return an error. |
| | | |
− | === UNITINFO ===
| + | == UNITINFO == |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Bit | | ! Bit |
Line 133: |
Line 133: |
| |} | | |} |
| | | |
− | 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. | + | Normally this field 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. |
| | | |
− | === KERNEL_CTRSDKVERSION / FIRM_CTRSDKVERSION ===
| + | == KERNEL_CTRSDKVERSION / FIRM_CTRSDKVERSION == |
| This is the CTR-SDK version which was used to build the currently running [[FIRM]]. | | This is the CTR-SDK version which was used to build the currently running [[FIRM]]. |
| | | |
− | === APPMEMALLOC ===
| + | == APPMEMALLOC == |
| This contains the total size of the memory that can be allocated with the application [[SVC|memory-type]]. On retail this is 64MB for [[3DS_Development_Unit_Software#Config|prod]]. | | This contains the total size of the memory that can be allocated with the application [[SVC|memory-type]]. On retail this is 64MB for [[3DS_Development_Unit_Software#Config|prod]]. |
| | | |
− | == Shared Memory Page Fields ==
| + | = Shared Memory Page Fields = |
| | | |
− | === MENUTID ===
| + | == MENUTID == |
| This contains the titleID of the retail menu which will be launched by [[NS]]. | | This contains the titleID of the retail menu which will be launched by [[NS]]. |
| | | |
− | === ACTIVEMENUTID ===
| + | == 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 [[NS#Alternate Menu|alternate menu]].(On debug units this is the TID loaded from [[Config_Savegame|config]]) | | 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 [[NS#Alternate Menu|alternate menu]].(On debug units this is the TID loaded from [[Config_Savegame|config]]) |