From 6cb2d9e2d05373241e44788deb38595cb1ebcf2f Mon Sep 17 00:00:00 2001 From: Eladash Date: Thu, 15 Sep 2022 23:15:50 +0300 Subject: [PATCH] Exterimental: LV2: Add cpu_flag::unmem --- rpcs3/Emu/CPU/CPUThread.cpp | 46 +++++--- rpcs3/Emu/CPU/CPUThread.h | 1 + rpcs3/Emu/Cell/Modules/cellVdec.cpp | 14 +-- rpcs3/Emu/Cell/Modules/sys_ppu_thread_.cpp | 2 +- rpcs3/Emu/Cell/PPUThread.cpp | 4 +- rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp | 2 +- rpcs3/Emu/Cell/SPURecompiler.cpp | 2 +- rpcs3/Emu/Cell/SPUThread.cpp | 4 +- rpcs3/Emu/Cell/lv2/lv2.cpp | 17 ++- rpcs3/Emu/Cell/lv2/sys_cond.cpp | 14 +-- rpcs3/Emu/Cell/lv2/sys_event.cpp | 24 ++-- rpcs3/Emu/Cell/lv2/sys_event_flag.cpp | 18 +-- rpcs3/Emu/Cell/lv2/sys_fs.cpp | 46 ++++---- rpcs3/Emu/Cell/lv2/sys_interrupt.cpp | 8 +- rpcs3/Emu/Cell/lv2/sys_lwcond.cpp | 12 +- rpcs3/Emu/Cell/lv2/sys_lwmutex.cpp | 14 +-- rpcs3/Emu/Cell/lv2/sys_memory.cpp | 18 +-- rpcs3/Emu/Cell/lv2/sys_mmapper.cpp | 26 ++--- rpcs3/Emu/Cell/lv2/sys_mutex.cpp | 12 +- rpcs3/Emu/Cell/lv2/sys_net.cpp | 54 ++++----- rpcs3/Emu/Cell/lv2/sys_ppu_thread.cpp | 26 ++--- rpcs3/Emu/Cell/lv2/sys_process.cpp | 6 +- rpcs3/Emu/Cell/lv2/sys_prx.cpp | 46 ++++---- rpcs3/Emu/Cell/lv2/sys_rsx.cpp | 24 ++-- rpcs3/Emu/Cell/lv2/sys_rwlock.cpp | 20 ++-- rpcs3/Emu/Cell/lv2/sys_semaphore.cpp | 14 +-- rpcs3/Emu/Cell/lv2/sys_spu.cpp | 122 ++++++++++----------- rpcs3/Emu/Cell/lv2/sys_timer.cpp | 18 +-- rpcs3/Emu/Cell/lv2/sys_uart.cpp | 2 +- rpcs3/Emu/Cell/lv2/sys_usbd.cpp | 48 ++++---- rpcs3/Emu/Cell/lv2/sys_vm.cpp | 28 ++--- rpcs3/Emu/Memory/vm.cpp | 12 +- rpcs3/Emu/RSX/RSXThread.h | 2 +- 33 files changed, 369 insertions(+), 337 deletions(-) diff --git a/rpcs3/Emu/CPU/CPUThread.cpp b/rpcs3/Emu/CPU/CPUThread.cpp index a246fb360052..da2f8e4022c4 100644 --- a/rpcs3/Emu/CPU/CPUThread.cpp +++ b/rpcs3/Emu/CPU/CPUThread.cpp @@ -46,6 +46,7 @@ void fmt_class_string::format(std::string& out, u64 arg) case cpu_flag::stop: return "STOP"; case cpu_flag::exit: return "EXIT"; case cpu_flag::wait: return "w"; + case cpu_flag::unmem: return "un"; case cpu_flag::temp: return "t"; case cpu_flag::pause: return "p"; case cpu_flag::suspend: return "s"; @@ -498,10 +499,10 @@ void cpu_thread::operator()() cpu_thread* _cpu = get_current_cpu_thread(); // Wait flag isn't set asynchronously so this should be thread-safe - if (progress == 0 && _cpu->state.none_of(cpu_flag::wait + cpu_flag::temp)) + if (progress == 0 && _cpu->state.none_of(cpu_flag::unmem + cpu_flag::temp + cpu_flag::wait)) { // Operation just started and syscall is imminent - _cpu->state += cpu_flag::wait + cpu_flag::temp; + _cpu->state += cpu_flag::unmem + cpu_flag::temp; wait_set = true; return; } @@ -661,12 +662,12 @@ bool cpu_thread::check_state() noexcept if (flags & cpu_flag::pause && s_tls_thread_slot != umax) { - // Save value before state is saved and cpu_flag::wait is observed + // Save value before state is saved and cpu_flag::unmem is observed if (s_tls_sctr == umax) { u64 ctr = g_suspend_counter; - if (flags & cpu_flag::wait) + if (flags & (cpu_flag::unmem + cpu_flag::wait)) { if ((ctr & 3) == 2) { @@ -695,7 +696,6 @@ bool cpu_thread::check_state() noexcept { // Sticky flag, indicates check_state() is not allowed to return true flags -= cpu_flag::temp; - flags -= cpu_flag::wait; cpu_can_stop = false; store = true; } @@ -756,9 +756,9 @@ bool cpu_thread::check_state() noexcept return store; } - if (flags & cpu_flag::wait) + if (flags & (cpu_flag::wait + cpu_flag::unmem)) { - flags -= cpu_flag::wait; + flags -= (cpu_flag::wait + cpu_flag::unmem); store = true; } @@ -766,9 +766,29 @@ bool cpu_thread::check_state() noexcept } else { - if (cpu_can_stop && !(flags & cpu_flag::wait)) + if (cpu_can_stop) { - flags += cpu_flag::wait; + if (flags & (cpu_flag::yield + cpu_flag::preempt)) + { + flags -= (cpu_flag::yield + cpu_flag::preempt); + store = true; + } + + if (::is_stopped(flags) == !(flags & cpu_flag::wait)) + { + flags ^= cpu_flag::wait; + store = true; + } + + if (!(flags & cpu_flag::unmem)) + { + flags += cpu_flag::unmem; + store = true; + } + } + else if (flags & (cpu_flag::wait + cpu_flag::unmem)) + { + flags -= (cpu_flag::wait + cpu_flag::unmem); store = true; } @@ -780,7 +800,7 @@ bool cpu_thread::check_state() noexcept return store; }).first; - if (state0 & cpu_flag::preempt && cpu_can_stop) + if ((state0 - state1) & cpu_flag::preempt) { if (cpu_flag::wait - state0) { @@ -1116,7 +1136,7 @@ std::string cpu_thread::dump_misc() const bool cpu_thread::suspend_work::push(cpu_thread* _this) noexcept { // Can't allow pre-set wait bit (it'd be a problem) - ensure(!_this || !(_this->state & cpu_flag::wait)); + ensure(!_this || !(_this->state & (cpu_flag::unmem + cpu_flag::wait))); do { @@ -1168,7 +1188,7 @@ bool cpu_thread::suspend_work::push(cpu_thread* _this) noexcept copy = cpu_counter::for_all_cpu(copy, [&](cpu_thread* cpu, u32 /*index*/) { - if (cpu->state.fetch_add(cpu_flag::pause) & cpu_flag::wait) + if (cpu->state.fetch_add(cpu_flag::pause) & (cpu_flag::unmem + cpu_flag::wait)) { // Clear bits as long as wait flag is set return false; @@ -1182,7 +1202,7 @@ bool cpu_thread::suspend_work::push(cpu_thread* _this) noexcept // Check only CPUs which haven't acknowledged their waiting state yet copy = cpu_counter::for_all_cpu(copy, [&](cpu_thread* cpu, u32 /*index*/) { - if (cpu->state & cpu_flag::wait) + if (cpu->state & (cpu_flag::unmem + cpu_flag::wait)) { return false; } diff --git a/rpcs3/Emu/CPU/CPUThread.h b/rpcs3/Emu/CPU/CPUThread.h index 8885969a6f2a..282f07337aa0 100644 --- a/rpcs3/Emu/CPU/CPUThread.h +++ b/rpcs3/Emu/CPU/CPUThread.h @@ -15,6 +15,7 @@ enum class cpu_flag : u32 stop, // Thread not running (HLE, initial state) exit, // Irreversible exit wait, // Indicates waiting state, set by the thread itself + unmem, // Thread has unlocked memory mutex temp, // Indicates that the thread cannot properly return after next check_state() pause, // Thread suspended by suspend_all technique suspend, // Thread suspended diff --git a/rpcs3/Emu/Cell/Modules/cellVdec.cpp b/rpcs3/Emu/Cell/Modules/cellVdec.cpp index e9ca207bcf91..897b96b8e182 100644 --- a/rpcs3/Emu/Cell/Modules/cellVdec.cpp +++ b/rpcs3/Emu/Cell/Modules/cellVdec.cpp @@ -998,7 +998,7 @@ error_code cellVdecClose(ppu_thread& ppu, u32 handle) error_code cellVdecStartSeq(ppu_thread& ppu, u32 handle) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; cellVdec.warning("cellVdecStartSeq(handle=0x%x)", handle); @@ -1050,7 +1050,7 @@ error_code cellVdecStartSeq(ppu_thread& ppu, u32 handle) error_code cellVdecEndSeq(ppu_thread& ppu, u32 handle) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; cellVdec.warning("cellVdecEndSeq(handle=0x%x)", handle); @@ -1083,7 +1083,7 @@ error_code cellVdecEndSeq(ppu_thread& ppu, u32 handle) error_code cellVdecDecodeAu(ppu_thread& ppu, u32 handle, CellVdecDecodeMode mode, vm::cptr auInfo) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; cellVdec.trace("cellVdecDecodeAu(handle=0x%x, mode=%d, auInfo=*0x%x)", handle, +mode, auInfo); @@ -1131,7 +1131,7 @@ error_code cellVdecDecodeAu(ppu_thread& ppu, u32 handle, CellVdecDecodeMode mode error_code cellVdecDecodeAuEx2(ppu_thread& ppu, u32 handle, CellVdecDecodeMode mode, vm::cptr auInfo) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; cellVdec.todo("cellVdecDecodeAuEx2(handle=0x%x, mode=%d, auInfo=*0x%x)", handle, +mode, auInfo); @@ -1187,7 +1187,7 @@ error_code cellVdecDecodeAuEx2(ppu_thread& ppu, u32 handle, CellVdecDecodeMode m error_code cellVdecGetPictureExt(ppu_thread& ppu, u32 handle, vm::cptr format, vm::ptr outBuff, u32 arg4) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; cellVdec.trace("cellVdecGetPictureExt(handle=0x%x, format=*0x%x, outBuff=*0x%x, arg4=*0x%x)", handle, format, outBuff, arg4); @@ -1334,7 +1334,7 @@ error_code cellVdecGetPictureExt(ppu_thread& ppu, u32 handle, vm::cptr format, vm::ptr outBuff) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; cellVdec.trace("cellVdecGetPicture(handle=0x%x, format=*0x%x, outBuff=*0x%x)", handle, format, outBuff); @@ -1355,7 +1355,7 @@ error_code cellVdecGetPicture(ppu_thread& ppu, u32 handle, vm::cptr picItem) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; cellVdec.trace("cellVdecGetPicItem(handle=0x%x, picItem=**0x%x)", handle, picItem); diff --git a/rpcs3/Emu/Cell/Modules/sys_ppu_thread_.cpp b/rpcs3/Emu/Cell/Modules/sys_ppu_thread_.cpp index cb3f5f62d1d2..9c13b1376ef8 100644 --- a/rpcs3/Emu/Cell/Modules/sys_ppu_thread_.cpp +++ b/rpcs3/Emu/Cell/Modules/sys_ppu_thread_.cpp @@ -125,7 +125,7 @@ void sys_initialize_tls(ppu_thread& ppu, u64 main_thread_id, u32 tls_seg_addr, u error_code sys_ppu_thread_create(ppu_thread& ppu, vm::ptr thread_id, u32 entry, u64 arg, s32 prio, u32 stacksize, u64 flags, vm::cptr threadname) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sysPrxForUser.warning("sys_ppu_thread_create(thread_id=*0x%x, entry=0x%x, arg=0x%llx, prio=%d, stacksize=0x%x, flags=0x%llx, threadname=%s)", thread_id, entry, arg, prio, stacksize, flags, threadname); diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index 9f3320cdf7a5..eafb4b307186 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -1501,8 +1501,8 @@ void ppu_thread::cpu_sleep() // Clear reservation raddr = 0; - // Setup wait flag and memory flags to relock itself - state += g_use_rtm ? cpu_flag::wait : cpu_flag::wait + cpu_flag::memory; + // Setup unmem flag and memory flags to relock itself + state += g_use_rtm ? cpu_flag::unmem : cpu_flag::unmem + cpu_flag::memory; if (auto ptr = vm::g_tls_locked) { diff --git a/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp b/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp index fd2cc4b6312b..aaea25acdebc 100644 --- a/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp +++ b/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp @@ -1446,7 +1446,7 @@ void spu_recompiler::RDCH(spu_opcode_t op) if (out > 1500) { - _spu->state += cpu_flag::wait; + _spu->state += cpu_flag::unmem; std::this_thread::yield(); if (_spu->test_stopped()) diff --git a/rpcs3/Emu/Cell/SPURecompiler.cpp b/rpcs3/Emu/Cell/SPURecompiler.cpp index 659363eb7073..e17a1b1d30f7 100644 --- a/rpcs3/Emu/Cell/SPURecompiler.cpp +++ b/rpcs3/Emu/Cell/SPURecompiler.cpp @@ -6195,7 +6195,7 @@ class spu_llvm_recompiler : public spu_recompiler_base, public cpu_translator if (res > 1500 && g_cfg.core.spu_loop_detection) { - _spu->state += cpu_flag::wait; + _spu->state += cpu_flag::unmem; std::this_thread::yield(); static_cast(_spu->test_stopped()); } diff --git a/rpcs3/Emu/Cell/SPUThread.cpp b/rpcs3/Emu/Cell/SPUThread.cpp index 12b783bc8a99..e7fc3a124c1f 100644 --- a/rpcs3/Emu/Cell/SPUThread.cpp +++ b/rpcs3/Emu/Cell/SPUThread.cpp @@ -4248,6 +4248,7 @@ s64 spu_thread::get_ch_value(u32 ch) spu_function_logger logger(*this, "MFC Events read"); lv2_obj::prepare_for_sleep(*this); + state += cpu_flag::wait; using resrv_ptr = std::add_pointer_t; @@ -4958,6 +4959,7 @@ bool spu_thread::stop_and_signal(u32 code) } lv2_obj::prepare_for_sleep(*this); + state += cpu_flag::wait; spu_function_logger logger(*this, "sys_spu_thread_receive_event"); @@ -5057,7 +5059,7 @@ bool spu_thread::stop_and_signal(u32 code) while (auto old = +state) { - if (old & cpu_flag::signal && state.test_and_reset(cpu_flag::signal)) + if (old & cpu_flag::signal) { break; } diff --git a/rpcs3/Emu/Cell/lv2/lv2.cpp b/rpcs3/Emu/Cell/lv2/lv2.cpp index f8a88dabea39..d04b438ad7c6 100644 --- a/rpcs3/Emu/Cell/lv2/lv2.cpp +++ b/rpcs3/Emu/Cell/lv2/lv2.cpp @@ -1341,7 +1341,7 @@ bool lv2_obj::sleep_unlocked(cpu_thread& thread, u64 timeout, u64 current_time) { if (!(val & cpu_flag::signal)) { - val += cpu_flag::suspend; + val += cpu_flag::suspend + cpu_flag::wait; // Flag used for forced timeout notification ensure(!timeout || !(val & cpu_flag::notify)); @@ -1471,6 +1471,7 @@ bool lv2_obj::awake_unlocked(cpu_thread* cpu, s32 prio) } ppu->start_time = get_guest_system_time(); + ppu->state += cpu_flag::suspend + cpu_flag::wait; break; } @@ -1554,12 +1555,16 @@ bool lv2_obj::awake_unlocked(cpu_thread* cpu, s32 prio) // Suspend threads if necessary for (usz i = 0, thread_count = g_cfg.core.ppu_threads; target; target = target->next_ppu, i++) { - if (i >= thread_count && cpu_flag::suspend - target->state) + if (i >= thread_count && cpu_flag::suspend - target->state && target->state.atomic_op([](bs_t& state) + { + ensure(cpu_flag::suspend - state); + state += cpu_flag::suspend; + return state.none_of(cpu_flag::wait + cpu_flag::signal); + })) { ppu_log.trace("suspend(): %s", target->id); target->ack_suspend = true; g_pending++; - ensure(!target->state.test_and_set(cpu_flag::suspend)); if (is_paused(target->state - cpu_flag::suspend)) { @@ -1605,9 +1610,13 @@ void lv2_obj::schedule_all(u64 current_time) if (target->state & cpu_flag::suspend) { ppu_log.trace("schedule(): %s", target->id); - target->state.atomic_op(FN(x += cpu_flag::signal, x -= cpu_flag::suspend)); target->start_time = 0; + if ((cpu_flag::signal + cpu_flag::wait) - target->state.fetch_op(FN(x += cpu_flag::signal, x -= cpu_flag::suspend, void())) != cpu_flag::signal) + { + continue; + } + if (notify_later_idx == std::size(g_to_notify)) { // Out of notification slots, notify locally (resizable container is not worth it) diff --git a/rpcs3/Emu/Cell/lv2/sys_cond.cpp b/rpcs3/Emu/Cell/lv2/sys_cond.cpp index 9ddbdba868b5..fc727289dd5d 100644 --- a/rpcs3/Emu/Cell/lv2/sys_cond.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_cond.cpp @@ -72,7 +72,7 @@ void lv2_cond::save(utils::serial& ar) error_code sys_cond_create(ppu_thread& ppu, vm::ptr cond_id, u32 mutex_id, vm::ptr attr) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_cond.warning("sys_cond_create(cond_id=*0x%x, mutex_id=0x%x, attr=*0x%x)", cond_id, mutex_id, attr); @@ -105,7 +105,7 @@ error_code sys_cond_create(ppu_thread& ppu, vm::ptr cond_id, u32 mutex_id, error_code sys_cond_destroy(ppu_thread& ppu, u32 cond_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_cond.warning("sys_cond_destroy(cond_id=0x%x)", cond_id); @@ -138,7 +138,7 @@ error_code sys_cond_destroy(ppu_thread& ppu, u32 cond_id) error_code sys_cond_signal(ppu_thread& ppu, u32 cond_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_cond.trace("sys_cond_signal(cond_id=0x%x)", cond_id); @@ -176,7 +176,7 @@ error_code sys_cond_signal(ppu_thread& ppu, u32 cond_id) error_code sys_cond_signal_all(ppu_thread& ppu, u32 cond_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_cond.trace("sys_cond_signal_all(cond_id=0x%x)", cond_id); @@ -224,7 +224,7 @@ error_code sys_cond_signal_all(ppu_thread& ppu, u32 cond_id) error_code sys_cond_signal_to(ppu_thread& ppu, u32 cond_id, u32 thread_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_cond.trace("sys_cond_signal_to(cond_id=0x%x, thread_id=0x%x)", cond_id, thread_id); @@ -279,7 +279,7 @@ error_code sys_cond_signal_to(ppu_thread& ppu, u32 cond_id, u32 thread_id) error_code sys_cond_wait(ppu_thread& ppu, u32 cond_id, u64 timeout) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_cond.trace("sys_cond_wait(cond_id=0x%x, timeout=%lld)", cond_id, timeout); @@ -360,7 +360,7 @@ error_code sys_cond_wait(ppu_thread& ppu, u32 cond_id, u64 timeout) while (auto state = +ppu.state) { - if (state & cpu_flag::signal && ppu.state.test_and_reset(cpu_flag::signal)) + if (state & cpu_flag::signal) { break; } diff --git a/rpcs3/Emu/Cell/lv2/sys_event.cpp b/rpcs3/Emu/Cell/lv2/sys_event.cpp index 8ba38e586c9c..94c86023a188 100644 --- a/rpcs3/Emu/Cell/lv2/sys_event.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_event.cpp @@ -183,7 +183,7 @@ CellError lv2_event_queue::send(lv2_event event) error_code sys_event_queue_create(cpu_thread& cpu, vm::ptr equeue_id, vm::ptr attr, u64 ipc_key, s32 size) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_event.warning("sys_event_queue_create(equeue_id=*0x%x, attr=*0x%x, ipc_key=0x%llx, size=%d)", equeue_id, attr, ipc_key, size); @@ -226,7 +226,7 @@ error_code sys_event_queue_create(cpu_thread& cpu, vm::ptr equeue_id, vm::p error_code sys_event_queue_destroy(ppu_thread& ppu, u32 equeue_id, s32 mode) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_event.warning("sys_event_queue_destroy(equeue_id=0x%x, mode=%d)", equeue_id, mode); @@ -365,7 +365,7 @@ error_code sys_event_queue_destroy(ppu_thread& ppu, u32 equeue_id, s32 mode) error_code sys_event_queue_tryreceive(ppu_thread& ppu, u32 equeue_id, vm::ptr event_array, s32 size, vm::ptr number) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_event.trace("sys_event_queue_tryreceive(equeue_id=0x%x, event_array=*0x%x, size=%d, number=*0x%x)", equeue_id, event_array, size, number); @@ -406,7 +406,7 @@ error_code sys_event_queue_tryreceive(ppu_thread& ppu, u32 equeue_id, vm::ptr dummy_event, u64 timeout) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_event.trace("sys_event_queue_receive(equeue_id=0x%x, *0x%x, timeout=0x%llx)", equeue_id, dummy_event, timeout); @@ -463,7 +463,7 @@ error_code sys_event_queue_receive(ppu_thread& ppu, u32 equeue_id, vm::ptr eport_id, s32 port_type, u64 name) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_event.warning("sys_event_port_create(eport_id=*0x%x, port_type=%d, name=0x%llx)", eport_id, port_type, name); @@ -568,7 +568,7 @@ error_code sys_event_port_create(cpu_thread& cpu, vm::ptr eport_id, s32 por error_code sys_event_port_destroy(ppu_thread& ppu, u32 eport_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_event.warning("sys_event_port_destroy(eport_id=0x%x)", eport_id); @@ -597,7 +597,7 @@ error_code sys_event_port_destroy(ppu_thread& ppu, u32 eport_id) error_code sys_event_port_connect_local(cpu_thread& cpu, u32 eport_id, u32 equeue_id) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_event.warning("sys_event_port_connect_local(eport_id=0x%x, equeue_id=0x%x)", eport_id, equeue_id); @@ -627,7 +627,7 @@ error_code sys_event_port_connect_local(cpu_thread& cpu, u32 eport_id, u32 equeu error_code sys_event_port_connect_ipc(ppu_thread& ppu, u32 eport_id, u64 ipc_key) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_event.warning("sys_event_port_connect_ipc(eport_id=0x%x, ipc_key=0x%x)", eport_id, ipc_key); @@ -664,7 +664,7 @@ error_code sys_event_port_connect_ipc(ppu_thread& ppu, u32 eport_id, u64 ipc_key error_code sys_event_port_disconnect(ppu_thread& ppu, u32 eport_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_event.warning("sys_event_port_disconnect(eport_id=0x%x)", eport_id); @@ -693,7 +693,7 @@ error_code sys_event_port_send(u32 eport_id, u64 data1, u64 data2, u64 data3) { if (auto cpu = get_current_cpu_thread()) { - cpu->state += cpu_flag::wait; + cpu->state += cpu_flag::unmem; } sys_event.trace("sys_event_port_send(eport_id=0x%x, data1=0x%llx, data2=0x%llx, data3=0x%llx)", eport_id, data1, data2, data3); diff --git a/rpcs3/Emu/Cell/lv2/sys_event_flag.cpp b/rpcs3/Emu/Cell/lv2/sys_event_flag.cpp index 1a489638e812..00b3c4535842 100644 --- a/rpcs3/Emu/Cell/lv2/sys_event_flag.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_event_flag.cpp @@ -35,7 +35,7 @@ void lv2_event_flag::save(utils::serial& ar) error_code sys_event_flag_create(ppu_thread& ppu, vm::ptr id, vm::ptr attr, u64 init) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_event_flag.warning("sys_event_flag_create(id=*0x%x, attr=*0x%x, init=0x%llx)", id, attr, init); @@ -83,7 +83,7 @@ error_code sys_event_flag_create(ppu_thread& ppu, vm::ptr id, vm::ptr result, u64 timeout) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_event_flag.trace("sys_event_flag_wait(id=0x%x, bitptn=0x%llx, mode=0x%x, result=*0x%x, timeout=0x%llx)", id, bitptn, mode, result, timeout); @@ -194,7 +194,7 @@ error_code sys_event_flag_wait(ppu_thread& ppu, u32 id, u64 bitptn, u32 mode, vm while (auto state = +ppu.state) { - if (state & cpu_flag::signal && ppu.state.test_and_reset(cpu_flag::signal)) + if (state & cpu_flag::signal) { break; } @@ -259,7 +259,7 @@ error_code sys_event_flag_wait(ppu_thread& ppu, u32 id, u64 bitptn, u32 mode, vm error_code sys_event_flag_trywait(ppu_thread& ppu, u32 id, u64 bitptn, u32 mode, vm::ptr result) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_event_flag.trace("sys_event_flag_trywait(id=0x%x, bitptn=0x%llx, mode=0x%x, result=*0x%x)", id, bitptn, mode, result); @@ -297,7 +297,7 @@ error_code sys_event_flag_trywait(ppu_thread& ppu, u32 id, u64 bitptn, u32 mode, error_code sys_event_flag_set(cpu_thread& cpu, u32 id, u64 bitptn) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; // Warning: may be called from SPU thread. sys_event_flag.trace("sys_event_flag_set(id=0x%x, bitptn=0x%llx)", id, bitptn); @@ -420,7 +420,7 @@ error_code sys_event_flag_set(cpu_thread& cpu, u32 id, u64 bitptn) error_code sys_event_flag_clear(ppu_thread& ppu, u32 id, u64 bitptn) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_event_flag.trace("sys_event_flag_clear(id=0x%x, bitptn=0x%llx)", id, bitptn); @@ -439,7 +439,7 @@ error_code sys_event_flag_clear(ppu_thread& ppu, u32 id, u64 bitptn) error_code sys_event_flag_cancel(ppu_thread& ppu, u32 id, vm::ptr num) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_event_flag.trace("sys_event_flag_cancel(id=0x%x, num=*0x%x)", id, num); @@ -494,7 +494,7 @@ error_code sys_event_flag_cancel(ppu_thread& ppu, u32 id, vm::ptr num) error_code sys_event_flag_get(ppu_thread& ppu, u32 id, vm::ptr flags) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_event_flag.trace("sys_event_flag_get(id=0x%x, flags=*0x%x)", id, flags); diff --git a/rpcs3/Emu/Cell/lv2/sys_fs.cpp b/rpcs3/Emu/Cell/lv2/sys_fs.cpp index b8412c8e395c..3ab08b91d3ed 100644 --- a/rpcs3/Emu/Cell/lv2/sys_fs.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_fs.cpp @@ -801,7 +801,7 @@ lv2_file::open_result_t lv2_file::open(std::string_view vpath, s32 flags, s32 mo error_code sys_fs_open(ppu_thread& ppu, vm::cptr path, s32 flags, vm::ptr fd, s32 mode, vm::cptr arg, u64 size) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.warning("sys_fs_open(path=%s, flags=%#o, fd=*0x%x, mode=%#o, arg=*0x%x, size=0x%llx)", path, flags, fd, mode, arg, size); @@ -849,7 +849,7 @@ error_code sys_fs_open(ppu_thread& ppu, vm::cptr path, s32 flags, vm::ptr< error_code sys_fs_read(ppu_thread& ppu, u32 fd, vm::ptr buf, u64 nbytes, vm::ptr nread) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.trace("sys_fs_read(fd=%d, buf=*0x%x, nbytes=0x%llx, nread=*0x%x)", fd, buf, nbytes, nread); @@ -914,7 +914,7 @@ error_code sys_fs_read(ppu_thread& ppu, u32 fd, vm::ptr buf, u64 nbytes, v error_code sys_fs_write(ppu_thread& ppu, u32 fd, vm::cptr buf, u64 nbytes, vm::ptr nwrite) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.trace("sys_fs_write(fd=%d, buf=*0x%x, nbytes=0x%llx, nwrite=*0x%x)", fd, buf, nbytes, nwrite); @@ -993,7 +993,7 @@ error_code sys_fs_write(ppu_thread& ppu, u32 fd, vm::cptr buf, u64 nbytes, error_code sys_fs_close(ppu_thread& ppu, u32 fd) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); const auto file = idm::get(fd); @@ -1070,7 +1070,7 @@ error_code sys_fs_close(ppu_thread& ppu, u32 fd) error_code sys_fs_opendir(ppu_thread& ppu, vm::cptr path, vm::ptr fd) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.warning("sys_fs_opendir(path=%s, fd=*0x%x)", path, fd); @@ -1187,7 +1187,7 @@ error_code sys_fs_opendir(ppu_thread& ppu, vm::cptr path, vm::ptr fd) error_code sys_fs_readdir(ppu_thread& ppu, u32 fd, vm::ptr dir, vm::ptr nread) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.warning("sys_fs_readdir(fd=%d, dir=*0x%x, nread=*0x%x)", fd, dir, nread); @@ -1216,7 +1216,7 @@ error_code sys_fs_readdir(ppu_thread& ppu, u32 fd, vm::ptr dir, vm error_code sys_fs_closedir(ppu_thread& ppu, u32 fd) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.warning("sys_fs_closedir(fd=%d)", fd); @@ -1231,7 +1231,7 @@ error_code sys_fs_closedir(ppu_thread& ppu, u32 fd) error_code sys_fs_stat(ppu_thread& ppu, vm::cptr path, vm::ptr sb) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.warning("sys_fs_stat(path=%s, sb=*0x%x)", path, sb); @@ -1328,7 +1328,7 @@ error_code sys_fs_stat(ppu_thread& ppu, vm::cptr path, vm::ptr error_code sys_fs_fstat(ppu_thread& ppu, u32 fd, vm::ptr sb) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.warning("sys_fs_fstat(fd=%d, sb=*0x%x)", fd, sb); @@ -1381,7 +1381,7 @@ error_code sys_fs_link(ppu_thread&, vm::cptr from, vm::cptr to) error_code sys_fs_mkdir(ppu_thread& ppu, vm::cptr path, s32 mode) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.warning("sys_fs_mkdir(path=%s, mode=%#o)", path, mode); @@ -1432,7 +1432,7 @@ error_code sys_fs_mkdir(ppu_thread& ppu, vm::cptr path, s32 mode) error_code sys_fs_rename(ppu_thread& ppu, vm::cptr from, vm::cptr to) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.warning("sys_fs_rename(from=%s, to=%s)", from, to); @@ -1498,7 +1498,7 @@ error_code sys_fs_rename(ppu_thread& ppu, vm::cptr from, vm::cptr to error_code sys_fs_rmdir(ppu_thread& ppu, vm::cptr path) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.warning("sys_fs_rmdir(path=%s)", path); @@ -1549,7 +1549,7 @@ error_code sys_fs_rmdir(ppu_thread& ppu, vm::cptr path) error_code sys_fs_unlink(ppu_thread& ppu, vm::cptr path) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.warning("sys_fs_unlink(path=%s)", path); @@ -1612,7 +1612,7 @@ error_code sys_fs_access(ppu_thread&, vm::cptr path, s32 mode) error_code sys_fs_fcntl(ppu_thread& ppu, u32 fd, u32 op, vm::ptr _arg, u32 _size) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_fs.trace("sys_fs_fcntl(fd=%d, op=0x%x, arg=*0x%x, size=0x%x)", fd, op, _arg, _size); @@ -2330,7 +2330,7 @@ error_code sys_fs_fcntl(ppu_thread& ppu, u32 fd, u32 op, vm::ptr _arg, u32 error_code sys_fs_lseek(ppu_thread& ppu, u32 fd, s64 offset, s32 whence, vm::ptr pos) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.trace("sys_fs_lseek(fd=%d, offset=0x%llx, whence=0x%x, pos=*0x%x)", fd, offset, whence, pos); @@ -2373,7 +2373,7 @@ error_code sys_fs_lseek(ppu_thread& ppu, u32 fd, s64 offset, s32 whence, vm::ptr error_code sys_fs_fdatasync(ppu_thread& ppu, u32 fd) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.trace("sys_fs_fdadasync(fd=%d)", fd); @@ -2398,7 +2398,7 @@ error_code sys_fs_fdatasync(ppu_thread& ppu, u32 fd) error_code sys_fs_fsync(ppu_thread& ppu, u32 fd) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.trace("sys_fs_fsync(fd=%d)", fd); @@ -2423,7 +2423,7 @@ error_code sys_fs_fsync(ppu_thread& ppu, u32 fd) error_code sys_fs_fget_block_size(ppu_thread& ppu, u32 fd, vm::ptr sector_size, vm::ptr block_size, vm::ptr arg4, vm::ptr out_flags) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_fs.warning("sys_fs_fget_block_size(fd=%d, sector_size=*0x%x, block_size=*0x%x, arg4=*0x%x, out_flags=*0x%x)", fd, sector_size, block_size, arg4, out_flags); @@ -2447,7 +2447,7 @@ error_code sys_fs_fget_block_size(ppu_thread& ppu, u32 fd, vm::ptr sector_s error_code sys_fs_get_block_size(ppu_thread& ppu, vm::cptr path, vm::ptr sector_size, vm::ptr block_size, vm::ptr arg4) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_fs.warning("sys_fs_get_block_size(path=%s, sector_size=*0x%x, block_size=*0x%x, arg4=*0x%x)", path, sector_size, block_size, arg4); @@ -2497,7 +2497,7 @@ error_code sys_fs_get_block_size(ppu_thread& ppu, vm::cptr path, vm::ptr path, u64 size) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.warning("sys_fs_truncate(path=%s, size=0x%llx)", path, size); @@ -2546,7 +2546,7 @@ error_code sys_fs_truncate(ppu_thread& ppu, vm::cptr path, u64 size) error_code sys_fs_ftruncate(ppu_thread& ppu, u32 fd, u64 size) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.warning("sys_fs_ftruncate(fd=%d, size=0x%llx)", fd, size); @@ -2617,7 +2617,7 @@ error_code sys_fs_chown(ppu_thread&, vm::cptr path, s32 uid, s32 gid) error_code sys_fs_disk_free(ppu_thread& ppu, vm::cptr path, vm::ptr total_free, vm::ptr avail_free) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.warning("sys_fs_disk_free(path=%s total_free=*0x%x avail_free=*0x%x)", path, total_free, avail_free); @@ -2689,7 +2689,7 @@ error_code sys_fs_disk_free(ppu_thread& ppu, vm::cptr path, vm::ptr t error_code sys_fs_utime(ppu_thread& ppu, vm::cptr path, vm::cptr timep) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; lv2_obj::sleep(ppu); sys_fs.warning("sys_fs_utime(path=%s, timep=*0x%x)", path, timep); diff --git a/rpcs3/Emu/Cell/lv2/sys_interrupt.cpp b/rpcs3/Emu/Cell/lv2/sys_interrupt.cpp index 00dd50f98e39..fb08d0b107a2 100644 --- a/rpcs3/Emu/Cell/lv2/sys_interrupt.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_interrupt.cpp @@ -101,7 +101,7 @@ void lv2_int_serv::join() const error_code sys_interrupt_tag_destroy(ppu_thread& ppu, u32 intrtag) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_interrupt.warning("sys_interrupt_tag_destroy(intrtag=0x%x)", intrtag); @@ -131,7 +131,7 @@ error_code sys_interrupt_tag_destroy(ppu_thread& ppu, u32 intrtag) error_code _sys_interrupt_thread_establish(ppu_thread& ppu, vm::ptr ih, u32 intrtag, u32 intrthread, u64 arg1, u64 arg2) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_interrupt.warning("_sys_interrupt_thread_establish(ih=*0x%x, intrtag=0x%x, intrthread=0x%x, arg1=0x%llx, arg2=0x%llx)", ih, intrtag, intrthread, arg1, arg2); @@ -199,7 +199,7 @@ error_code _sys_interrupt_thread_establish(ppu_thread& ppu, vm::ptr ih, u32 error_code _sys_interrupt_thread_disestablish(ppu_thread& ppu, u32 ih, vm::ptr r13) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_interrupt.warning("_sys_interrupt_thread_disestablish(ih=0x%x, r13=*0x%x)", ih, r13); @@ -232,7 +232,7 @@ error_code _sys_interrupt_thread_disestablish(ppu_thread& ppu, u32 ih, vm::ptr lwcond_id, u32 lwmutex_id, vm::ptr control, u64 name) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_lwcond.warning(u8"_sys_lwcond_create(lwcond_id=*0x%x, lwmutex_id=0x%x, control=*0x%x, name=0x%llx (ā€œ%sā€))", lwcond_id, lwmutex_id, control, name, lv2_obj::name64(std::bit_cast>(name))); @@ -59,7 +59,7 @@ error_code _sys_lwcond_create(ppu_thread& ppu, vm::ptr lwcond_id, u32 lwmut error_code _sys_lwcond_destroy(ppu_thread& ppu, u32 lwcond_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_lwcond.warning("_sys_lwcond_destroy(lwcond_id=0x%x)", lwcond_id); @@ -88,7 +88,7 @@ error_code _sys_lwcond_destroy(ppu_thread& ppu, u32 lwcond_id) error_code _sys_lwcond_signal(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id, u64 ppu_thread_id, u32 mode) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_lwcond.trace("_sys_lwcond_signal(lwcond_id=0x%x, lwmutex_id=0x%x, ppu_thread_id=0x%llx, mode=%d)", lwcond_id, lwmutex_id, ppu_thread_id, mode); @@ -224,7 +224,7 @@ error_code _sys_lwcond_signal(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id, u6 error_code _sys_lwcond_signal_all(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id, u32 mode) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_lwcond.trace("_sys_lwcond_signal_all(lwcond_id=0x%x, lwmutex_id=0x%x, mode=%d)", lwcond_id, lwmutex_id, mode); @@ -314,7 +314,7 @@ error_code _sys_lwcond_signal_all(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id error_code _sys_lwcond_queue_wait(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id, u64 timeout) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_lwcond.trace("_sys_lwcond_queue_wait(lwcond_id=0x%x, lwmutex_id=0x%x, timeout=0x%llx)", lwcond_id, lwmutex_id, timeout); @@ -390,7 +390,7 @@ error_code _sys_lwcond_queue_wait(ppu_thread& ppu, u32 lwcond_id, u32 lwmutex_id while (auto state = +ppu.state) { - if (state & cpu_flag::signal && ppu.state.test_and_reset(cpu_flag::signal)) + if (state & cpu_flag::signal) { break; } diff --git a/rpcs3/Emu/Cell/lv2/sys_lwmutex.cpp b/rpcs3/Emu/Cell/lv2/sys_lwmutex.cpp index 3ef086ae8605..62afff75a7de 100644 --- a/rpcs3/Emu/Cell/lv2/sys_lwmutex.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_lwmutex.cpp @@ -25,7 +25,7 @@ void lv2_lwmutex::save(utils::serial& ar) error_code _sys_lwmutex_create(ppu_thread& ppu, vm::ptr lwmutex_id, u32 protocol, vm::ptr control, s32 has_name, u64 name) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_lwmutex.trace(u8"_sys_lwmutex_create(lwmutex_id=*0x%x, protocol=0x%x, control=*0x%x, has_name=0x%x, name=0x%llx (ā€œ%sā€))", lwmutex_id, protocol, control, has_name, name, lv2_obj::name64(std::bit_cast>(name))); @@ -51,7 +51,7 @@ error_code _sys_lwmutex_create(ppu_thread& ppu, vm::ptr lwmutex_id, u32 pro error_code _sys_lwmutex_destroy(ppu_thread& ppu, u32 lwmutex_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_lwmutex.trace("_sys_lwmutex_destroy(lwmutex_id=0x%x)", lwmutex_id); @@ -133,7 +133,7 @@ error_code _sys_lwmutex_destroy(ppu_thread& ppu, u32 lwmutex_id) error_code _sys_lwmutex_lock(ppu_thread& ppu, u32 lwmutex_id, u64 timeout) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_lwmutex.trace("_sys_lwmutex_lock(lwmutex_id=0x%x, timeout=0x%llx)", lwmutex_id, timeout); @@ -192,7 +192,7 @@ error_code _sys_lwmutex_lock(ppu_thread& ppu, u32 lwmutex_id, u64 timeout) while (auto state = +ppu.state) { - if (state & cpu_flag::signal && ppu.state.test_and_reset(cpu_flag::signal)) + if (state & cpu_flag::signal) { break; } @@ -255,7 +255,7 @@ error_code _sys_lwmutex_lock(ppu_thread& ppu, u32 lwmutex_id, u64 timeout) error_code _sys_lwmutex_trylock(ppu_thread& ppu, u32 lwmutex_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_lwmutex.trace("_sys_lwmutex_trylock(lwmutex_id=0x%x)", lwmutex_id); @@ -290,7 +290,7 @@ error_code _sys_lwmutex_trylock(ppu_thread& ppu, u32 lwmutex_id) error_code _sys_lwmutex_unlock(ppu_thread& ppu, u32 lwmutex_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_lwmutex.trace("_sys_lwmutex_unlock(lwmutex_id=0x%x)", lwmutex_id); @@ -326,7 +326,7 @@ error_code _sys_lwmutex_unlock(ppu_thread& ppu, u32 lwmutex_id) error_code _sys_lwmutex_unlock2(ppu_thread& ppu, u32 lwmutex_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_lwmutex.warning("_sys_lwmutex_unlock2(lwmutex_id=0x%x)", lwmutex_id); diff --git a/rpcs3/Emu/Cell/lv2/sys_memory.cpp b/rpcs3/Emu/Cell/lv2/sys_memory.cpp index ca4240ff12ce..94c096f71426 100644 --- a/rpcs3/Emu/Cell/lv2/sys_memory.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_memory.cpp @@ -89,7 +89,7 @@ struct sys_memory_address_table error_code sys_memory_allocate(cpu_thread& cpu, u32 size, u64 flags, vm::ptr alloc_addr) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_memory.warning("sys_memory_allocate(size=0x%x, flags=0x%llx, alloc_addr=*0x%x)", size, flags, alloc_addr); @@ -148,7 +148,7 @@ error_code sys_memory_allocate(cpu_thread& cpu, u32 size, u64 flags, vm::ptr alloc_addr) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_memory.warning("sys_memory_allocate_from_container(size=0x%x, cid=0x%x, flags=0x%llx, alloc_addr=*0x%x)", size, cid, flags, alloc_addr); @@ -219,7 +219,7 @@ error_code sys_memory_allocate_from_container(cpu_thread& cpu, u32 size, u32 cid error_code sys_memory_free(cpu_thread& cpu, u32 addr) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_memory.warning("sys_memory_free(addr=0x%x)", addr); @@ -237,7 +237,7 @@ error_code sys_memory_free(cpu_thread& cpu, u32 addr) error_code sys_memory_get_page_attribute(cpu_thread& cpu, u32 addr, vm::ptr attr) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_memory.trace("sys_memory_get_page_attribute(addr=0x%x, attr=*0x%x)", addr, attr); @@ -275,7 +275,7 @@ error_code sys_memory_get_page_attribute(cpu_thread& cpu, u32 addr, vm::ptr mem_info) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_memory.warning("sys_memory_get_user_memory_size(mem_info=*0x%x)", mem_info); @@ -298,7 +298,7 @@ error_code sys_memory_get_user_memory_size(cpu_thread& cpu, vm::ptr mem_stat) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_memory.todo("sys_memory_get_user_memory_stat(mem_stat=*0x%x)", mem_stat); @@ -307,7 +307,7 @@ error_code sys_memory_get_user_memory_stat(cpu_thread& cpu, vm::ptr cid, u32 size) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_memory.warning("sys_memory_container_create(cid=*0x%x, size=0x%x)", cid, size); @@ -342,7 +342,7 @@ error_code sys_memory_container_create(cpu_thread& cpu, vm::ptr cid, u32 si error_code sys_memory_container_destroy(cpu_thread& cpu, u32 cid) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_memory.warning("sys_memory_container_destroy(cid=0x%x)", cid); @@ -377,7 +377,7 @@ error_code sys_memory_container_destroy(cpu_thread& cpu, u32 cid) error_code sys_memory_container_get_size(cpu_thread& cpu, vm::ptr mem_info, u32 cid) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_memory.warning("sys_memory_container_get_size(mem_info=*0x%x, cid=0x%x)", mem_info, cid); diff --git a/rpcs3/Emu/Cell/lv2/sys_mmapper.cpp b/rpcs3/Emu/Cell/lv2/sys_mmapper.cpp index b992a42be3c0..67f65b5b131d 100644 --- a/rpcs3/Emu/Cell/lv2/sys_mmapper.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_mmapper.cpp @@ -144,7 +144,7 @@ error_code create_lv2_shm(bool pshared, u64 ipc_key, u64 size, u32 align, u64 fl error_code sys_mmapper_allocate_address(ppu_thread& ppu, u64 size, u64 flags, u64 alignment, vm::ptr alloc_addr) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_mmapper.warning("sys_mmapper_allocate_address(size=0x%x, flags=0x%x, alignment=0x%x, alloc_addr=*0x%x)", size, flags, alignment, alloc_addr); @@ -187,7 +187,7 @@ error_code sys_mmapper_allocate_address(ppu_thread& ppu, u64 size, u64 flags, u6 error_code sys_mmapper_allocate_fixed_address(ppu_thread& ppu) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_mmapper.warning("sys_mmapper_allocate_fixed_address()"); @@ -201,7 +201,7 @@ error_code sys_mmapper_allocate_fixed_address(ppu_thread& ppu) error_code sys_mmapper_allocate_shared_memory(ppu_thread& ppu, u64 ipc_key, u64 size, u64 flags, vm::ptr mem_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_mmapper.warning("sys_mmapper_allocate_shared_memory(ipc_key=0x%x, size=0x%x, flags=0x%x, mem_id=*0x%x)", ipc_key, size, flags, mem_id); @@ -252,7 +252,7 @@ error_code sys_mmapper_allocate_shared_memory(ppu_thread& ppu, u64 ipc_key, u64 error_code sys_mmapper_allocate_shared_memory_from_container(ppu_thread& ppu, u64 ipc_key, u64 size, u32 cid, u64 flags, vm::ptr mem_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_mmapper.warning("sys_mmapper_allocate_shared_memory_from_container(ipc_key=0x%x, size=0x%x, cid=0x%x, flags=0x%x, mem_id=*0x%x)", ipc_key, size, cid, flags, mem_id); @@ -307,7 +307,7 @@ error_code sys_mmapper_allocate_shared_memory_from_container(ppu_thread& ppu, u6 error_code sys_mmapper_allocate_shared_memory_ext(ppu_thread& ppu, u64 ipc_key, u64 size, u32 flags, vm::ptr entries, s32 entry_count, vm::ptr mem_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_mmapper.todo("sys_mmapper_allocate_shared_memory_ext(ipc_key=0x%x, size=0x%x, flags=0x%x, entries=*0x%x, entry_count=0x%x, mem_id=*0x%x)", ipc_key, size, flags, entries, entry_count, mem_id); @@ -405,7 +405,7 @@ error_code sys_mmapper_allocate_shared_memory_ext(ppu_thread& ppu, u64 ipc_key, error_code sys_mmapper_allocate_shared_memory_from_container_ext(ppu_thread& ppu, u64 ipc_key, u64 size, u64 flags, u32 cid, vm::ptr entries, s32 entry_count, vm::ptr mem_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_mmapper.todo("sys_mmapper_allocate_shared_memory_from_container_ext(ipc_key=0x%x, size=0x%x, flags=0x%x, cid=0x%x, entries=*0x%x, entry_count=0x%x, mem_id=*0x%x)", ipc_key, size, flags, cid, entries, entry_count, mem_id); @@ -502,7 +502,7 @@ error_code sys_mmapper_allocate_shared_memory_from_container_ext(ppu_thread& ppu error_code sys_mmapper_change_address_access_right(ppu_thread& ppu, u32 addr, u64 flags) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_mmapper.todo("sys_mmapper_change_address_access_right(addr=0x%x, flags=0x%x)", addr, flags); @@ -511,7 +511,7 @@ error_code sys_mmapper_change_address_access_right(ppu_thread& ppu, u32 addr, u6 error_code sys_mmapper_free_address(ppu_thread& ppu, u32 addr) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_mmapper.warning("sys_mmapper_free_address(addr=0x%x)", addr); @@ -574,7 +574,7 @@ error_code sys_mmapper_free_address(ppu_thread& ppu, u32 addr) error_code sys_mmapper_free_shared_memory(ppu_thread& ppu, u32 mem_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_mmapper.warning("sys_mmapper_free_shared_memory(mem_id=0x%x)", mem_id); @@ -612,7 +612,7 @@ error_code sys_mmapper_free_shared_memory(ppu_thread& ppu, u32 mem_id) error_code sys_mmapper_map_shared_memory(ppu_thread& ppu, u32 addr, u32 mem_id, u64 flags) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_mmapper.warning("sys_mmapper_map_shared_memory(addr=0x%x, mem_id=0x%x, flags=0x%x)", addr, mem_id, flags); @@ -669,7 +669,7 @@ error_code sys_mmapper_map_shared_memory(ppu_thread& ppu, u32 addr, u32 mem_id, error_code sys_mmapper_search_and_map(ppu_thread& ppu, u32 start_addr, u32 mem_id, u64 flags, vm::ptr alloc_addr) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_mmapper.warning("sys_mmapper_search_and_map(start_addr=0x%x, mem_id=0x%x, flags=0x%x, alloc_addr=*0x%x)", start_addr, mem_id, flags, alloc_addr); @@ -724,7 +724,7 @@ error_code sys_mmapper_search_and_map(ppu_thread& ppu, u32 start_addr, u32 mem_i error_code sys_mmapper_unmap_shared_memory(ppu_thread& ppu, u32 addr, vm::ptr mem_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_mmapper.warning("sys_mmapper_unmap_shared_memory(addr=0x%x, mem_id=*0x%x)", addr, mem_id); @@ -773,7 +773,7 @@ error_code sys_mmapper_unmap_shared_memory(ppu_thread& ppu, u32 addr, vm::ptr mutex_id, vm::ptr attr) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_mutex.warning("sys_mutex_create(mutex_id=*0x%x, attr=*0x%x)", mutex_id, attr); @@ -98,7 +98,7 @@ error_code sys_mutex_create(ppu_thread& ppu, vm::ptr mutex_id, vm::ptr addr, vm::ptr paddrlen) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.warning("sys_net_bnet_accept(s=%d, addr=*0x%x, paddrlen=*0x%x)", s, addr, paddrlen); @@ -460,7 +460,7 @@ error_code sys_net_bnet_accept(ppu_thread& ppu, s32 s, vm::ptr error_code sys_net_bnet_bind(ppu_thread& ppu, s32 s, vm::cptr addr, u32 addrlen) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.warning("sys_net_bnet_bind(s=%d, addr=*0x%x, addrlen=%u)", s, addr, addrlen); @@ -503,7 +503,7 @@ error_code sys_net_bnet_bind(ppu_thread& ppu, s32 s, vm::cptr error_code sys_net_bnet_connect(ppu_thread& ppu, s32 s, vm::ptr addr, u32 addrlen) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.warning("sys_net_bnet_connect(s=%d, addr=*0x%x, addrlen=%u)", s, addr, addrlen); @@ -603,7 +603,7 @@ error_code sys_net_bnet_connect(ppu_thread& ppu, s32 s, vm::ptr addr, vm::ptr paddrlen) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.warning("sys_net_bnet_getpeername(s=%d, addr=*0x%x, paddrlen=*0x%x)", s, addr, paddrlen); @@ -641,7 +641,7 @@ error_code sys_net_bnet_getpeername(ppu_thread& ppu, s32 s, vm::ptr addr, vm::ptr paddrlen) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.warning("sys_net_bnet_getsockname(s=%d, addr=*0x%x, paddrlen=*0x%x)", s, addr, paddrlen); @@ -679,7 +679,7 @@ error_code sys_net_bnet_getsockname(ppu_thread& ppu, s32 s, vm::ptr optval, vm::ptr optlen) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; switch (level) { @@ -742,7 +742,7 @@ error_code sys_net_bnet_getsockopt(ppu_thread& ppu, s32 s, s32 level, s32 optnam error_code sys_net_bnet_listen(ppu_thread& ppu, s32 s, s32 backlog) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.warning("sys_net_bnet_listen(s=%d, backlog=%d)", s, backlog); @@ -771,7 +771,7 @@ error_code sys_net_bnet_listen(ppu_thread& ppu, s32 s, s32 backlog) error_code sys_net_bnet_recvfrom(ppu_thread& ppu, s32 s, vm::ptr buf, u32 len, s32 flags, vm::ptr addr, vm::ptr paddrlen) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.warning("sys_net_bnet_recvfrom(s=%d, buf=*0x%x, len=%u, flags=0x%x, addr=*0x%x, paddrlen=*0x%x)", s, buf, len, flags, addr, paddrlen); @@ -890,7 +890,7 @@ error_code sys_net_bnet_recvfrom(ppu_thread& ppu, s32 s, vm::ptr buf, u32 error_code sys_net_bnet_recvmsg(ppu_thread& ppu, s32 s, vm::ptr msg, s32 flags) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.todo("sys_net_bnet_recvmsg(s=%d, msg=*0x%x, flags=0x%x)", s, msg, flags); return CELL_OK; @@ -898,7 +898,7 @@ error_code sys_net_bnet_recvmsg(ppu_thread& ppu, s32 s, vm::ptr error_code sys_net_bnet_sendmsg(ppu_thread& ppu, s32 s, vm::cptr msg, s32 flags) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.todo("sys_net_bnet_sendmsg(s=%d, msg=*0x%x, flags=0x%x)", s, msg, flags); return CELL_OK; @@ -906,7 +906,7 @@ error_code sys_net_bnet_sendmsg(ppu_thread& ppu, s32 s, vm::cptr error_code sys_net_bnet_sendto(ppu_thread& ppu, s32 s, vm::cptr buf, u32 len, s32 flags, vm::cptr addr, u32 addrlen) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.warning("sys_net_bnet_sendto(s=%d, buf=*0x%x, len=%u, flags=0x%x, addr=*0x%x, addrlen=%u)", s, buf, len, flags, addr, addrlen); @@ -998,7 +998,7 @@ error_code sys_net_bnet_sendto(ppu_thread& ppu, s32 s, vm::cptr buf, u32 l error_code sys_net_bnet_setsockopt(ppu_thread& ppu, s32 s, s32 level, s32 optname, vm::cptr optval, u32 optlen) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; switch (level) { @@ -1059,7 +1059,7 @@ error_code sys_net_bnet_setsockopt(ppu_thread& ppu, s32 s, s32 level, s32 optnam error_code sys_net_bnet_shutdown(ppu_thread& ppu, s32 s, s32 how) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.warning("sys_net_bnet_shutdown(s=%d, how=%d)", s, how); @@ -1088,7 +1088,7 @@ error_code sys_net_bnet_shutdown(ppu_thread& ppu, s32 s, s32 how) error_code sys_net_bnet_socket(ppu_thread& ppu, lv2_socket_family family, lv2_socket_type type, lv2_ip_protocol protocol) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.warning("sys_net_bnet_socket(family=%s, type=%s, protocol=%s)", family, type, protocol); @@ -1139,7 +1139,7 @@ error_code sys_net_bnet_socket(ppu_thread& ppu, lv2_socket_family family, lv2_so error_code sys_net_bnet_close(ppu_thread& ppu, s32 s) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.warning("sys_net_bnet_close(s=%d)", s); @@ -1166,7 +1166,7 @@ error_code sys_net_bnet_close(ppu_thread& ppu, s32 s) error_code sys_net_bnet_poll(ppu_thread& ppu, vm::ptr fds, s32 nfds, s32 ms) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.warning("sys_net_bnet_poll(fds=*0x%x, nfds=%d, ms=%d)", fds, nfds, ms); @@ -1348,7 +1348,7 @@ error_code sys_net_bnet_poll(ppu_thread& ppu, vm::ptr fds, s32 n error_code sys_net_bnet_select(ppu_thread& ppu, s32 nfds, vm::ptr readfds, vm::ptr writefds, vm::ptr exceptfds, vm::ptr _timeout) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.warning("sys_net_bnet_select(nfds=%d, readfds=*0x%x, writefds=*0x%x, exceptfds=*0x%x, timeout=*0x%x)", nfds, readfds, writefds, exceptfds, _timeout); @@ -1593,7 +1593,7 @@ error_code sys_net_bnet_select(ppu_thread& ppu, s32 nfds, vm::ptr buf, s32 len, vm::ptr pflags) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.todo("_sys_net_read_dump(id=0x%x, buf=*0x%x, len=%d, pflags=*0x%x)", id, buf, len, pflags); return CELL_OK; @@ -1609,7 +1609,7 @@ error_code _sys_net_read_dump(ppu_thread& ppu, s32 id, vm::ptr buf, s32 le error_code _sys_net_close_dump(ppu_thread& ppu, s32 id, vm::ptr pflags) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.todo("_sys_net_close_dump(id=0x%x, pflags=*0x%x)", id, pflags); return CELL_OK; @@ -1617,7 +1617,7 @@ error_code _sys_net_close_dump(ppu_thread& ppu, s32 id, vm::ptr pflags) error_code _sys_net_write_dump(ppu_thread& ppu, s32 id, vm::cptr buf, s32 len, u32 unknown) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.todo("_sys_net_write_dump(id=0x%x, buf=*0x%x, len=%d, unk=0x%x)", id, buf, len, unknown); return CELL_OK; @@ -1658,7 +1658,7 @@ error_code lv2_socket::abort_socket(s32 flags) error_code sys_net_abort(ppu_thread& ppu, s32 type, u64 arg, s32 flags) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.todo("sys_net_abort(type=%d, arg=0x%x, flags=0x%x)", type, arg, flags); @@ -1741,7 +1741,7 @@ struct net_infoctl_cmd_9_t error_code sys_net_infoctl(ppu_thread& ppu, s32 cmd, vm::ptr arg) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.todo("sys_net_infoctl(cmd=%d, arg=*0x%x)", cmd, arg); @@ -1772,7 +1772,7 @@ error_code sys_net_infoctl(ppu_thread& ppu, s32 cmd, vm::ptr arg) error_code sys_net_control(ppu_thread& ppu, u32 arg1, s32 arg2, vm::ptr arg3, s32 arg4) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.todo("sys_net_control(0x%x, %d, *0x%x, %d)", arg1, arg2, arg3, arg4); return CELL_OK; @@ -1780,7 +1780,7 @@ error_code sys_net_control(ppu_thread& ppu, u32 arg1, s32 arg2, vm::ptr ar error_code sys_net_bnet_ioctl(ppu_thread& ppu, s32 arg1, u32 arg2, u32 arg3) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.todo("sys_net_bnet_ioctl(%d, 0x%x, 0x%x)", arg1, arg2, arg3); return CELL_OK; @@ -1788,7 +1788,7 @@ error_code sys_net_bnet_ioctl(ppu_thread& ppu, s32 arg1, u32 arg2, u32 arg3) error_code sys_net_bnet_sysctl(ppu_thread& ppu, u32 arg1, u32 arg2, u32 arg3, vm::ptr arg4, u32 arg5, u32 arg6) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.todo("sys_net_bnet_sysctl(0x%x, 0x%x, 0x%x, *0x%x, 0x%x, 0x%x)", arg1, arg2, arg3, arg4, arg5, arg6); return CELL_OK; @@ -1796,7 +1796,7 @@ error_code sys_net_bnet_sysctl(ppu_thread& ppu, u32 arg1, u32 arg2, u32 arg3, vm error_code sys_net_eurus_post_command(ppu_thread& ppu, s32 arg1, u32 arg2, u32 arg3) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_net.todo("sys_net_eurus_post_command(%d, 0x%x, 0x%x)", arg1, arg2, arg3); return CELL_OK; diff --git a/rpcs3/Emu/Cell/lv2/sys_ppu_thread.cpp b/rpcs3/Emu/Cell/lv2/sys_ppu_thread.cpp index fa111b666e3f..064c31091113 100644 --- a/rpcs3/Emu/Cell/lv2/sys_ppu_thread.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_ppu_thread.cpp @@ -38,7 +38,7 @@ struct ppu_thread_cleaner void ppu_thread_exit(ppu_thread& ppu, ppu_opcode_t, be_t*, struct ppu_intrp_func*) { - ppu.state += cpu_flag::exit + cpu_flag::wait; + ppu.state += cpu_flag::exit + cpu_flag::unmem; // Deallocate Stack Area ensure(vm::dealloc(ppu.stack_addr, vm::stack) == ppu.stack_size); @@ -60,7 +60,7 @@ constexpr u32 c_max_ppu_name_size = 28; void _sys_ppu_thread_exit(ppu_thread& ppu, u64 errorcode) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; // Need to wait until the current writer finish if (ppu.state & cpu_flag::memory) @@ -134,7 +134,7 @@ void _sys_ppu_thread_exit(ppu_thread& ppu, u64 errorcode) s32 sys_ppu_thread_yield(ppu_thread& ppu) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_ppu_thread.trace("sys_ppu_thread_yield()"); @@ -233,7 +233,7 @@ error_code sys_ppu_thread_join(ppu_thread& ppu, u32 thread_id, vm::ptr vptr error_code sys_ppu_thread_detach(ppu_thread& ppu, u32 thread_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_ppu_thread.trace("sys_ppu_thread_detach(thread_id=0x%x)", thread_id); @@ -300,7 +300,7 @@ error_code sys_ppu_thread_get_join_state(ppu_thread& ppu, vm::ptr isjoinabl error_code sys_ppu_thread_set_priority(ppu_thread& ppu, u32 thread_id, s32 prio) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_ppu_thread.trace("sys_ppu_thread_set_priority(thread_id=0x%x, prio=%d)", thread_id, prio); @@ -338,7 +338,7 @@ error_code sys_ppu_thread_set_priority(ppu_thread& ppu, u32 thread_id, s32 prio) error_code sys_ppu_thread_get_priority(ppu_thread& ppu, u32 thread_id, vm::ptr priop) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_ppu_thread.trace("sys_ppu_thread_get_priority(thread_id=0x%x, priop=*0x%x)", thread_id, priop); @@ -379,7 +379,7 @@ error_code sys_ppu_thread_get_stack_information(ppu_thread& ppu, vm::ptr thread_id, vm::ptr param, u64 arg, u64 unk, s32 prio, u32 _stacksz, u64 flags, vm::cptr threadname) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_ppu_thread.warning("_sys_ppu_thread_create(thread_id=*0x%x, param=*0x%x, arg=0x%llx, unk=0x%llx, prio=%d, stacksize=0x%x, flags=0x%llx, threadname=*0x%x)", thread_id, param, arg, unk, prio, _stacksz, flags, threadname); @@ -495,7 +495,7 @@ error_code _sys_ppu_thread_create(ppu_thread& ppu, vm::ptr thread_id, vm::p error_code sys_ppu_thread_start(ppu_thread& ppu, u32 thread_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_ppu_thread.trace("sys_ppu_thread_start(thread_id=0x%x)", thread_id); @@ -562,7 +562,7 @@ error_code sys_ppu_thread_start(ppu_thread& ppu, u32 thread_id) error_code sys_ppu_thread_rename(ppu_thread& ppu, u32 thread_id, vm::cptr name) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_ppu_thread.warning("sys_ppu_thread_rename(thread_id=0x%x, name=*0x%x)", thread_id, name); @@ -594,7 +594,7 @@ error_code sys_ppu_thread_rename(ppu_thread& ppu, u32 thread_id, vm::cptr error_code sys_ppu_thread_recover_page_fault(ppu_thread& ppu, u32 thread_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_ppu_thread.warning("sys_ppu_thread_recover_page_fault(thread_id=0x%x)", thread_id); @@ -610,7 +610,7 @@ error_code sys_ppu_thread_recover_page_fault(ppu_thread& ppu, u32 thread_id) error_code sys_ppu_thread_get_page_fault_context(ppu_thread& ppu, u32 thread_id, vm::ptr ctxt) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_ppu_thread.todo("sys_ppu_thread_get_page_fault_context(thread_id=0x%x, ctxt=*0x%x)", thread_id, ctxt); diff --git a/rpcs3/Emu/Cell/lv2/sys_process.cpp b/rpcs3/Emu/Cell/lv2/sys_process.cpp index 8ab88d7bacce..2cf6c174588d 100644 --- a/rpcs3/Emu/Cell/lv2/sys_process.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_process.cpp @@ -342,7 +342,7 @@ error_code sys_process_detach_child(u64 unk) void _sys_process_exit(ppu_thread& ppu, s32 status, u32 arg2, u32 arg3) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_process.warning("_sys_process_exit(status=%d, arg2=0x%x, arg3=0x%x)", status, arg2, arg3); @@ -366,7 +366,7 @@ void _sys_process_exit(ppu_thread& ppu, s32 status, u32 arg2, u32 arg3) void _sys_process_exit2(ppu_thread& ppu, s32 status, vm::ptr arg, u32 arg_size, u32 arg4) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_process.warning("_sys_process_exit2(status=%d, arg=*0x%x, arg_size=0x%x, arg4=0x%x)", status, arg, arg_size, arg4); @@ -478,7 +478,7 @@ void _sys_process_exit2(ppu_thread& ppu, s32 status, vm::ptr ar void sys_process_exit3(ppu_thread& ppu, s32 status) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_process.warning("_sys_process_exit3(status=%d)", status); diff --git a/rpcs3/Emu/Cell/lv2/sys_prx.cpp b/rpcs3/Emu/Cell/lv2/sys_prx.cpp index 1ed9d7c61ac2..22c9889a98a6 100644 --- a/rpcs3/Emu/Cell/lv2/sys_prx.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_prx.cpp @@ -363,7 +363,7 @@ void lv2_prx::save(utils::serial& ar) error_code sys_prx_get_ppu_guid(ppu_thread& ppu) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.todo("sys_prx_get_ppu_guid()"); return CELL_OK; @@ -371,7 +371,7 @@ error_code sys_prx_get_ppu_guid(ppu_thread& ppu) error_code _sys_prx_load_module_by_fd(ppu_thread& ppu, s32 fd, u64 offset, u64 flags, vm::ptr pOpt) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.warning("_sys_prx_load_module_by_fd(fd=%d, offset=0x%x, flags=0x%x, pOpt=*0x%x)", fd, offset, flags, pOpt); @@ -394,7 +394,7 @@ error_code _sys_prx_load_module_by_fd(ppu_thread& ppu, s32 fd, u64 offset, u64 f error_code _sys_prx_load_module_on_memcontainer_by_fd(ppu_thread& ppu, s32 fd, u64 offset, u32 mem_ct, u64 flags, vm::ptr pOpt) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.warning("_sys_prx_load_module_on_memcontainer_by_fd(fd=%d, offset=0x%x, mem_ct=0x%x, flags=0x%x, pOpt=*0x%x)", fd, offset, mem_ct, flags, pOpt); @@ -443,7 +443,7 @@ static error_code prx_load_module_list(ppu_thread& ppu, s32 count, vm::cpptr path_list, u64 flags, vm::ptr pOpt, vm::ptr id_list) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.warning("_sys_prx_load_module_list(count=%d, path_list=**0x%x, flags=0x%x, pOpt=*0x%x, id_list=*0x%x)", count, path_list, flags, pOpt, id_list); @@ -451,7 +451,7 @@ error_code _sys_prx_load_module_list(ppu_thread& ppu, s32 count, vm::cpptr path_list, u32 mem_ct, u64 flags, vm::ptr pOpt, vm::ptr id_list) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.warning("_sys_prx_load_module_list_on_memcontainer(count=%d, path_list=**0x%x, mem_ct=0x%x, flags=0x%x, pOpt=*0x%x, id_list=*0x%x)", count, path_list, mem_ct, flags, pOpt, id_list); @@ -460,7 +460,7 @@ error_code _sys_prx_load_module_list_on_memcontainer(ppu_thread& ppu, s32 count, error_code _sys_prx_load_module_on_memcontainer(ppu_thread& ppu, vm::cptr path, u32 mem_ct, u64 flags, vm::ptr pOpt) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.warning("_sys_prx_load_module_on_memcontainer(path=%s, mem_ct=0x%x, flags=0x%x, pOpt=*0x%x)", path, mem_ct, flags, pOpt); @@ -469,7 +469,7 @@ error_code _sys_prx_load_module_on_memcontainer(ppu_thread& ppu, vm::cptr error_code _sys_prx_load_module(ppu_thread& ppu, vm::cptr path, u64 flags, vm::ptr pOpt) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.warning("_sys_prx_load_module(path=%s, flags=0x%x, pOpt=*0x%x)", path, flags, pOpt); @@ -478,7 +478,7 @@ error_code _sys_prx_load_module(ppu_thread& ppu, vm::cptr path, u64 flags, error_code _sys_prx_start_module(ppu_thread& ppu, u32 id, u64 flags, vm::ptr pOpt) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.warning("_sys_prx_start_module(id=0x%x, flags=0x%x, pOpt=*0x%x)", id, flags, pOpt); @@ -555,7 +555,7 @@ error_code _sys_prx_start_module(ppu_thread& ppu, u32 id, u64 flags, vm::ptr pOpt) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.warning("_sys_prx_stop_module(id=0x%x, flags=0x%x, pOpt=*0x%x)", id, flags, pOpt); @@ -652,7 +652,7 @@ error_code _sys_prx_stop_module(ppu_thread& ppu, u32 id, u64 flags, vm::ptr pOpt) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; // Get the PRX, free the used memory and delete the object and its ID const auto prx = idm::withdraw(id, [](lv2_prx& prx) -> CellPrxError @@ -693,7 +693,7 @@ void ppu_manual_load_imports_exports(u32 imports_start, u32 imports_size, u32 ex error_code _sys_prx_register_module(ppu_thread& ppu, vm::cptr name, vm::ptr opt) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.todo("_sys_prx_register_module(name=%s, opt=*0x%x)", name, opt); @@ -752,7 +752,7 @@ error_code _sys_prx_register_module(ppu_thread& ppu, vm::cptr name, vm::pt error_code _sys_prx_query_module(ppu_thread& ppu) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.todo("_sys_prx_query_module()"); return CELL_OK; @@ -760,7 +760,7 @@ error_code _sys_prx_query_module(ppu_thread& ppu) error_code _sys_prx_register_library(ppu_thread& ppu, vm::ptr library) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.todo("_sys_prx_register_library(library=*0x%x)", library); return CELL_OK; @@ -768,7 +768,7 @@ error_code _sys_prx_register_library(ppu_thread& ppu, vm::ptr library) error_code _sys_prx_unregister_library(ppu_thread& ppu, vm::ptr library) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.todo("_sys_prx_unregister_library(library=*0x%x)", library); return CELL_OK; @@ -776,7 +776,7 @@ error_code _sys_prx_unregister_library(ppu_thread& ppu, vm::ptr library) error_code _sys_prx_link_library(ppu_thread& ppu) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.todo("_sys_prx_link_library()"); return CELL_OK; @@ -784,7 +784,7 @@ error_code _sys_prx_link_library(ppu_thread& ppu) error_code _sys_prx_unlink_library(ppu_thread& ppu) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.todo("_sys_prx_unlink_library()"); return CELL_OK; @@ -792,7 +792,7 @@ error_code _sys_prx_unlink_library(ppu_thread& ppu) error_code _sys_prx_query_library(ppu_thread& ppu) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.todo("_sys_prx_query_library()"); return CELL_OK; @@ -800,7 +800,7 @@ error_code _sys_prx_query_library(ppu_thread& ppu) error_code _sys_prx_get_module_list(ppu_thread& ppu, u64 flags, vm::ptr pInfo) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; if (flags & 0x1) { @@ -860,7 +860,7 @@ error_code _sys_prx_get_module_list(ppu_thread& ppu, u64 flags, vm::ptr pOpt) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.warning("_sys_prx_get_module_info(id=0x%x, flags=%d, pOpt=*0x%x)", id, flags, pOpt); @@ -924,7 +924,7 @@ error_code _sys_prx_get_module_info(ppu_thread& ppu, u32 id, u64 flags, vm::ptr< error_code _sys_prx_get_module_id_by_name(ppu_thread& ppu, vm::cptr name, u64 flags, vm::ptr pOpt) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.todo("_sys_prx_get_module_id_by_name(name=%s, flags=%d, pOpt=*0x%x)", name, flags, pOpt); @@ -935,7 +935,7 @@ error_code _sys_prx_get_module_id_by_name(ppu_thread& ppu, vm::cptr name, error_code _sys_prx_get_module_id_by_address(ppu_thread& ppu, u32 addr) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.warning("_sys_prx_get_module_id_by_address(addr=0x%x)", addr); @@ -968,7 +968,7 @@ error_code _sys_prx_get_module_id_by_address(ppu_thread& ppu, u32 addr) error_code _sys_prx_start(ppu_thread& ppu) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.todo("sys_prx_start()"); return CELL_OK; @@ -976,7 +976,7 @@ error_code _sys_prx_start(ppu_thread& ppu) error_code _sys_prx_stop(ppu_thread& ppu) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_prx.todo("sys_prx_stop()"); return CELL_OK; diff --git a/rpcs3/Emu/Cell/lv2/sys_rsx.cpp b/rpcs3/Emu/Cell/lv2/sys_rsx.cpp index bc047d91d479..85c66fe6ff04 100644 --- a/rpcs3/Emu/Cell/lv2/sys_rsx.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_rsx.cpp @@ -93,7 +93,7 @@ bool rsx::thread::send_event(u64 data1, u64 event_flags, u64 data3) error_code sys_rsx_device_open(cpu_thread& cpu) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_rsx.todo("sys_rsx_device_open()"); @@ -102,7 +102,7 @@ error_code sys_rsx_device_open(cpu_thread& cpu) error_code sys_rsx_device_close(cpu_thread& cpu) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_rsx.todo("sys_rsx_device_close()"); @@ -121,7 +121,7 @@ error_code sys_rsx_device_close(cpu_thread& cpu) */ error_code sys_rsx_memory_allocate(cpu_thread& cpu, vm::ptr mem_handle, vm::ptr mem_addr, u32 size, u64 flags, u64 a5, u64 a6, u64 a7) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_rsx.warning("sys_rsx_memory_allocate(mem_handle=*0x%x, mem_addr=*0x%x, size=0x%x, flags=0x%llx, a5=0x%llx, a6=0x%llx, a7=0x%llx)", mem_handle, mem_addr, size, flags, a5, a6, a7); @@ -142,7 +142,7 @@ error_code sys_rsx_memory_allocate(cpu_thread& cpu, vm::ptr mem_handle, vm: */ error_code sys_rsx_memory_free(cpu_thread& cpu, u32 mem_handle) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_rsx.warning("sys_rsx_memory_free(mem_handle=0x%x)", mem_handle); @@ -175,7 +175,7 @@ error_code sys_rsx_memory_free(cpu_thread& cpu, u32 mem_handle) */ error_code sys_rsx_context_allocate(cpu_thread& cpu, vm::ptr context_id, vm::ptr lpar_dma_control, vm::ptr lpar_driver_info, vm::ptr lpar_reports, u64 mem_ctx, u64 system_mode) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_rsx.warning("sys_rsx_context_allocate(context_id=*0x%x, lpar_dma_control=*0x%x, lpar_driver_info=*0x%x, lpar_reports=*0x%x, mem_ctx=0x%llx, system_mode=0x%llx)", context_id, lpar_dma_control, lpar_driver_info, lpar_reports, mem_ctx, system_mode); @@ -281,7 +281,7 @@ error_code sys_rsx_context_allocate(cpu_thread& cpu, vm::ptr context_id, vm */ error_code sys_rsx_context_free(cpu_thread& cpu, u32 context_id) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_rsx.todo("sys_rsx_context_free(context_id=0x%x)", context_id); @@ -307,7 +307,7 @@ error_code sys_rsx_context_free(cpu_thread& cpu, u32 context_id) */ error_code sys_rsx_context_iomap(cpu_thread& cpu, u32 context_id, u32 io, u32 ea, u32 size, u64 flags) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_rsx.warning("sys_rsx_context_iomap(context_id=0x%x, io=0x%x, ea=0x%x, size=0x%x, flags=0x%llx)", context_id, io, ea, size, flags); @@ -370,7 +370,7 @@ error_code sys_rsx_context_iomap(cpu_thread& cpu, u32 context_id, u32 io, u32 ea */ error_code sys_rsx_context_iounmap(cpu_thread& cpu, u32 context_id, u32 io, u32 size) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_rsx.warning("sys_rsx_context_iounmap(context_id=0x%x, io=0x%x, size=0x%x)", context_id, io, size); @@ -416,7 +416,7 @@ error_code sys_rsx_context_attribute(u32 context_id, u32 package_id, u64 a3, u64 { if (auto cpu = get_current_cpu_thread()) { - cpu->state += cpu_flag::wait; + cpu->state += cpu_flag::unmem; } // Flip/queue/reset flip/flip event/user command/vblank as trace to help with log spam @@ -842,7 +842,7 @@ error_code sys_rsx_context_attribute(u32 context_id, u32 package_id, u64 a3, u64 */ error_code sys_rsx_device_map(cpu_thread& cpu, vm::ptr dev_addr, vm::ptr a2, u32 dev_id) { - cpu.state += cpu_flag::wait; + cpu.state += cpu_flag::unmem; sys_rsx.warning("sys_rsx_device_map(dev_addr=*0x%x, a2=*0x%x, dev_id=0x%x)", dev_addr, a2, dev_id); @@ -880,7 +880,7 @@ error_code sys_rsx_device_map(cpu_thread& cpu, vm::ptr dev_addr, vm::ptr rw_lock_id, vm::ptr attr) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_rwlock.warning("sys_rwlock_create(rw_lock_id=*0x%x, attr=*0x%x)", rw_lock_id, attr); @@ -68,7 +68,7 @@ error_code sys_rwlock_create(ppu_thread& ppu, vm::ptr rw_lock_id, vm::ptr sem_id, vm::ptr attr, s32 initial_val, s32 max_val) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_semaphore.warning("sys_semaphore_create(sem_id=*0x%x, attr=*0x%x, initial_val=%d, max_val=%d)", sem_id, attr, initial_val, max_val); @@ -77,7 +77,7 @@ error_code sys_semaphore_create(ppu_thread& ppu, vm::ptr sem_id, vm::ptr count) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_semaphore.trace("sys_semaphore_get_value(sem_id=0x%x, count=*0x%x)", sem_id, count); diff --git a/rpcs3/Emu/Cell/lv2/sys_spu.cpp b/rpcs3/Emu/Cell/lv2/sys_spu.cpp index 06f288e6cadb..c099a8510007 100644 --- a/rpcs3/Emu/Cell/lv2/sys_spu.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_spu.cpp @@ -413,7 +413,7 @@ struct spu_limits_t error_code sys_spu_initialize(ppu_thread& ppu, u32 max_usable_spu, u32 max_raw_spu) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_initialize(max_usable_spu=%d, max_raw_spu=%d)", max_usable_spu, max_raw_spu); @@ -441,7 +441,7 @@ error_code sys_spu_initialize(ppu_thread& ppu, u32 max_usable_spu, u32 max_raw_s error_code _sys_spu_image_get_information(ppu_thread& ppu, vm::ptr img, vm::ptr entry_point, vm::ptr nsegs) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("_sys_spu_image_get_information(img=*0x%x, entry_point=*0x%x, nsegs=*0x%x)", img, entry_point, nsegs); @@ -464,7 +464,7 @@ error_code _sys_spu_image_get_information(ppu_thread& ppu, vm::ptr img, vm::cptr path) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_image_open(img=*0x%x, path=%s)", img, path); @@ -491,7 +491,7 @@ error_code sys_spu_image_open(ppu_thread& ppu, vm::ptr img, vm::c error_code _sys_spu_image_import(ppu_thread& ppu, vm::ptr img, u32 src, u32 size, u32 arg4) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("_sys_spu_image_import(img=*0x%x, src=*0x%x, size=0x%x, arg4=0x%x)", img, src, size, arg4); @@ -501,7 +501,7 @@ error_code _sys_spu_image_import(ppu_thread& ppu, vm::ptr img, u3 error_code _sys_spu_image_close(ppu_thread& ppu, vm::ptr img) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("_sys_spu_image_close(img=*0x%x)", img); @@ -523,7 +523,7 @@ error_code _sys_spu_image_close(ppu_thread& ppu, vm::ptr img) error_code _sys_spu_image_get_segments(ppu_thread& ppu, vm::ptr img, vm::ptr segments, s32 nseg) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.error("_sys_spu_image_get_segments(img=*0x%x, segments=*0x%x, nseg=%d)", img, segments, nseg); @@ -546,7 +546,7 @@ error_code _sys_spu_image_get_segments(ppu_thread& ppu, vm::ptr i error_code sys_spu_thread_initialize(ppu_thread& ppu, vm::ptr thread, u32 group_id, u32 spu_num, vm::ptr img, vm::ptr attr, vm::ptr arg) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_initialize(thread=*0x%x, group=0x%x, spu_num=%d, img=*0x%x, attr=*0x%x, arg=*0x%x)", thread, group_id, spu_num, img, attr, arg); @@ -746,7 +746,7 @@ error_code sys_spu_thread_initialize(ppu_thread& ppu, vm::ptr thread, u32 g error_code sys_spu_thread_set_argument(ppu_thread& ppu, u32 id, vm::ptr arg) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_set_argument(id=0x%x, arg=*0x%x)", id, arg); @@ -766,7 +766,7 @@ error_code sys_spu_thread_set_argument(ppu_thread& ppu, u32 id, vm::ptr status) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_get_exit_status(id=0x%x, status=*0x%x)", id, status); @@ -790,7 +790,7 @@ error_code sys_spu_thread_get_exit_status(ppu_thread& ppu, u32 id, vm::ptr error_code sys_spu_thread_group_create(ppu_thread& ppu, vm::ptr id, u32 num, s32 prio, vm::ptr attr) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_group_create(id=*0x%x, num=%d, prio=%d, attr=*0x%x)", id, num, prio, attr); @@ -947,7 +947,7 @@ error_code sys_spu_thread_group_create(ppu_thread& ppu, vm::ptr id, u32 num error_code sys_spu_thread_group_destroy(ppu_thread& ppu, u32 id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_group_destroy(id=0x%x)", id); @@ -1004,7 +1004,7 @@ error_code sys_spu_thread_group_destroy(ppu_thread& ppu, u32 id) error_code sys_spu_thread_group_start(ppu_thread& ppu, u32 id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_spu_thread_group_start(id=0x%x)", id); @@ -1090,7 +1090,7 @@ error_code sys_spu_thread_group_start(ppu_thread& ppu, u32 id) error_code sys_spu_thread_group_suspend(ppu_thread& ppu, u32 id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_spu_thread_group_suspend(id=0x%x)", id); @@ -1173,7 +1173,7 @@ error_code sys_spu_thread_group_suspend(ppu_thread& ppu, u32 id) error_code sys_spu_thread_group_resume(ppu_thread& ppu, u32 id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_spu_thread_group_resume(id=0x%x)", id); @@ -1261,7 +1261,7 @@ error_code sys_spu_thread_group_resume(ppu_thread& ppu, u32 id) error_code sys_spu_thread_group_yield(ppu_thread& ppu, u32 id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_spu_thread_group_yield(id=0x%x)", id); @@ -1295,7 +1295,7 @@ error_code sys_spu_thread_group_yield(ppu_thread& ppu, u32 id) error_code sys_spu_thread_group_terminate(ppu_thread& ppu, u32 id, s32 value) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_spu_thread_group_terminate(id=0x%x, value=0x%x)", id, value); @@ -1314,7 +1314,7 @@ error_code sys_spu_thread_group_terminate(ppu_thread& ppu, u32 id, s32 value) lv2_obj::sleep(ppu); busy_wait(3000); ppu.check_state(); - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; }; if (auto state = +group->run_state; @@ -1410,7 +1410,7 @@ error_code sys_spu_thread_group_terminate(ppu_thread& ppu, u32 id, s32 value) error_code sys_spu_thread_group_join(ppu_thread& ppu, u32 id, vm::ptr cause, vm::ptr status) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_spu_thread_group_join(id=0x%x, cause=*0x%x, status=*0x%x)", id, cause, status); @@ -1467,7 +1467,7 @@ error_code sys_spu_thread_group_join(ppu_thread& ppu, u32 id, vm::ptr cause while (auto state = +ppu.state) { - if (state & cpu_flag::signal && ppu.state.test_and_reset(cpu_flag::signal)) + if (state & cpu_flag::signal) { break; } @@ -1514,7 +1514,7 @@ error_code sys_spu_thread_group_join(ppu_thread& ppu, u32 id, vm::ptr cause error_code sys_spu_thread_group_set_priority(ppu_thread& ppu, u32 id, s32 priority) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_spu_thread_group_set_priority(id=0x%x, priority=%d)", id, priority); @@ -1537,7 +1537,7 @@ error_code sys_spu_thread_group_set_priority(ppu_thread& ppu, u32 id, s32 priori error_code sys_spu_thread_group_get_priority(ppu_thread& ppu, u32 id, vm::ptr priority) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_spu_thread_group_get_priority(id=0x%x, priority=*0x%x)", id, priority); @@ -1562,7 +1562,7 @@ error_code sys_spu_thread_group_get_priority(ppu_thread& ppu, u32 id, vm::ptr info) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_group_syscall_253(id=0x%x, info=*0x%x)", id, info); @@ -1616,7 +1616,7 @@ error_code sys_spu_thread_group_syscall_253(ppu_thread& ppu, u32 id, vm::ptr value, u32 type) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_spu_thread_read_ls(id=0x%x, lsa=0x%05x, value=*0x%x, type=%d)", id, lsa, value, type); @@ -1702,7 +1702,7 @@ error_code sys_spu_thread_read_ls(ppu_thread& ppu, u32 id, u32 lsa, vm::ptr error_code sys_spu_thread_write_spu_mb(ppu_thread& ppu, u32 id, u32 value) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_write_spu_mb(id=0x%x, value=0x%x)", id, value); @@ -1722,7 +1722,7 @@ error_code sys_spu_thread_write_spu_mb(ppu_thread& ppu, u32 id, u32 value) error_code sys_spu_thread_set_spu_cfg(ppu_thread& ppu, u32 id, u64 value) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_set_spu_cfg(id=0x%x, value=0x%x)", id, value); @@ -1745,7 +1745,7 @@ error_code sys_spu_thread_set_spu_cfg(ppu_thread& ppu, u32 id, u64 value) error_code sys_spu_thread_get_spu_cfg(ppu_thread& ppu, u32 id, vm::ptr value) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_get_spu_cfg(id=0x%x, value=*0x%x)", id, value); @@ -1763,7 +1763,7 @@ error_code sys_spu_thread_get_spu_cfg(ppu_thread& ppu, u32 id, vm::ptr valu error_code sys_spu_thread_write_snr(ppu_thread& ppu, u32 id, u32 number, u32 value) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_spu_thread_write_snr(id=0x%x, number=%d, value=0x%x)", id, number, value); @@ -1786,7 +1786,7 @@ error_code sys_spu_thread_write_snr(ppu_thread& ppu, u32 id, u32 number, u32 val error_code sys_spu_thread_group_connect_event(ppu_thread& ppu, u32 id, u32 eq, u32 et) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_group_connect_event(id=0x%x, eq=0x%x, et=%d)", id, eq, et); @@ -1835,7 +1835,7 @@ error_code sys_spu_thread_group_connect_event(ppu_thread& ppu, u32 id, u32 eq, u error_code sys_spu_thread_group_disconnect_event(ppu_thread& ppu, u32 id, u32 et) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_group_disconnect_event(id=0x%x, et=%d)", id, et); @@ -1871,7 +1871,7 @@ error_code sys_spu_thread_group_disconnect_event(ppu_thread& ppu, u32 id, u32 et error_code sys_spu_thread_connect_event(ppu_thread& ppu, u32 id, u32 eq, u32 et, u8 spup) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_connect_event(id=0x%x, eq=0x%x, et=%d, spup=%d)", id, eq, et, spup); @@ -1905,7 +1905,7 @@ error_code sys_spu_thread_connect_event(ppu_thread& ppu, u32 id, u32 eq, u32 et, error_code sys_spu_thread_disconnect_event(ppu_thread& ppu, u32 id, u32 et, u8 spup) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_disconnect_event(id=0x%x, et=%d, spup=%d)", id, et, spup); @@ -1938,7 +1938,7 @@ error_code sys_spu_thread_disconnect_event(ppu_thread& ppu, u32 id, u32 et, u8 s error_code sys_spu_thread_bind_queue(ppu_thread& ppu, u32 id, u32 spuq, u32 spuq_num) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_bind_queue(id=0x%x, spuq=0x%x, spuq_num=0x%x)", id, spuq, spuq_num); @@ -1990,7 +1990,7 @@ error_code sys_spu_thread_bind_queue(ppu_thread& ppu, u32 id, u32 spuq, u32 spuq error_code sys_spu_thread_unbind_queue(ppu_thread& ppu, u32 id, u32 spuq_num) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_unbind_queue(id=0x%x, spuq_num=0x%x)", id, spuq_num); @@ -2024,7 +2024,7 @@ error_code sys_spu_thread_unbind_queue(ppu_thread& ppu, u32 id, u32 spuq_num) error_code sys_spu_thread_group_connect_event_all_threads(ppu_thread& ppu, u32 id, u32 eq, u64 req, vm::ptr spup) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_group_connect_event_all_threads(id=0x%x, eq=0x%x, req=0x%llx, spup=*0x%x)", id, eq, req, spup); @@ -2103,7 +2103,7 @@ error_code sys_spu_thread_group_connect_event_all_threads(ppu_thread& ppu, u32 i error_code sys_spu_thread_group_disconnect_event_all_threads(ppu_thread& ppu, u32 id, u8 spup) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_group_disconnect_event_all_threads(id=0x%x, spup=%d)", id, spup); @@ -2134,7 +2134,7 @@ error_code sys_spu_thread_group_disconnect_event_all_threads(ppu_thread& ppu, u3 error_code sys_spu_thread_group_log(ppu_thread& ppu, s32 command, vm::ptr stat) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_group_log(command=0x%x, stat=*0x%x)", command, stat); @@ -2171,7 +2171,7 @@ error_code sys_spu_thread_group_log(ppu_thread& ppu, s32 command, vm::ptr s error_code sys_spu_thread_recover_page_fault(ppu_thread& ppu, u32 id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_spu_thread_recover_page_fault(id=0x%x)", id); @@ -2187,7 +2187,7 @@ error_code sys_spu_thread_recover_page_fault(ppu_thread& ppu, u32 id) error_code sys_raw_spu_recover_page_fault(ppu_thread& ppu, u32 id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_raw_spu_recover_page_fault(id=0x%x)", id); @@ -2203,7 +2203,7 @@ error_code sys_raw_spu_recover_page_fault(ppu_thread& ppu, u32 id) error_code sys_raw_spu_create(ppu_thread& ppu, vm::ptr id, vm::ptr attr) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_raw_spu_create(id=*0x%x, attr=*0x%x)", id, attr); @@ -2243,7 +2243,7 @@ error_code sys_raw_spu_create(ppu_thread& ppu, vm::ptr id, vm::ptr at error_code sys_isolated_spu_create(ppu_thread& ppu, vm::ptr id, vm::ptr image, u64 arg1, u64 arg2, u64 arg3, u64 arg4) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.todo("sys_isolated_spu_create(id=*0x%x, image=*0x%x, arg1=0x%llx, arg2=0x%llx, arg3=0x%llx, arg4=0x%llx)", id, image, arg1, arg2, arg3, arg4); @@ -2389,7 +2389,7 @@ error_code raw_spu_destroy(ppu_thread& ppu, u32 id) error_code sys_raw_spu_destroy(ppu_thread& ppu, u32 id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_raw_spu_destroy(id=%d)", id); @@ -2398,7 +2398,7 @@ error_code sys_raw_spu_destroy(ppu_thread& ppu, u32 id) error_code sys_isolated_spu_destroy(ppu_thread& ppu, u32 id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.todo("sys_isolated_spu_destroy(id=%d)", id); @@ -2451,7 +2451,7 @@ error_code raw_spu_create_interrupt_tag(u32 id, u32 class_id, u32 /*hwthread*/, error_code sys_raw_spu_create_interrupt_tag(ppu_thread& ppu, u32 id, u32 class_id, u32 hwthread, vm::ptr intrtag) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.warning("sys_raw_spu_create_interrupt_tag(id=%d, class_id=%d, hwthread=0x%x, intrtag=*0x%x)", id, class_id, hwthread, intrtag); @@ -2460,7 +2460,7 @@ error_code sys_raw_spu_create_interrupt_tag(ppu_thread& ppu, u32 id, u32 class_i error_code sys_isolated_spu_create_interrupt_tag(ppu_thread& ppu, u32 id, u32 class_id, u32 hwthread, vm::ptr intrtag) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.todo("sys_isolated_spu_create_interrupt_tag(id=%d, class_id=%d, hwthread=0x%x, intrtag=*0x%x)", id, class_id, hwthread, intrtag); @@ -2489,7 +2489,7 @@ error_code raw_spu_set_int_mask(u32 id, u32 class_id, u64 mask) error_code sys_raw_spu_set_int_mask(ppu_thread& ppu, u32 id, u32 class_id, u64 mask) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_raw_spu_set_int_mask(id=%d, class_id=%d, mask=0x%llx)", id, class_id, mask); @@ -2499,7 +2499,7 @@ error_code sys_raw_spu_set_int_mask(ppu_thread& ppu, u32 id, u32 class_id, u64 m error_code sys_isolated_spu_set_int_mask(ppu_thread& ppu, u32 id, u32 class_id, u64 mask) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.todo("sys_isolated_spu_set_int_mask(id=%d, class_id=%d, mask=0x%llx)", id, class_id, mask); @@ -2528,7 +2528,7 @@ error_code raw_spu_set_int_stat(u32 id, u32 class_id, u64 stat) error_code sys_raw_spu_set_int_stat(ppu_thread& ppu, u32 id, u32 class_id, u64 stat) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_raw_spu_set_int_stat(id=%d, class_id=%d, stat=0x%llx)", id, class_id, stat); @@ -2537,7 +2537,7 @@ error_code sys_raw_spu_set_int_stat(ppu_thread& ppu, u32 id, u32 class_id, u64 s error_code sys_isolated_spu_set_int_stat(ppu_thread& ppu, u32 id, u32 class_id, u64 stat) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.todo("sys_isolated_spu_set_int_stat(id=%d, class_id=%d, stat=0x%llx)", id, class_id, stat); @@ -2566,7 +2566,7 @@ error_code raw_spu_get_int_control(u32 id, u32 class_id, vm::ptr value, ato error_code sys_raw_spu_get_int_mask(ppu_thread& ppu, u32 id, u32 class_id, vm::ptr mask) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_raw_spu_get_int_mask(id=%d, class_id=%d, mask=*0x%x)", id, class_id, mask); @@ -2575,7 +2575,7 @@ error_code sys_raw_spu_get_int_mask(ppu_thread& ppu, u32 id, u32 class_id, vm::p error_code sys_isolated_spu_get_int_mask(ppu_thread& ppu, u32 id, u32 class_id, vm::ptr mask) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_isolated_spu_get_int_mask(id=%d, class_id=%d, mask=*0x%x)", id, class_id, mask); @@ -2584,7 +2584,7 @@ error_code sys_isolated_spu_get_int_mask(ppu_thread& ppu, u32 id, u32 class_id, error_code sys_raw_spu_get_int_stat(ppu_thread& ppu, u32 id, u32 class_id, vm::ptr stat) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_raw_spu_get_int_stat(id=%d, class_id=%d, stat=*0x%x)", id, class_id, stat); @@ -2593,7 +2593,7 @@ error_code sys_raw_spu_get_int_stat(ppu_thread& ppu, u32 id, u32 class_id, vm::p error_code sys_isolated_spu_get_int_stat(ppu_thread& ppu, u32 id, u32 class_id, vm::ptr stat) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.todo("sys_isolated_spu_get_int_stat(id=%d, class_id=%d, stat=*0x%x)", id, class_id, stat); @@ -2617,7 +2617,7 @@ error_code raw_spu_read_puint_mb(u32 id, vm::ptr value) error_code sys_raw_spu_read_puint_mb(ppu_thread& ppu, u32 id, vm::ptr value) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_raw_spu_read_puint_mb(id=%d, value=*0x%x)", id, value); @@ -2626,7 +2626,7 @@ error_code sys_raw_spu_read_puint_mb(ppu_thread& ppu, u32 id, vm::ptr value error_code sys_isolated_spu_read_puint_mb(ppu_thread& ppu, u32 id, vm::ptr value) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.todo("sys_isolated_spu_read_puint_mb(id=%d, value=*0x%x)", id, value); @@ -2655,7 +2655,7 @@ error_code raw_spu_set_spu_cfg(u32 id, u32 value) error_code sys_raw_spu_set_spu_cfg(ppu_thread& ppu, u32 id, u32 value) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_raw_spu_set_spu_cfg(id=%d, value=0x%x)", id, value); @@ -2664,7 +2664,7 @@ error_code sys_raw_spu_set_spu_cfg(ppu_thread& ppu, u32 id, u32 value) error_code sys_isolated_spu_set_spu_cfg(ppu_thread& ppu, u32 id, u32 value) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.todo("sys_isolated_spu_set_spu_cfg(id=%d, value=0x%x)", id, value); @@ -2688,7 +2688,7 @@ error_code raw_spu_get_spu_cfg(u32 id, vm::ptr value) error_code sys_raw_spu_get_spu_cfg(ppu_thread& ppu, u32 id, vm::ptr value) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.trace("sys_raw_spu_get_spu_afg(id=%d, value=*0x%x)", id, value); @@ -2697,7 +2697,7 @@ error_code sys_raw_spu_get_spu_cfg(ppu_thread& ppu, u32 id, vm::ptr value) error_code sys_isolated_spu_get_spu_cfg(ppu_thread& ppu, u32 id, vm::ptr value) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.todo("sys_isolated_spu_get_spu_afg(id=%d, value=*0x%x)", id, value); @@ -2706,7 +2706,7 @@ error_code sys_isolated_spu_get_spu_cfg(ppu_thread& ppu, u32 id, vm::ptr va error_code sys_isolated_spu_start(ppu_thread& ppu, u32 id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_spu.todo("sys_isolated_spu_start(id=%d)", id); diff --git a/rpcs3/Emu/Cell/lv2/sys_timer.cpp b/rpcs3/Emu/Cell/lv2/sys_timer.cpp index 6c196f0a1d54..a49d7fa080eb 100644 --- a/rpcs3/Emu/Cell/lv2/sys_timer.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_timer.cpp @@ -146,7 +146,7 @@ void lv2_timer_thread::operator()() error_code sys_timer_create(ppu_thread& ppu, vm::ptr timer_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_timer.warning("sys_timer_create(timer_id=*0x%x)", timer_id); @@ -172,7 +172,7 @@ error_code sys_timer_create(ppu_thread& ppu, vm::ptr timer_id) error_code sys_timer_destroy(ppu_thread& ppu, u32 timer_id) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_timer.warning("sys_timer_destroy(timer_id=0x%x)", timer_id); @@ -210,7 +210,7 @@ error_code sys_timer_destroy(ppu_thread& ppu, u32 timer_id) error_code sys_timer_get_information(ppu_thread& ppu, u32 timer_id, vm::ptr info) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_timer.trace("sys_timer_get_information(timer_id=0x%x, info=*0x%x)", timer_id, info); @@ -232,7 +232,7 @@ error_code sys_timer_get_information(ppu_thread& ppu, u32 timer_id, vm::ptr handle) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.warning("sys_usbd_initialize(handle=*0x%x)", handle); @@ -632,7 +632,7 @@ error_code sys_usbd_initialize(ppu_thread& ppu, vm::ptr handle) error_code sys_usbd_finalize(ppu_thread& ppu, u32 handle) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.warning("sys_usbd_finalize(handle=0x%x)", handle); @@ -657,7 +657,7 @@ error_code sys_usbd_finalize(ppu_thread& ppu, u32 handle) error_code sys_usbd_get_device_list(ppu_thread& ppu, u32 handle, vm::ptr device_list, u32 max_devices) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.warning("sys_usbd_get_device_list(handle=0x%x, device_list=*0x%x, max_devices=0x%x)", handle, device_list, max_devices); @@ -680,7 +680,7 @@ error_code sys_usbd_get_device_list(ppu_thread& ppu, u32 handle, vm::ptr s_product, u16 slen_product, u16 id_vendor, u16 id_product_min, u16 id_product_max) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.warning("sys_usbd_register_extra_ldd(handle=0x%x, s_product=%s, slen_product=0x%x, id_vendor=0x%x, id_product_min=0x%x, id_product_max=0x%x)", handle, s_product, slen_product, id_vendor, id_product_min, id_product_max); @@ -699,7 +699,7 @@ error_code sys_usbd_register_extra_ldd(ppu_thread& ppu, u32 handle, vm::ptr descriptor, u32 desc_size) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.trace("sys_usbd_get_descriptor(handle=0x%x, deviceNumber=0x%x, descriptor=0x%x, desc_size=0x%x)", handle, device_handle, descriptor, desc_size); @@ -739,7 +739,7 @@ error_code sys_usbd_get_descriptor(ppu_thread& ppu, u32 handle, u32 device_handl // This function is used for psp(cellUsbPspcm), dongles in ps3 arcade cabinets(PS3A-USJ), ps2 cam(eyetoy), generic usb camera?(sample_usb2cam) error_code sys_usbd_register_ldd(ppu_thread& ppu, u32 handle, vm::ptr s_product, u16 slen_product) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; // slightly hacky way of getting Namco GCon3 gun to work. // The register_ldd appears to be a more promiscuous mode function, where all device 'inserts' would be presented to the cellUsbd for Probing. @@ -772,7 +772,7 @@ error_code sys_usbd_unregister_ldd(ppu_thread&) // TODO: determine what the unknown params are error_code sys_usbd_open_pipe(ppu_thread& ppu, u32 handle, u32 device_handle, u32 unk1, u64 unk2, u64 unk3, u32 endpoint, u64 unk4) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.warning("sys_usbd_open_pipe(handle=0x%x, device_handle=0x%x, unk1=0x%x, unk2=0x%x, unk3=0x%x, endpoint=0x%x, unk4=0x%x)", handle, device_handle, unk1, unk2, unk3, endpoint, unk4); @@ -790,7 +790,7 @@ error_code sys_usbd_open_pipe(ppu_thread& ppu, u32 handle, u32 device_handle, u3 error_code sys_usbd_open_default_pipe(ppu_thread& ppu, u32 handle, u32 device_handle) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.trace("sys_usbd_open_default_pipe(handle=0x%x, device_handle=0x%x)", handle, device_handle); @@ -808,7 +808,7 @@ error_code sys_usbd_open_default_pipe(ppu_thread& ppu, u32 handle, u32 device_ha error_code sys_usbd_close_pipe(ppu_thread& ppu, u32 handle, u32 pipe_handle) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.todo("sys_usbd_close_pipe(handle=0x%x, pipe_handle=0x%x)", handle, pipe_handle); @@ -834,7 +834,7 @@ error_code sys_usbd_close_pipe(ppu_thread& ppu, u32 handle, u32 pipe_handle) // *arg1 == 1 || *arg1 == 2 will send a sys_event to internal CellUsbd event queue with same parameters as received and loop(attach and detach event) error_code sys_usbd_receive_event(ppu_thread& ppu, u32 handle, vm::ptr arg1, vm::ptr arg2, vm::ptr arg3) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.trace("sys_usbd_receive_event(handle=0x%x, arg1=*0x%x, arg2=*0x%x, arg3=*0x%x)", handle, arg1, arg2, arg3); @@ -862,7 +862,7 @@ error_code sys_usbd_receive_event(ppu_thread& ppu, u32 handle, vm::ptr arg1 while (auto state = +ppu.state) { - if (state & cpu_flag::signal && ppu.state.test_and_reset(cpu_flag::signal)) + if (state & cpu_flag::signal) { sys_usbd.trace("Received event(queued): arg1=0x%x arg2=0x%x arg3=0x%x", ppu.gpr[4], ppu.gpr[5], ppu.gpr[6]); break; @@ -900,7 +900,7 @@ error_code sys_usbd_receive_event(ppu_thread& ppu, u32 handle, vm::ptr arg1 error_code sys_usbd_detect_event(ppu_thread& ppu) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.todo("sys_usbd_detect_event()"); return CELL_OK; @@ -908,7 +908,7 @@ error_code sys_usbd_detect_event(ppu_thread& ppu) error_code sys_usbd_attach(ppu_thread& ppu, u32 handle) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.todo("sys_usbd_attach(handle=0x%x)", handle); return CELL_OK; @@ -916,7 +916,7 @@ error_code sys_usbd_attach(ppu_thread& ppu, u32 handle) error_code sys_usbd_transfer_data(ppu_thread& ppu, u32 handle, u32 id_pipe, vm::ptr buf, u32 buf_size, vm::ptr request, u32 type_transfer) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.trace("sys_usbd_transfer_data(handle=0x%x, id_pipe=0x%x, buf=*0x%x, buf_length=0x%x, request=*0x%x, type=0x%x)", handle, id_pipe, buf, buf_size, request, type_transfer); @@ -1000,7 +1000,7 @@ error_code sys_usbd_transfer_data(ppu_thread& ppu, u32 handle, u32 id_pipe, vm:: error_code sys_usbd_isochronous_transfer_data(ppu_thread& ppu, u32 handle, u32 id_pipe, vm::ptr iso_request) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.todo("sys_usbd_isochronous_transfer_data(handle=0x%x, id_pipe=0x%x, iso_request=*0x%x)", handle, id_pipe, iso_request); @@ -1024,7 +1024,7 @@ error_code sys_usbd_isochronous_transfer_data(ppu_thread& ppu, u32 handle, u32 i error_code sys_usbd_get_transfer_status(ppu_thread& ppu, u32 handle, u32 id_transfer, u32 unk1, vm::ptr result, vm::ptr count) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.trace("sys_usbd_get_transfer_status(handle=0x%x, id_transfer=0x%x, unk1=0x%x, result=*0x%x, count=*0x%x)", handle, id_transfer, unk1, result, count); @@ -1044,7 +1044,7 @@ error_code sys_usbd_get_transfer_status(ppu_thread& ppu, u32 handle, u32 id_tran error_code sys_usbd_get_isochronous_transfer_status(ppu_thread& ppu, u32 handle, u32 id_transfer, u32 unk1, vm::ptr request, vm::ptr result) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.todo("sys_usbd_get_isochronous_transfer_status(handle=0x%x, id_transfer=0x%x, unk1=0x%x, request=*0x%x, result=*0x%x)", handle, id_transfer, unk1, request, result); @@ -1065,7 +1065,7 @@ error_code sys_usbd_get_isochronous_transfer_status(ppu_thread& ppu, u32 handle, error_code sys_usbd_get_device_location(ppu_thread& ppu, u32 handle, u32 device_handle, vm::ptr location) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.notice("sys_usbd_get_device_location(handle=0x%x, device_handle=0x%x, location=*0x%x)", handle, device_handle, location); @@ -1083,7 +1083,7 @@ error_code sys_usbd_get_device_location(ppu_thread& ppu, u32 handle, u32 device_ error_code sys_usbd_send_event(ppu_thread& ppu) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.todo("sys_usbd_send_event()"); return CELL_OK; @@ -1091,7 +1091,7 @@ error_code sys_usbd_send_event(ppu_thread& ppu) error_code sys_usbd_event_port_send(ppu_thread& ppu, u32 handle, u64 arg1, u64 arg2, u64 arg3) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.warning("sys_usbd_event_port_send(handle=0x%x, arg1=0x%x, arg2=0x%x, arg3=0x%x)", handle, arg1, arg2, arg3); @@ -1109,7 +1109,7 @@ error_code sys_usbd_event_port_send(ppu_thread& ppu, u32 handle, u64 arg1, u64 a error_code sys_usbd_allocate_memory(ppu_thread& ppu) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.todo("sys_usbd_allocate_memory()"); return CELL_OK; @@ -1117,7 +1117,7 @@ error_code sys_usbd_allocate_memory(ppu_thread& ppu) error_code sys_usbd_free_memory(ppu_thread& ppu) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.todo("sys_usbd_free_memory()"); return CELL_OK; @@ -1125,7 +1125,7 @@ error_code sys_usbd_free_memory(ppu_thread& ppu) error_code sys_usbd_get_device_speed(ppu_thread& ppu) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_usbd.todo("sys_usbd_get_device_speed()"); return CELL_OK; diff --git a/rpcs3/Emu/Cell/lv2/sys_vm.cpp b/rpcs3/Emu/Cell/lv2/sys_vm.cpp index 46c2b00b81e4..0e40f8e559db 100644 --- a/rpcs3/Emu/Cell/lv2/sys_vm.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_vm.cpp @@ -49,7 +49,7 @@ sys_vm_t::sys_vm_t(utils::serial& ar) error_code sys_vm_memory_map(ppu_thread& ppu, u32 vsize, u32 psize, u32 cid, u64 flag, u64 policy, vm::ptr addr) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_vm.warning("sys_vm_memory_map(vsize=0x%x, psize=0x%x, cid=0x%x, flags=0x%x, policy=0x%x, addr=*0x%x)", vsize, psize, cid, flag, policy, addr); @@ -109,7 +109,7 @@ error_code sys_vm_memory_map(ppu_thread& ppu, u32 vsize, u32 psize, u32 cid, u64 error_code sys_vm_memory_map_different(ppu_thread& ppu, u32 vsize, u32 psize, u32 cid, u64 flag, u64 policy, vm::ptr addr) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_vm.warning("sys_vm_memory_map_different(vsize=0x%x, psize=0x%x, cid=0x%x, flags=0x%llx, policy=0x%llx, addr=*0x%x)", vsize, psize, cid, flag, policy, addr); // TODO: if needed implement different way to map memory, unconfirmed. @@ -119,7 +119,7 @@ error_code sys_vm_memory_map_different(ppu_thread& ppu, u32 vsize, u32 psize, u3 error_code sys_vm_unmap(ppu_thread& ppu, u32 addr) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_vm.warning("sys_vm_unmap(addr=0x%x)", addr); @@ -150,7 +150,7 @@ error_code sys_vm_unmap(ppu_thread& ppu, u32 addr) error_code sys_vm_append_memory(ppu_thread& ppu, u32 addr, u32 size) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_vm.warning("sys_vm_append_memory(addr=0x%x, size=0x%x)", addr, size); @@ -190,7 +190,7 @@ error_code sys_vm_append_memory(ppu_thread& ppu, u32 addr, u32 size) error_code sys_vm_return_memory(ppu_thread& ppu, u32 addr, u32 size) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_vm.warning("sys_vm_return_memory(addr=0x%x, size=0x%x)", addr, size); @@ -241,7 +241,7 @@ error_code sys_vm_return_memory(ppu_thread& ppu, u32 addr, u32 size) error_code sys_vm_lock(ppu_thread& ppu, u32 addr, u32 size) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_vm.warning("sys_vm_lock(addr=0x%x, size=0x%x)", addr, size); @@ -262,7 +262,7 @@ error_code sys_vm_lock(ppu_thread& ppu, u32 addr, u32 size) error_code sys_vm_unlock(ppu_thread& ppu, u32 addr, u32 size) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_vm.warning("sys_vm_unlock(addr=0x%x, size=0x%x)", addr, size); @@ -283,7 +283,7 @@ error_code sys_vm_unlock(ppu_thread& ppu, u32 addr, u32 size) error_code sys_vm_touch(ppu_thread& ppu, u32 addr, u32 size) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_vm.warning("sys_vm_touch(addr=0x%x, size=0x%x)", addr, size); @@ -304,7 +304,7 @@ error_code sys_vm_touch(ppu_thread& ppu, u32 addr, u32 size) error_code sys_vm_flush(ppu_thread& ppu, u32 addr, u32 size) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_vm.warning("sys_vm_flush(addr=0x%x, size=0x%x)", addr, size); @@ -325,7 +325,7 @@ error_code sys_vm_flush(ppu_thread& ppu, u32 addr, u32 size) error_code sys_vm_invalidate(ppu_thread& ppu, u32 addr, u32 size) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_vm.warning("sys_vm_invalidate(addr=0x%x, size=0x%x)", addr, size); @@ -346,7 +346,7 @@ error_code sys_vm_invalidate(ppu_thread& ppu, u32 addr, u32 size) error_code sys_vm_store(ppu_thread& ppu, u32 addr, u32 size) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_vm.warning("sys_vm_store(addr=0x%x, size=0x%x)", addr, size); @@ -367,7 +367,7 @@ error_code sys_vm_store(ppu_thread& ppu, u32 addr, u32 size) error_code sys_vm_sync(ppu_thread& ppu, u32 addr, u32 size) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_vm.warning("sys_vm_sync(addr=0x%x, size=0x%x)", addr, size); @@ -388,7 +388,7 @@ error_code sys_vm_sync(ppu_thread& ppu, u32 addr, u32 size) error_code sys_vm_test(ppu_thread& ppu, u32 addr, u32 size, vm::ptr result) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_vm.warning("sys_vm_test(addr=0x%x, size=0x%x, result=*0x%x)", addr, size, result); @@ -406,7 +406,7 @@ error_code sys_vm_test(ppu_thread& ppu, u32 addr, u32 size, vm::ptr result) error_code sys_vm_get_statistics(ppu_thread& ppu, u32 addr, vm::ptr stat) { - ppu.state += cpu_flag::wait; + ppu.state += cpu_flag::unmem; sys_vm.warning("sys_vm_get_statistics(addr=0x%x, stat=*0x%x)", addr, stat); diff --git a/rpcs3/Emu/Memory/vm.cpp b/rpcs3/Emu/Memory/vm.cpp index 46c804e8df1c..f02b737a481e 100644 --- a/rpcs3/Emu/Memory/vm.cpp +++ b/rpcs3/Emu/Memory/vm.cpp @@ -165,7 +165,7 @@ namespace vm if (_cpu) { - _cpu->state += cpu_flag::wait + cpu_flag::temp; + _cpu->state += cpu_flag::unmem + cpu_flag::temp; } for (u64 i = 0;; i++) @@ -382,7 +382,7 @@ namespace vm bool temporary_unlock(cpu_thread& cpu) noexcept { - bs_t add_state = cpu_flag::wait; + bs_t add_state = cpu_flag::unmem; if (g_tls_locked && g_tls_locked->compare_and_swap_test(&cpu, nullptr)) { @@ -417,13 +417,13 @@ namespace vm if (cpu) { - if (!g_tls_locked || *g_tls_locked != cpu || cpu->state & cpu_flag::wait) + if (!g_tls_locked || *g_tls_locked != cpu || cpu->state & (cpu_flag::unmem + cpu_flag::wait)) { cpu = nullptr; } else { - cpu->state += cpu_flag::wait; + cpu->state += cpu_flag::unmem; } } @@ -500,7 +500,7 @@ namespace vm { if (auto ptr = +*lock) { - while (!(ptr->state & cpu_flag::wait)) + while (!(ptr->state & (cpu_flag::unmem + cpu_flag::wait))) { utils::pause(); } @@ -510,7 +510,7 @@ namespace vm if (cpu) { - cpu->state -= cpu_flag::memory + cpu_flag::wait; + cpu->state -= cpu_flag::memory + cpu_flag::unmem; } } diff --git a/rpcs3/Emu/RSX/RSXThread.h b/rpcs3/Emu/RSX/RSXThread.h index 8cc4f9294e6f..d2937c89f6e6 100644 --- a/rpcs3/Emu/RSX/RSXThread.h +++ b/rpcs3/Emu/RSX/RSXThread.h @@ -71,7 +71,7 @@ namespace rsx { if (self) { - added_wait |= !self->state.test_and_set(cpu_flag::wait); + added_wait |= !self->state.test_and_set(cpu_flag::unmem); } if (!self || self->id_type() != 0x55u)