Changes

761 bytes added ,  08:47, 25 August 2020
Line 52: Line 52:  
** New MemoryType bit for "JIT allowed".
 
** New MemoryType bit for "JIT allowed".
 
** New MemoryTypes for JitWritable and JitReadOnly.
 
** New MemoryTypes for JitWritable and JitReadOnly.
* New synchronization syscalls 0x34, 0x35 added.
+
* New synchronization syscalls 0x34, 0x35 added: These ones allow implementation of synchronization primitives without a mutex+condvar pair. This is more efficient because when a thread wakes up from a condvar, the mutex is held and needs to perform a syscall to unlock it. If you have N threads blocking on a condvar, you need N-1 syscalls to wake all the threads. With the new syscalls, you can wake up all N with a single syscall.
 +
 
 
* Added new syscall svcDumpInfoNew, but it's stubbed.
 
* Added new syscall svcDumpInfoNew, but it's stubbed.
 
* The linked-list node for KAutoObjects was added to the struct itself instead of being a separate allocation.
 
* The linked-list node for KAutoObjects was added to the struct itself instead of being a separate allocation.
Line 58: Line 59:  
** This is used by some services to make sure we can't connect to them from outside a privileged module.
 
** This is used by some services to make sure we can't connect to them from outside a privileged module.
 
* svcReadWriteRegister was updated, now always goes through TZ for both PMC and MC. Whitelist for MC remains the same.
 
* svcReadWriteRegister was updated, now always goes through TZ for both PMC and MC. Whitelist for MC remains the same.
 +
* Support was added for loading non-KIP processes into the Secure pool via a flag in SvcCreateProcess.
 +
** This is used by only for es, to prevent attackers from using GPU DMA to take over the es sysmodule to pirate games.
 +
** Correspondingly, the KHeapArrange calculation of the secure pool size now has an extra 0x13A000 factored in (to ensure there is enough space for es).
    
===FIRM===
 
===FIRM===