diff --git a/rpcs3/Emu/Cell/Modules/sys_prx_.cpp b/rpcs3/Emu/Cell/Modules/sys_prx_.cpp index dd25dfe810..c969d57530 100644 --- a/rpcs3/Emu/Cell/Modules/sys_prx_.cpp +++ b/rpcs3/Emu/Cell/Modules/sys_prx_.cpp @@ -2,6 +2,7 @@ #include "Emu/System.h" #include "Emu/Cell/PPUModule.h" +#include "Emu/Cell/lv2/sys_lwmutex.h" #include "Emu/Cell/lv2/sys_prx.h" #include "sysPrxForUser.h" diff --git a/rpcs3/Emu/Cell/PPUModule.h b/rpcs3/Emu/Cell/PPUModule.h index 6bb44e1b5d..0e259daf10 100644 --- a/rpcs3/Emu/Cell/PPUModule.h +++ b/rpcs3/Emu/Cell/PPUModule.h @@ -56,7 +56,7 @@ struct ppu_static_function struct ppu_static_variable { const char* name; - vm::gvar* var; // Pointer to variable address storage + vm::gvar* var; // Pointer to variable address storage void(*init)(); // Variable initialization function u32 size; u32 align; @@ -150,10 +150,10 @@ public: auto& info = access_static_variable(module, vnid); info.name = name; - info.var = reinterpret_cast*>(Var); + info.var = reinterpret_cast*>(Var); info.init = [] {}; - info.size = sizeof(typename gvar::type); - info.align = alignof(typename gvar::type); + info.size = gvar::alloc_size; + info.align = gvar::alloc_align; info.type = typeid(*Var).name(); info.flags = 0; info.addr = 0; diff --git a/rpcs3/Emu/Memory/vm_var.h b/rpcs3/Emu/Memory/vm_var.h index ba3ba82804..ab8e24a7a5 100644 --- a/rpcs3/Emu/Memory/vm_var.h +++ b/rpcs3/Emu/Memory/vm_var.h @@ -148,9 +148,11 @@ namespace vm } // Global HLE variable - template - struct gvar : ptr + template + struct gvar final : ptr { + static constexpr u32 alloc_size{sizeof(T) * Count}; + static constexpr u32 alloc_align{alignof(T)}; }; } // namespace ps3_ } // namespace vm