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 === |