mirror of
https://github.com/ARMSX2/ARMSX3.git
synced 2026-08-24 16:58:52 -07:00
Erasing the tracked state whenever cpu_flag::wait was set is what stopped this firing. The loop dips into a syscall regularly -- almost certainly sys_ppu_thread_yield, seen at ~100 million -- and every dip cleared the accumulated seconds, so the counter never got past 2. The device reported it precisely once the range was instrumented: widest_range=0x0, meaning an identical cia on every single sample. As tight a spin as can exist, and invisible purely because of that erase. A wait sample is now skipped rather than treated as evidence against a spin. A thread genuinely parked in a syscall never accumulates running samples at all, so idle threads still cannot trip it.