11.3.0-36: Difference between revisions

Emufan4568 (talk | contribs)
mNo edit summary
 
(7 intermediate revisions by 2 users not shown)
Line 24: Line 24:


====ARM11 kernel====
====ARM11 kernel====
Numerous functions were updated, fixing fasthax.
fasthax was fixed.


Exactly 4 functions were added(includes the func for SVC 0x59 and the actual func for it). Exactly 14 functions were updated, 13 if not including the kernel-flags-parser func which verifies the exheader kernel-version etc(which only had compiler(?)-related changes minus version constant).
Code addrs listed below are from the Old3DS kernel.
* A new [[SVC]] was implemented: 0x59. See [[SVC|here]] for the kernel implementation. This is used by the updated GSP-module.
* svcGetProcessInfo type19 was [[SVC|implemented]], this is used by the updated GSP-module.
* Additional bound checks were added to timer-handling code (setting and/or incrementing a timer's value, etc.) and to the KTimerAndWDTManager second virtual function, so that a timer's value can never be set to either a negative value or the past (which is what fasthax needed to do).
* Additional bound checks were added to timer-handling code (setting and/or incrementing a timer's value, etc.) and to the KTimerAndWDTManager second virtual function, so that a timer's value can never be set to either a negative value or the past (which is what fasthax needed to do).
* The two functions that either add a [[KTimeableInterruptEvent]] instance to the global queue of pending [[KTimeableInterruptEvent]] (see [[KTimerAndWDTManager]]), or remove one from it, now return a boolean indicating whether the interrupt event already is/was in the queue (if that is true, the function that adds the interrupt event will now update the timer registers in that case as well). This is especially used for the below fixes.
* The two functions that either add a [[KTimeableInterruptEvent]] instance to the global queue of pending [[KTimeableInterruptEvent]] (see [[KTimerAndWDTManager]]), or remove one from it, now return a boolean indicating whether the interrupt event already is/was in the queue (if that is true, the function that adds the interrupt event will now update the timer registers in that case as well). This is especially used for the below fixes.
* When adding a timer to that queue, its reference count is incremented (if it wasn't already in the queue). It is only decremented when needed, after actually signaling the timer by the interrupt-handling code.
* When adding a timer to that queue, its reference count is incremented (if it wasn't already in the queue). It is only decremented when needed, after actually signaling the timer by the interrupt-handling code.
* A virtual method was added to the definition of abstract class [[KTimeableInterruptEvent]], which returns <code>static_cast<KAutoObject *>(this)->referenceCount != 1</code> for KTimer instances and <code>true</code> for KThread instances. Prior to (re)adding timer interrupt events (as well as some other objects) to the queue, objects with a refcount of 1 are removed from it.
* L_fff20d28(Prev ver @ L_fff20b40): Added a call to L_fff1bb74() before calling L_fff1d514(), in two locations.
 
* L_fff2131c(Prev ver @ L_fff21124): Same changes as L_fff20d28.
A new [[SVC]] was implemented: 0x59. See [[SVC|here]] for the kernel implementation. This is used by the updated GSP-module.
* L_fff26348(Prev ver @ L_fff2631c): Same changes as L_fff20d28 except with four locations.
* L_fff28058(Prev ver @ L_fff27e28): Same changes as L_fff20d28 except with just one location.
* A virtual method was added to the definition of abstract class [[KTimeableInterruptEvent]]. Prior to (re)adding KTimer instances as interrupt events (and some other objects) to the queue, objects of the queue with this method returning <code>false</code> are removed from it. Its implementations are the following:
** For [[KTimer]] instances, returns <code>static_cast<KAutoObject *>(this)->referenceCount != 1</code> (L_fff2c37c)
** For instances of [[KThread]] and the dummy subclass of KTimerAndWDTManager+0x10: returns <code>true</code> (L_fff26790).


===Modules===
===Modules===
Line 39: Line 49:
Only two constants were actually changed: the minimal value required for the kernel's minor version number (now 0x35, ie. 11.3 NFIRM, it used to be 0x23, ie. 5.0 NFIRM), and the version number used for [[FS:InitializeWithSdkVersion]].  
Only two constants were actually changed: the minimal value required for the kernel's minor version number (now 0x35, ie. 11.3 NFIRM, it used to be 0x23, ie. 5.0 NFIRM), and the version number used for [[FS:InitializeWithSdkVersion]].  


====[[New_3DS]] GSP====
====GSP====
GSP-module was updated for Old3DS+New3DS.
GSP-module was updated for Old3DS+New3DS.


Line 132: Line 142:
   Balance:  
   Balance:  
   Credit-Card Funding
   Credit-Card Funding
==New issue==
This update, even on systems not running modded-FIRM apparently, caused a slowdown in certain cases in some game(s). For example, with Sheikah Stones in "The Legend of Zelda: Ocarina of Time 3D", there's noticeable audio issues.
This was caused by the NATIVE_FIRM ARM11-kernel changes: when running v11.2 NATIVE_FIRM with v11.3-nandimage(with the required patches to get NATIVE_FIRM to run with v11.3-nandimage), this new issue doesn't occur.


==See Also==
==See Also==
Line 137: Line 152:
* [https://yls8.mtheall.com/ninupdates/reports.php?date=02-06-17_07-00-38&sys=ctr]
* [https://yls8.mtheall.com/ninupdates/reports.php?date=02-06-17_07-00-38&sys=ctr]
* [https://yls8.mtheall.com/ninupdates/reports.php?date=02-06-17_07-00-47&sys=ktr]
* [https://yls8.mtheall.com/ninupdates/reports.php?date=02-06-17_07-00-47&sys=ktr]
[[Category:Firmware Versions]]