Line 429: |
Line 429: |
| 0=CTR+256MHz | | 0=CTR+256MHz |
| 1=LGR2+256MHz, 5=LGR2+804MHz | | 1=LGR2+256MHz, 5=LGR2+804MHz |
− | 2=LGR+256MHz, 3=LGR+536MHz | + | 2=LGR1+256MHz, 3=LGR1+536MHz |
| | | |
| N3DS modes (LGR1/LGR2) enable the New 3DS FCRAM extension and are needed to access N3DS-only devices. | | N3DS modes (LGR1/LGR2) enable the New 3DS FCRAM extension and are needed to access N3DS-only devices. |
Line 443: |
Line 443: |
| On firmlaunch, the kernel sets the mode to O3DS. | | On firmlaunch, the kernel sets the mode to O3DS. |
| | | |
− | [[SVC#KernelSetState|svcKernelSetState]] type10, only implemented on New3DS, uses this register. That code writes the following values to this register, depending on the input Param0 bit0 state, and the state of [[CONFIG11 Registers#CFG11_SOCINFO|CFG11_SOCINFO]]: | + | [[SVC#KernelSetState|svcKernelSetState]] type10, only implemented on New3DS, uses this register. This piece of code choses the mode matching the input Param0 bit0 state (1 for higher clock), using the state of [[CONFIG11 Registers#CFG11_SOCINFO|CFG11_SOCINFO]] to determine which mode is the best (which is always LGR2 on all released New 3DS units). |
− | {| class="wikitable" border="1"
| |
− | ! Register value
| |
− | ! Higher-clockrate bit set in svcKernelSetState Param0
| |
− | ! CFG11_SOCINFO bit2 set
| |
− | ! MPCore timer/watchdog prescaler value, prior to subtracting it by 0x1 when writing it into hw/state
| |
− | ! Clock-rate multiplier
| |
− | ! Description
| |
− | |-
| |
− | | 0x01
| |
− | | No
| |
− | | Yes
| |
− | | 0x01
| |
− | | 1x
| |
− | | 268MHz
| |
− | |-
| |
− | | 0x02
| |
− | | No
| |
− | | No
| |
− | | 0x01
| |
− | | 1x
| |
− | | 268MHz
| |
− | |-
| |
− | | 0x05
| |
− | | Yes
| |
− | | Yes
| |
− | | 0x03
| |
− | | 3x
| |
− | | 804MHz
| |
− | |-
| |
− | | 0x03
| |
− | | Yes
| |
− | | No
| |
− | | 0x02
| |
− | | 2x
| |
− | | 536MHz (tested on New3DS)
| |
− | |}
| |
− | | |
− | Note that the above CFG11_SOCINFO bit is 1 on New3DS, and 0 on Old3DS. Since this SVC is only available with the New3DS ARM11-kernel, the only additional available clock-rate is 804MHz when running on New3DS(with official kernel code).
| |
− | | |
− | The following register value(s) were tested on New3DS by patching the kernel:
| |
− | * 0x00: Entire system hangs.
| |
− | * 0x02: Entire system hangs.
| |
− | * 0x03: ARM11 runs at 536MHz.
| |
− | * 0x04: Entire system hangs.
| |
− | * 0x06: Entire system hangs.
| |
− | * 0x07: Same result as 0x05.
| |
− | * 0x08: Entire system hangs.
| |
− | * 0x09: Entire system hangs.
| |
− | * 0x0A: Entire system hangs.
| |
− | * 0x0B: Same result as 0x03.
| |
− | * 0x0C: Entire system hangs.
| |
− | * 0x0D: Same result as 0x05.
| |
− | * 0x0E: Entire system hangs.
| |
− | * 0x0F: Same result as 0x05.
| |
− | * 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05.
| |
| | | |
| == PDN_LGR_CNT == | | == PDN_LGR_CNT == |