Difference between revisions of "11.4.0-37"

From 3dbrew
Jump to navigation Jump to search
Line 9: Line 9:
 
==System Titles==
 
==System Titles==
 
===NATIVE_FIRM===
 
===NATIVE_FIRM===
 +
====Process9====
 +
The global boolean preventing [[FIRM|SAFE_FIRM]] from being launched is now set in Process9's crt0 if [[CONFIG9_Registers#CFG9_BOOTENV|CFG9_BOOTENV]] has bit0 set, that is to say, if it has been launched from a firmlaunch (this register is set to 1 just before a firmlaunch). The following code has also been added in the firmlaunch function itself: <code>if(!(CFG9_BOOTENV & 1) /* not a firmlaunch */ || (CFG9_BOOTENV & 6) /* firmlaunched from LGY_FIRM (if even possible at all) */) goto panic</code>.
 +
 +
This is to fix [[3DS_System_Flaws#Process9|safehax]].
 +
 
====ARM11 kernel====
 
====ARM11 kernel====
 
There are at least, and likely, three changes:
 
There are at least, and likely, three changes:

Revision as of 11:50, 11 April 2017

The Old3DS+New3DS 11.4.0-37 system update was released on April 10, 2017. This Old3DS update was released for the following regions: USA, EUR, JPN, CHN, KOR, and TWN. This New3DS update was released for the following regions: USA, EUR, JPN, CHN, KOR, and TWN.

Security flaws fixed: yes.

Change-log

Official USA change-log:

  • Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience

System Titles

NATIVE_FIRM

Process9

The global boolean preventing SAFE_FIRM from being launched is now set in Process9's crt0 if CFG9_BOOTENV has bit0 set, that is to say, if it has been launched from a firmlaunch (this register is set to 1 just before a firmlaunch). The following code has also been added in the firmlaunch function itself: if(!(CFG9_BOOTENV & 1) /* not a firmlaunch */ || (CFG9_BOOTENV & 6) /* firmlaunched from LGY_FIRM (if even possible at all) */) goto panic.

This is to fix safehax.

ARM11 kernel

There are at least, and likely, three changes:

  • CFG11_WIFIUNK is now set to 0x10 in Kernel11's crt0
  • A new SVC, svc 0x5A has been introduced, to enable or disable wifi
  • The code handling svcArbitrateAddress with type = SIGNAL, has been changed. It now counts the actual number of threads arbitrating on that address, and if it is non-zero, it executes the following hack: if(coreId == 0 && currentThread->dynamicPriority >= 50) waitCycles(0x64E). This supposedly works around the lag issue in some games, which has been introduced on 11.3.0-36

NWM-sysmodule

The CONFIG11_Registers are no longer directly mapped under userland for NWM-sysmodule. This prevents anything under NWM-module from modifying the GPUPROT register.

The codebin was updated.

The crt0-poke in PDN that NWM previously did:

 0x1EC4010C |= 0x10

.. has been removed from NWM. This one has been moved into kernel bootup.

Accesses to 0x1EC40180 have been replaced by a new syscall, 0x5A.

A new string was added at 0x13E200: "used"(with 3 0xFF bytes afterwards). The wifi-fw was moved from .data to .rodata.

See Also

System update report(s):