Sync jit SVC names with wiki + updated the comment for JitType_JitMemory in jit.h.

This commit is contained in:
yellows8 2018-05-21 14:28:14 -04:00
parent 93957370a9
commit a12eb11eab
4 changed files with 23 additions and 23 deletions

View File

@ -10,7 +10,7 @@
/// JIT implementation type.
typedef enum {
JitType_CodeMemory, ///< JIT supported using svcSetProcessMemoryPermission
JitType_JitMemory, ///< JIT supported using 4.0.0+ JIT syscalls.
JitType_JitMemory, ///< JIT supported using 4.0.0+ code-memory syscalls (this isn't usable on 5.0.0+ so JitType_CodeMemory is used instead).
} JitType;
/// JIT buffer object.

View File

@ -34,8 +34,8 @@ typedef enum {
MemType_IpcBuffer1=0x11, ///< IPC buffers with descriptor flags=1.
MemType_IpcBuffer3=0x12, ///< IPC buffers with descriptor flags=3.
MemType_KernelStack=0x13, ///< Mapped in kernel during \ref svcCreateThread.
MemType_JitReadOnly=0x14, ///< Mapped in kernel during \ref svcMapJitMemory.
MemType_JitWritable=0x15, ///< Mapped in kernel during \ref svcMapJitMemory.
MemType_CodeReadOnly=0x14, ///< Mapped in kernel during \ref svcControlCodeMemory.
MemType_CodeWritable=0x15, ///< Mapped in kernel during \ref svcControlCodeMemory.
} MemoryType;
/// Memory state bitmasks.
@ -58,7 +58,7 @@ typedef enum {
MemState_IsRefCounted=MemState_IsPoolAllocated, ///< Alias for \ref MemState_IsPoolAllocated.
MemState_MapProcessAllowed=BIT(23), ///< Map process allowed.
MemState_AttrChangeAllowed=BIT(24), ///< Attribute change allowed.
MemState_JitMemAllowed=BIT(25), ///< JIT memory allowed.
MemState_CodeMemAllowed=BIT(25), ///< Code memory allowed.
} MemoryState;
/// Memory attribute bitmasks.
@ -97,13 +97,13 @@ typedef struct {
u64 X[8]; ///< Values of X0 through X7.
} PACKED SecmonArgs;
/// JIT mapping operations
/// Code memory mapping operations
typedef enum {
JitMapOperation_MapOwner=0, ///< Map owner.
JitMapOperation_MapSlave=1, ///< Map slave.
JitMapOperation_UnmapOwner=2, ///< Unmap owner.
JitMapOperation_UnmapSlave=3, ///< Unmap slave.
} JitMapOperation;
CodeMapOperation_MapOwner=0, ///< Map owner.
CodeMapOperation_MapSlave=1, ///< Map slave.
CodeMapOperation_UnmapOwner=2, ///< Unmap owner.
CodeMapOperation_UnmapSlave=3, ///< Unmap slave.
} CodeMapOperation;
/// Limitable Resources.
typedef enum {
@ -630,24 +630,24 @@ Result svcSetUnsafeLimit(u64 size);
///@}
///@name Just-in-time (JIT) compilation support
///@name Code memory / Just-in-time (JIT) compilation support
///@{
/**
* @brief Creates JIT memory in the caller's address space [4.0.0+].
* @brief Creates code memory in the caller's address space [4.0.0+].
* @return Result code.
* @note Syscall number 0x4B.
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
*/
Result svcCreateJitMemory(Handle* jit_handle, void* src_addr, u64 size);
Result svcCreateCodeMemory(Handle* code_handle, void* src_addr, u64 size);
/**
* @brief Maps JIT memory in the caller's address space [4.0.0+].
* @brief Maps code memory in the caller's address space [4.0.0+].
* @return Result code.
* @note Syscall number 0x4C.
* @warning This is a privileged syscall. Use \ref envIsSyscallHinted to check if it is available.
*/
Result svcMapJitMemory(Handle jit_handle, JitMapOperation op, void* dst_addr, u64 size, u64 perm);
Result svcControlCodeMemory(Handle code_handle, CodeMapOperation op, void* dst_addr, u64 size, u64 perm);
///@}

View File

@ -52,16 +52,16 @@ Result jitCreate(Jit* j, size_t size)
case JitType_JitMemory:
j->rw_addr = virtmemReserve(j->size);
rc = svcCreateJitMemory(&j->handle, j->src_addr, j->size);
rc = svcCreateCodeMemory(&j->handle, j->src_addr, j->size);
if (R_SUCCEEDED(rc))
{
rc = svcMapJitMemory(j->handle, JitMapOperation_MapOwner, j->rw_addr, j->size, Perm_Rw);
rc = svcControlCodeMemory(j->handle, CodeMapOperation_MapOwner, j->rw_addr, j->size, Perm_Rw);
if (R_SUCCEEDED(rc))
{
rc = svcMapJitMemory(j->handle, JitMapOperation_MapSlave, j->rx_addr, j->size, Perm_Rx);
rc = svcControlCodeMemory(j->handle, CodeMapOperation_MapSlave, j->rx_addr, j->size, Perm_Rx);
if (R_FAILED(rc)) {
svcMapJitMemory(j->handle, JitMapOperation_UnmapOwner, j->rw_addr, j->size, 0);
svcControlCodeMemory(j->handle, CodeMapOperation_UnmapOwner, j->rw_addr, j->size, 0);
}
}
@ -146,12 +146,12 @@ Result jitClose(Jit* j)
break;
case JitType_JitMemory:
rc = svcMapJitMemory(j->handle, JitMapOperation_UnmapOwner, j->rw_addr, j->size, 0);
rc = svcControlCodeMemory(j->handle, CodeMapOperation_UnmapOwner, j->rw_addr, j->size, 0);
if (R_SUCCEEDED(rc)) {
virtmemFree(j->rw_addr, j->size);
rc = svcMapJitMemory(j->handle, JitMapOperation_UnmapSlave, j->rx_addr, j->size, 0);
rc = svcControlCodeMemory(j->handle, CodeMapOperation_UnmapSlave, j->rx_addr, j->size, 0);
if (R_SUCCEEDED(rc)) {
virtmemFree(j->rw_addr, j->size);

View File

@ -317,7 +317,7 @@ SVC_BEGIN svcSetUnsafeLimit
ret
SVC_END
SVC_BEGIN svcCreateJitMemory
SVC_BEGIN svcCreateCodeMemory
str x0, [sp, #-16]!
svc 0x4B
ldr x2, [sp], #16
@ -325,7 +325,7 @@ SVC_BEGIN svcCreateJitMemory
ret
SVC_END
SVC_BEGIN svcMapJitMemory
SVC_BEGIN svcControlCodeMemory
svc 0x4C
ret
SVC_END