diff --git a/rpcs3/Emu/SysCalls/Modules/cellPamf.cpp b/rpcs3/Emu/SysCalls/Modules/cellPamf.cpp index 9d134b1127..99f33d230a 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellPamf.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellPamf.cpp @@ -112,7 +112,7 @@ int cellPamfGetHeaderSize(mem_ptr_t pAddr, u64 fileSize, mem64_t pSi cellPamf.Warning("cellPamfGetHeaderSize(pAddr=0x%x, fileSize=%d, pSize_addr=0x%x)", pAddr.GetAddr(), fileSize, pSize.GetAddr()); - if (!pAddr.IsGood() || !pSize.IsGood()) + if (!Memory.IsGoodAddr(pAddr.GetAddr(), 2048) || !pSize.IsGood()) return CELL_PAMF_ERROR_INVALID_ARG; //if ((u32)pAddr->magic != 0x464d4150) @@ -128,7 +128,7 @@ int cellPamfGetHeaderSize2(mem_ptr_t pAddr, u64 fileSize, u32 attrib cellPamf.Warning("cellPamfGetHeaderSize2(pAddr=0x%x, fileSize=%d, attribute=0x%x, pSize_addr=0x%x)", pAddr.GetAddr(), fileSize, attribute, pSize.GetAddr()); - if (!pAddr.IsGood() || !pSize.IsGood()) + if (!Memory.IsGoodAddr(pAddr.GetAddr(), 2048) || !pSize.IsGood()) return CELL_PAMF_ERROR_INVALID_ARG; //if ((u32)pAddr->magic != 0x464d4150) @@ -144,7 +144,7 @@ int cellPamfGetStreamOffsetAndSize(mem_ptr_t pAddr, u64 fileSize, me cellPamf.Warning("cellPamfGetStreamOffsetAndSize(pAddr=0x%x, fileSize=%d, pOffset_addr=0x%x, pSize_addr=0x%x)", pAddr.GetAddr(), fileSize, pOffset.GetAddr(), pSize.GetAddr()); - if (!pAddr.IsGood() || !pOffset.IsGood() || !pSize.IsGood()) + if (!Memory.IsGoodAddr(pAddr.GetAddr(), 2048) || !pOffset.IsGood() || !pSize.IsGood()) return CELL_PAMF_ERROR_INVALID_ARG; //if ((u32)pAddr->magic != 0x464d4150) @@ -161,7 +161,7 @@ int cellPamfVerify(mem_ptr_t pAddr, u64 fileSize) { cellPamf.Warning("cellPamfVerify(pAddr=0x%x, fileSize=%d)", pAddr.GetAddr(), fileSize); - if (!pAddr.IsGood()) + if (!Memory.IsGoodAddr(pAddr.GetAddr(), 2048)) return CELL_PAMF_ERROR_INVALID_ARG; return CELL_OK; @@ -176,7 +176,7 @@ int cellPamfReaderInitialize(mem_ptr_t pSelf, mem_ptr_tsignal.GetOwner() == tid) + if (ef->signal.unlock(tid, tid) == SMR_OK) { SMutexLocker lock(ef->m_mutex); @@ -200,7 +200,7 @@ int sys_event_flag_wait(u32 eflag_id, u64 bitptn, u32 mode, mem64_t result, u64 int sys_event_flag_trywait(u32 eflag_id, u64 bitptn, u32 mode, mem64_t result) { - sys_event_flag.Warning("sys_event_flag_trywait(eflag_id=%d, bitptn=0x%llx, mode=0x%x, result_addr=0x%x)", + sys_event_flag.Log("sys_event_flag_trywait(eflag_id=%d, bitptn=0x%llx, mode=0x%x, result_addr=0x%x)", eflag_id, bitptn, mode, result.GetAddr()); if (result.IsGood()) result = 0; @@ -257,7 +257,7 @@ int sys_event_flag_trywait(u32 eflag_id, u64 bitptn, u32 mode, mem64_t result) int sys_event_flag_set(u32 eflag_id, u64 bitptn) { - sys_event_flag.Warning("sys_event_flag_set(eflag_id=%d, bitptn=0x%llx)", eflag_id, bitptn); + sys_event_flag.Log("sys_event_flag_set(eflag_id=%d, bitptn=0x%llx)", eflag_id, bitptn); EventFlag* ef; if(!sys_event_flag.CheckId(eflag_id, ef)) return CELL_ESRCH; @@ -282,7 +282,7 @@ int sys_event_flag_set(u32 eflag_id, u64 bitptn) int sys_event_flag_clear(u32 eflag_id, u64 bitptn) { - sys_event_flag.Warning("sys_event_flag_clear(eflag_id=%d, bitptn=0x%llx)", eflag_id, bitptn); + sys_event_flag.Log("sys_event_flag_clear(eflag_id=%d, bitptn=0x%llx)", eflag_id, bitptn); EventFlag* ef; if(!sys_event_flag.CheckId(eflag_id, ef)) return CELL_ESRCH; @@ -295,7 +295,7 @@ int sys_event_flag_clear(u32 eflag_id, u64 bitptn) int sys_event_flag_cancel(u32 eflag_id, mem32_t num) { - sys_event_flag.Warning("sys_event_flag_cancel(eflag_id=%d, num_addr=0x%x)", eflag_id, num.GetAddr()); + sys_event_flag.Log("sys_event_flag_cancel(eflag_id=%d, num_addr=0x%x)", eflag_id, num.GetAddr()); EventFlag* ef; if(!sys_event_flag.CheckId(eflag_id, ef)) return CELL_ESRCH; @@ -314,7 +314,6 @@ int sys_event_flag_cancel(u32 eflag_id, mem32_t num) for (u32 i = 0; i < tids.size(); i++) { - if (Emu.IsStopped()) break; ef->signal.lock(tids[i]); } @@ -339,7 +338,7 @@ int sys_event_flag_cancel(u32 eflag_id, mem32_t num) int sys_event_flag_get(u32 eflag_id, mem64_t flags) { - sys_event_flag.Warning("sys_event_flag_get(eflag_id=%d, flags_addr=0x%x)", eflag_id, flags.GetAddr()); + sys_event_flag.Log("sys_event_flag_get(eflag_id=%d, flags_addr=0x%x)", eflag_id, flags.GetAddr()); EventFlag* ef; if(!sys_event_flag.CheckId(eflag_id, ef)) return CELL_ESRCH; @@ -349,7 +348,8 @@ int sys_event_flag_get(u32 eflag_id, mem64_t flags) return CELL_EFAULT; } - flags = ef->flags; // ??? + SMutexLocker lock(ef->m_mutex); + flags = ef->flags; return CELL_OK; }