Changes

532 bytes added ,  17:50, 14 March 2018
no edit summary
Line 91: Line 91:  
| 0x2B || svcFlushDataCache || X0=addr, X1=size || W0=result
 
| 0x2B || svcFlushDataCache || X0=addr, X1=size || W0=result
 
|-
 
|-
| 0x2C || [3.0.0+] [[#svcMapPhysicalMemory]] || X0=addr, X1=size || W0=result
+
| 0x2C || [3.0.0+] [[#svcAllocateHeapMemory]] || X0=addr, X1=size || W0=result
 
|-
 
|-
| 0x2D || [3.0.0+] svcUnmapPhysicalMemory|| X0=addr, X1=size || W0=result
+
| 0x2D || [3.0.0+] svcFreeHeapMemory || X0=addr, X1=size || W0=result
 
|-
 
|-
 
| 0x2E || [5.0.0+] svcDevUnitOnlyMeasureScheduling? || ||
 
| 0x2E || [5.0.0+] svcDevUnitOnlyMeasureScheduling? || ||
Line 127: Line 127:  
| 0x45 || svcCreateEvent || None || W0=result, W1=client_handle ?, W2=server_handle ?
 
| 0x45 || svcCreateEvent || None || W0=result, W1=client_handle ?, W2=server_handle ?
 
|- style="border-top: double"
 
|- style="border-top: double"
| 0x48 || [5.0.0+] svcMapPhysicalMemoryNew? || X0=addr, X1=size || W0=result
+
| 0x48 || [5.0.0+] svcAllocateUserHeapMemory || X0=addr, X1=size || W0=result
 
|-
 
|-
| 0x49 || [5.0.0+] svcUnmapPhysicalMemoryNew? || X0=addr, X1=size || W0=result
+
| 0x49 || [5.0.0+] svcFreeUserHeapMemory || X0=addr, X1=size || W0=result
 
|-
 
|-
| 0x4A || [5.0.0+] svcSetWeirdSize? || X0=size || W0=result
+
| 0x4A || [5.0.0+] svcSetUserHeapMemoryAllocationMax || X0=size || W0=result
 
|-
 
|-
 
| 0x4B || [4.0.0+] [[#svcCreateJitMemory]] || X1=addr, X2=size || W0=result, W1=jit_handle
 
| 0x4B || [4.0.0+] [[#svcCreateJitMemory]] || X1=addr, X2=size || W0=result, W1=jit_handle
Line 257: Line 257:     
On success, the heap base-address (which is fixed by kernel, aslr'd) is written to OutAddr.
 
On success, the heap base-address (which is fixed by kernel, aslr'd) is written to OutAddr.
 +
 +
Uses current process pool partition.
    
[2.0.0+] Size must be less than 0x18000000.
 
[2.0.0+] Size must be less than 0x18000000.
Line 784: Line 786:  
|}
 
|}
   −
== svcMapPhysicalMemory ==
+
== svcAllocateHeapMemory ==
 
This is like svcSetHeapSize except you can allocate heap at any address you'd like.
 
This is like svcSetHeapSize except you can allocate heap at any address you'd like.
 +
 +
Uses current process pool partition.
    
== svcDumpInfo ==
 
== svcDumpInfo ==
Line 855: Line 859:     
'''0xf601:''' Port remote dead. One of the sessions has been closed. HandleIndex is set appropriately.
 
'''0xf601:''' Port remote dead. One of the sessions has been closed. HandleIndex is set appropriately.
 +
 +
== svcAllocateUserHeapMemory ==
 +
Same as [[#svcAllocateHeapMemory]] except it always uses pool partition 0.
    
== svcCreateJitMemory ==
 
== svcCreateJitMemory ==
Line 1,520: Line 1,527:  
| || || Bit5 || EnableAslr
 
| || || Bit5 || EnableAslr
 
|-
 
|-
| || || Bit6 || IsSystem
+
| || || Bit6 || UseSystemMemBlocks
 +
|-
 +
| || || Bit7 || [4.0.0] ?
 +
|-
 +
| || || Bit10-7 || [5.0.0+] PoolPartition (0=User, 1=System, 2=?, 3=?)
 
|-
 
|-
 
| 0x28 || 4 || || ResourceLimitHandle
 
| 0x28 || 4 || || ResourceLimitHandle
 
|-
 
|-
| 0x2C || 4 ||
+
| 0x2C || 4 || || [3.0.0+] UnknownNumPages
 
|}
 
|}
 +
 +
On [1.0.0] there's only one pool.
 +
 +
On [2.0.0-4.0.0] PoolPartition is 1 for built-ins and 0 for rest.
 +
 +
On [5.0.0] PoolPartition is specified in CreateProcessArgs. There are now 4 pool partitions.
    
=== AddressSpaceType ===
 
=== AddressSpaceType ===