Changes

93 bytes added ,  23:25, 10 February 2017
Line 26: Line 26:  
Numerous functions were updated, fixing fasthax.
 
Numerous functions were updated, fixing fasthax.
    +
* 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.
 
* 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 new [[SVC]] was implemented: 0x59. See [[SVC|here]] for the kernel implementation. This is used by the updated GSP-module.
      
===Modules===
 
===Modules===