From a22297f205d0079d2f48eef6b8998241fb57cd87 Mon Sep 17 00:00:00 2001 From: eladash Date: Fri, 22 Feb 2019 14:45:01 +0200 Subject: [PATCH] exception throwing fix in sys_lwmutex_create arg6 doesnt exist, if arg4 is not negative name is discarded and treated as 0. --- rpcs3/Emu/Cell/Modules/sys_lwmutex_.cpp | 2 +- rpcs3/Emu/Cell/lv2/sys_lwmutex.cpp | 8 ++++---- rpcs3/Emu/Cell/lv2/sys_lwmutex.h | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/rpcs3/Emu/Cell/Modules/sys_lwmutex_.cpp b/rpcs3/Emu/Cell/Modules/sys_lwmutex_.cpp index ac1fb7c4bc..d2b32445f0 100644 --- a/rpcs3/Emu/Cell/Modules/sys_lwmutex_.cpp +++ b/rpcs3/Emu/Cell/Modules/sys_lwmutex_.cpp @@ -42,7 +42,7 @@ error_code sys_lwmutex_create(vm::ptr lwmutex, vm::ptrflags = 0; attrs->name_u64 = attr->name_u64; - if (error_code res = g_cfg.core.hle_lwmutex ? sys_mutex_create(out_id, attrs) : _sys_lwmutex_create(out_id, protocol, lwmutex, 0x80000001, attr->name_u64, 0)) + if (error_code res = g_cfg.core.hle_lwmutex ? sys_mutex_create(out_id, attrs) : _sys_lwmutex_create(out_id, protocol, lwmutex, 0x80000001, attr->name_u64)) { return res; } diff --git a/rpcs3/Emu/Cell/lv2/sys_lwmutex.cpp b/rpcs3/Emu/Cell/lv2/sys_lwmutex.cpp index 42161acabd..bc5372d7a0 100644 --- a/rpcs3/Emu/Cell/lv2/sys_lwmutex.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_lwmutex.cpp @@ -13,9 +13,9 @@ LOG_CHANNEL(sys_lwmutex); extern u64 get_system_time(); -error_code _sys_lwmutex_create(vm::ptr lwmutex_id, u32 protocol, vm::ptr control, u32 arg4, u64 name, u32 arg6) +error_code _sys_lwmutex_create(vm::ptr lwmutex_id, u32 protocol, vm::ptr control, s32 has_name, u64 name) { - sys_lwmutex.warning("_sys_lwmutex_create(lwmutex_id=*0x%x, protocol=0x%x, control=*0x%x, arg4=0x%x, name=0x%llx, arg6=0x%x)", lwmutex_id, protocol, control, arg4, name, arg6); + sys_lwmutex.warning("_sys_lwmutex_create(lwmutex_id=*0x%x, protocol=0x%x, control=*0x%x, arg4=0x%x, name=0x%llx, arg6=0x%x)", lwmutex_id, protocol, control, has_name, name); if (protocol == SYS_SYNC_RETRY) sys_lwmutex.todo("_sys_lwmutex_create(): SYS_SYNC_RETRY"); @@ -26,9 +26,9 @@ error_code _sys_lwmutex_create(vm::ptr lwmutex_id, u32 protocol, vm::ptr(protocol, control, name)) diff --git a/rpcs3/Emu/Cell/lv2/sys_lwmutex.h b/rpcs3/Emu/Cell/lv2/sys_lwmutex.h index b17ec0f1aa..30e3ea6d01 100644 --- a/rpcs3/Emu/Cell/lv2/sys_lwmutex.h +++ b/rpcs3/Emu/Cell/lv2/sys_lwmutex.h @@ -74,7 +74,7 @@ class ppu_thread; // Syscalls -error_code _sys_lwmutex_create(vm::ptr lwmutex_id, u32 protocol, vm::ptr control, u32 arg4, u64 name, u32 arg6); +error_code _sys_lwmutex_create(vm::ptr lwmutex_id, u32 protocol, vm::ptr control, s32 has_name, u64 name); error_code _sys_lwmutex_destroy(u32 lwmutex_id); error_code _sys_lwmutex_lock(ppu_thread& ppu, u32 lwmutex_id, u64 timeout); error_code _sys_lwmutex_trylock(u32 lwmutex_id);