Changes

Jump to navigation Jump to search
418 bytes added ,  02:41, 11 February 2017
Line 27: Line 27:     
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).
 
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.
 
* A new [[SVC]] was implemented: 0x59. See [[SVC|here]] for the kernel implementation. This is used by the updated GSP-module.
Line 33: Line 35:  
* 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.
 +
* 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.
 +
* L_fff26348(Prev ver @ L_fff2631c): Same changes as L_fff20d28 except with four locations.
 
* A new vtable funcptr was added for certain classes, this just returns 1.
 
* A new vtable funcptr was added for certain classes, this just returns 1.
 +
* 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]], 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.
 
* 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.
  

Navigation menu