From 8c648b59cdf1a8897aee65fd4d6161d01fce68e3 Mon Sep 17 00:00:00 2001 From: greggameplayer <33609333+greggameplayer@users.noreply.github.com> Date: Wed, 23 May 2018 12:34:42 +0200 Subject: correct placement and add size check --- src/core/hle/service/nvdrv/devices/nvmap.h | 46 ++++++++++++++++-------------- 1 file changed, 25 insertions(+), 21 deletions(-) (limited to 'src/core') diff --git a/src/core/hle/service/nvdrv/devices/nvmap.h b/src/core/hle/service/nvdrv/devices/nvmap.h index 5a3044167..39fafaa7c 100644 --- a/src/core/hle/service/nvdrv/devices/nvmap.h +++ b/src/core/hle/service/nvdrv/devices/nvmap.h @@ -59,17 +59,25 @@ private: Create = 0xC0080101, FromId = 0xC0080103, Alloc = 0xC0200104, + Free = 0xC0180105, Param = 0xC00C0109, GetId = 0xC008010E, - Free = 0xC0180105, }; - struct IocCreateParams { // Input u32_le size; // Output u32_le handle; }; + static_assert(sizeof(IocCreateParams) == 8, "IocCreateParams has wrong size"); + + struct IocFromIdParams { + // Input + u32_le id; + // Output + u32_le handle; + }; + static_assert(sizeof(IocFromIdParams) == 8, "IocFromIdParams has wrong size"); struct IocAllocParams { // Input @@ -81,37 +89,33 @@ private: INSERT_PADDING_BYTES(7); u64_le addr; }; + static_assert(sizeof(IocAllocParams) == 32, "IocAllocParams has wrong size"); - struct IocGetIdParams { - // Output - u32_le id; - // Input - u32_le handle; - }; - - struct IocFromIdParams { - // Input - u32_le id; - // Output + struct IocFreeParams { u32_le handle; + INSERT_PADDING_BYTES(4); + u64_le refcount; + u32_le size; + u32_le flags; }; + static_assert(sizeof(IocFreeParams) == 24, "IocFreeParams has wrong size"); struct IocParamParams { // Input u32_le handle; - u32_le type; + u32_le param; // Output - u32_le value; + u32_le result; }; + static_assert(sizeof(IocParamParams) == 12, "IocParamParams has wrong size"); - struct IocFreeParams { + struct IocGetIdParams { + // Output + u32_le id; + // Input u32_le handle; - INSERT_PADDING_BYTES(4); - u64_le refcount; - u32_le size; - u32_le flags; }; - static_assert(sizeof(IocFreeParams) == 24, "IocFreeParams has wrong size"); + static_assert(sizeof(IocGetIdParams) == 8, "IocGetIdParams has wrong size"); u32 IocCreate(const std::vector& input, std::vector& output); u32 IocAlloc(const std::vector& input, std::vector& output); -- cgit v1.2.3