Line 125: |
Line 125: |
| | 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" |
− | | 0x4B || [4.0.0+] svcCreateUnknownMemory || || | + | | 0x4B || [4.0.0+] svcCreateJitMemory || X1=addr, X2=size || W0=result, W1=jit_handle |
| |- | | |- |
− | | 0x4C || [4.0.0+] || || | + | | 0x4C || [4.0.0+] [[#svcMapJitMemory]] || W0=jit_handle, W1=[[#MapJitOperation]], X2=dstaddr, X3=size, W4=perm || W0=result |
| |- | | |- |
| | 0x4D || svcSleepSystem || None || None | | | 0x4D || svcSleepSystem || None || None |
Line 818: |
Line 818: |
| | | |
| '''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. |
| + | |
| + | == svcCreateJitMemory == |
| + | Takes an address range with backing memory to create the JIT memory object. |
| + | |
| + | The memory is initially memset to 0xFF after being locked. |
| + | |
| + | == svcMapJitMemory == |
| + | Maps the backing memory for a JIT memory object into the current process. |
| + | |
| + | If operation is JitMapOperation_MapOwner, permission must be RW-. |
| + | |
| + | If operation is JitMapOperation_MapSlave, permission must be R-- or R-X. |
| + | |
| + | This allows one "secure JIT" process to map the memory as RW-, and the other "slave" process to map it R-X. |
| | | |
| == svcReadWriteRegister == | | == svcReadWriteRegister == |
Line 1,349: |
Line 1,363: |
| | 38 || DeviceName_NVDEC1 | | | 38 || DeviceName_NVDEC1 |
| |} | | |} |
| + | |
| + | == MapJitOperation == |
| + | {| class=wikitable |
| + | ! Value || Name |
| + | |- |
| + | | 0 || MapJitOperation_MapOwner |
| + | |- |
| + | | 1 || MapJitOperation_MapSlave |
| + | |- |
| + | | 2 || MapJitOperation_UnmapOwner |
| + | |- |
| + | | 3 || MapJitOperation_UnmapSlave |
| + | |} |
| + | |
| | | |
| == LimitableResource == | | == LimitableResource == |
Line 1,517: |
Line 1,545: |
| | 24 || [[#svcSetMemoryAttribute|AttributeChangeAllowed]] | | | 24 || [[#svcSetMemoryAttribute|AttributeChangeAllowed]] |
| |- | | |- |
− | | 25 || [4.0.0+] UnknownMemoryAllowed | + | | 25 || [4.0.0+] JitMemoryAllowed |
| |} | | |} |
| | | |
Line 1,582: |
Line 1,610: |
| |- | | |- |
| | 0x00002013 || MemoryType_KernelStack || Mapped in kernel during [[#svcCreateThread]]. | | | 0x00002013 || MemoryType_KernelStack || Mapped in kernel during [[#svcCreateThread]]. |
| + | |- |
| + | | 0x00402214 || MemoryType_JitReadOnly || Mapped in kernel during [[#svcMapJitMemory]]. |
| + | |- |
| + | | 0x00402015 || MemoryType_JitWritable || Mapped in kernel during [[#svcMapJitMemory]]. |
| |} | | |} |
| | | |