diff --git a/nx/include/switch/kernel/svc.h b/nx/include/switch/kernel/svc.h index 03139c6f..2343bcf2 100644 --- a/nx/include/switch/kernel/svc.h +++ b/nx/include/switch/kernel/svc.h @@ -12,6 +12,17 @@ /// Pseudo handle for the current thread #define CUR_THREAD_HANDLE 0xFFFF8000 +/// Memory permission bitmasks. +typedef enum { + Perm_None = 0, ///< No permissions. + Perm_R = BIT(0), ///< Read permission. + Perm_W = BIT(1), ///< Write permission. + Perm_X = BIT(2), ///< Execute permission. + Perm_Rw = Perm_R | Perm_W, ///< Read/write permissions. + Perm_Rx = Perm_R | Perm_X, ///< Read/execute permissions. + Perm_DontCare = BIT(28), ///< Don't care +} Permission; + typedef struct { u64 addr; u64 size; diff --git a/nx/include/switch/types.h b/nx/include/switch/types.h index 683c8d23..7146e5b6 100644 --- a/nx/include/switch/types.h +++ b/nx/include/switch/types.h @@ -18,42 +18,34 @@ #endif #endif -typedef uint8_t u8; ///< 8-bit unsigned integer -typedef uint16_t u16; ///< 16-bit unsigned integer -typedef uint32_t u32; ///< 32-bit unsigned integer -typedef uint64_t u64; ///< 64-bit unsigned integer -typedef __uint128_t u128; ///< 128-bit unsigned integer +typedef uint8_t u8; ///< 8-bit unsigned integer. +typedef uint16_t u16; ///< 16-bit unsigned integer. +typedef uint32_t u32; ///< 32-bit unsigned integer. +typedef uint64_t u64; ///< 64-bit unsigned integer. +typedef __uint128_t u128; ///< 128-bit unsigned integer. -typedef int8_t s8; ///< 8-bit signed integer -typedef int16_t s16; ///< 16-bit signed integer -typedef int32_t s32; ///< 32-bit signed integer -typedef int64_t s64; ///< 64-bit signed integer +typedef int8_t s8; ///< 8-bit signed integer. +typedef int16_t s16; ///< 16-bit signed integer. +typedef int32_t s32; ///< 32-bit signed integer. +typedef int64_t s64; ///< 64-bit signed integer. +typedef __int128_t s128; ///< 128-bit unsigned integer. -typedef volatile u8 vu8; ///< 8-bit volatile unsigned integer. -typedef volatile u16 vu16; ///< 16-bit volatile unsigned integer. -typedef volatile u32 vu32; ///< 32-bit volatile unsigned integer. -typedef volatile u64 vu64; ///< 64-bit volatile unsigned integer. +typedef volatile u8 vu8; ///< 8-bit volatile unsigned integer. +typedef volatile u16 vu16; ///< 16-bit volatile unsigned integer. +typedef volatile u32 vu32; ///< 32-bit volatile unsigned integer. +typedef volatile u64 vu64; ///< 64-bit volatile unsigned integer. +typedef volatile u128 vu128; ///< 128-bit volatile unsigned integer. -typedef volatile s8 vs8; ///< 8-bit volatile signed integer. -typedef volatile s16 vs16; ///< 16-bit volatile signed integer. -typedef volatile s32 vs32; ///< 32-bit volatile signed integer. -typedef volatile s64 vs64; ///< 64-bit volatile signed integer. +typedef volatile s8 vs8; ///< 8-bit volatile signed integer. +typedef volatile s16 vs16; ///< 16-bit volatile signed integer. +typedef volatile s32 vs32; ///< 32-bit volatile signed integer. +typedef volatile s64 vs64; ///< 64-bit volatile signed integer. +typedef volatile s128 vs128; ///< 128-bit volatile signed integer. typedef u32 Handle; ///< Kernel object handle. typedef u32 Result; ///< Function error code result type. typedef void (*ThreadFunc)(void *); ///< Thread entrypoint function. -typedef void (*voidfn)(void); ///< Function without arguments nor return value. - -/// Permission bitmasks -typedef enum { - PERM_NONE = 0, ///< No permissions. - PERM_R = 1, ///< Read permission. - PERM_W = 2, ///< Write permission. - PERM_X = 4, ///< Execute permission. - PERM_RW = PERM_R | PERM_W, ///< Read/write permissions. - PERM_RX = PERM_R | PERM_X, ///< Read/execute permissions. - PERM_DONTCARE = 0x10000000, ///< Don't care -} Permission; +typedef void (*VoidFn)(void); ///< Function without arguments nor return value. /// Creates a bitmask from a bit number. #define BIT(n) (1U<<(n)) diff --git a/nx/source/kernel/jit.c b/nx/source/kernel/jit.c index 4c500026..5e6cc58c 100644 --- a/nx/source/kernel/jit.c +++ b/nx/source/kernel/jit.c @@ -54,10 +54,10 @@ Result jitCreate(Jit* j, size_t size) rc = svcCreateJitMemory(&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 = svcMapJitMemory(j->handle, JitMapOperation_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 = svcMapJitMemory(j->handle, JitMapOperation_MapSlave, j->rx_addr, j->size, Perm_Rx); if (R_FAILED(rc)) { svcMapJitMemory(j->handle, JitMapOperation_UnmapOwner, j->rw_addr, j->size, 0); @@ -113,7 +113,7 @@ Result jitTransitionToExecutable(Jit* j) rc = svcMapProcessCodeMemory(envGetOwnProcessHandle(), (u64) j->rx_addr, (u64) j->src_addr, j->size); if (R_SUCCEEDED(rc)) { - rc = svcSetProcessMemoryPermission(envGetOwnProcessHandle(), (u64) j->rx_addr, j->size, PERM_RX); + rc = svcSetProcessMemoryPermission(envGetOwnProcessHandle(), (u64) j->rx_addr, j->size, Perm_Rx); if (R_FAILED(rc)) { jitTransitionToWritable(j); diff --git a/nx/source/services/hid.c b/nx/source/services/hid.c index d6bcda67..2d60daca 100644 --- a/nx/source/services/hid.c +++ b/nx/source/services/hid.c @@ -56,7 +56,7 @@ Result hidInitialize(void) if (R_SUCCEEDED(rc)) { - shmemLoadRemote(&g_hidSharedmem, sharedmem_handle, 0x40000, PERM_R); + shmemLoadRemote(&g_hidSharedmem, sharedmem_handle, 0x40000, Perm_R); rc = shmemMap(&g_hidSharedmem); } diff --git a/nx/source/services/nv.c b/nx/source/services/nv.c index f0fd7fb0..f52a1327 100644 --- a/nx/source/services/nv.c +++ b/nx/source/services/nv.c @@ -50,7 +50,7 @@ Result nvInitialize(nvServiceType servicetype, size_t transfermem_size) g_nvIpcBufferSize = 0; rc = ipcQueryPointerBufferSize(g_nvSrv.handle, &g_nvIpcBufferSize); - if (R_SUCCEEDED(rc)) rc = tmemCreate(&g_nvTransfermem, transfermem_size, PERM_NONE); + if (R_SUCCEEDED(rc)) rc = tmemCreate(&g_nvTransfermem, transfermem_size, Perm_None); if (R_SUCCEEDED(rc)) rc = _nvInitialize(CUR_PROCESS_HANDLE, g_nvTransfermem.handle, transfermem_size);