From 5f26c2fc8fef285895524adc2686a8793d9b0541 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Wed, 26 Apr 2017 23:38:24 +0300 Subject: [PATCH] REG_FUNC+ macro improved This includes REG_FNID, REG_VAR, REG_VNID Allows to specify alternative function name --- rpcs3/Emu/Cell/Modules/cellAvconfExt.cpp | 2 +- rpcs3/Emu/Cell/Modules/cellSaveData.cpp | 2 +- rpcs3/Emu/Cell/Modules/sys_libc.cpp | 14 ++++---------- rpcs3/Emu/Cell/PPUModule.h | 14 ++++++++++---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/rpcs3/Emu/Cell/Modules/cellAvconfExt.cpp b/rpcs3/Emu/Cell/Modules/cellAvconfExt.cpp index 8297c453bb..3900364608 100644 --- a/rpcs3/Emu/Cell/Modules/cellAvconfExt.cpp +++ b/rpcs3/Emu/Cell/Modules/cellAvconfExt.cpp @@ -146,7 +146,7 @@ s32 cellVideoOutGetScreenSize(u32 videoOut, vm::ptr screenSize) DECLARE(ppu_module_manager::cellAvconfExt)("cellSysutilAvconfExt", []() { - REG_VNID(cellSysutilAvconfExt, 0x00000000, g_gamma).init = [] + REG_VNID(cellSysutilAvconfExt, 0x00000000u, g_gamma).init = [] { // Test *g_gamma = 1.0f; diff --git a/rpcs3/Emu/Cell/Modules/cellSaveData.cpp b/rpcs3/Emu/Cell/Modules/cellSaveData.cpp index 52b961c4d9..be44971810 100644 --- a/rpcs3/Emu/Cell/Modules/cellSaveData.cpp +++ b/rpcs3/Emu/Cell/Modules/cellSaveData.cpp @@ -995,7 +995,7 @@ s32 cellSaveDataUserGetListItem(u32 userId, vm::cptr dirName, vm::ptr dst, vm::cptr src, u32 size) { - void memcpy(vm::ptr dst, vm::cptr src, u32 size) - { - sys_libc.trace("memcpy(dst=*0x%x, src=*0x%x, size=0x%x)", dst, src, size); + sys_libc.trace("memcpy(dst=*0x%x, src=*0x%x, size=0x%x)", dst, src, size); - ::memcpy(dst.get_ptr(), src.get_ptr(), size); - } + ::memcpy(dst.get_ptr(), src.get_ptr(), size); } -// Define macro for namespace -#define REG_FUNC_(name) REG_FNID(sys_libc, ppu_generate_id(#name), sys_libc_func::name) - DECLARE(ppu_module_manager::sys_libc)("sys_libc", []() { - REG_FUNC_(memcpy); + REG_FNID(sys_libc, "memcpy", sys_libc_memcpy); }); diff --git a/rpcs3/Emu/Cell/PPUModule.h b/rpcs3/Emu/Cell/PPUModule.h index 8d93cfb51a..99327ec1ef 100644 --- a/rpcs3/Emu/Cell/PPUModule.h +++ b/rpcs3/Emu/Cell/PPUModule.h @@ -9,6 +9,12 @@ // Generate FNID or VNID for given name extern u32 ppu_generate_id(const char* name); +// Overload for REG_FNID, REG_VNID macro +constexpr u32 ppu_generate_id(u32 id) +{ + return id; +} + // Flags set with REG_FUNC enum ppu_static_function_flags : u32 { @@ -220,12 +226,12 @@ inline RT ppu_execute_function_or_callback(const char* name, ppu_thread& ppu, Ar #define CALL_FUNC(ppu, func, ...) ppu_execute_function_or_callback(#func, ppu, __VA_ARGS__) -#define REG_FNID(module, nid, func) ppu_module_manager::register_static_function(#module, #func, BIND_FUNC(func), nid) +#define REG_FNID(module, nid, func) ppu_module_manager::register_static_function(#module, #func, BIND_FUNC(func), ppu_generate_id(nid)) -#define REG_FUNC(module, func) REG_FNID(module, ppu_generate_id(#func), func) +#define REG_FUNC(module, func) REG_FNID(module, #func, func) -#define REG_VNID(module, nid, var) ppu_module_manager::register_static_variable(#module, #var, nid) +#define REG_VNID(module, nid, var) ppu_module_manager::register_static_variable(#module, #var, ppu_generate_id(nid)) -#define REG_VAR(module, var) REG_VNID(module, ppu_generate_id(#var), var) +#define REG_VAR(module, var) REG_VNID(module, #var, var) #define UNIMPLEMENTED_FUNC(module) module.todo("%s", __func__)