SVC: Difference between revisions
No edit summary |
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+] [[# | | 0x2C || [3.0.0+] [[#svcAllocateHeapMemory]] || X0=addr, X1=size || W0=result | ||
|- | |- | ||
| 0x2D || [3.0.0+] | | 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+] | | 0x48 || [5.0.0+] svcAllocateUserHeapMemory || X0=addr, X1=size || W0=result | ||
|- | |- | ||
| 0x49 || [5.0.0+] | | 0x49 || [5.0.0+] svcFreeUserHeapMemory || X0=addr, X1=size || W0=result | ||
|- | |- | ||
| 0x4A || [5.0.0+] | | 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: | ||
|} | |} | ||
== | == 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 || | | || || 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 === |