Commit Graph
293 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 7dd1475ed7 HLE: Pass the MIPSState to syscalls and their implementations
HLEFunc and ReplaceFunc now take the MIPSState they run on. The dispatch
paths (both interpreters and every JIT backend) pass in the state they
belong to, and CallSyscall*, hleFinishSyscall and the HLE mips call
machinery use it instead of currentMIPS.

The wrappers in FunctionWrappers.h take the function as `auto` and call it
through HLECall, which also accepts an implementation with an extra leading
MIPSState * parameter and passes the state to it. Any other signature still
fails to compile, as before. PARAM/RETURN now refer to a local `mips`.

The HLE functions (and replacement functions) that used currentMIPS now take
the state that way. Callers outside a syscall's own frame - CoreTiming
events, the adhoc matching thread, dialogs, PPGe, the debugger UIs - pass
currentMIPS or &mipsr4k explicitly. The kernel's thread internals still use
currentMIPS.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-20 15:45:14 +02:00
Henrik Rydgård 786a1530de Correct host0: mount 2026-08-24 09:30:44 +02:00
Henrik Rydgård c5e4d0d90d Rename the get-memory-pointer functions to make it clear where CPU exceptions can happen. 2026-08-12 14:06:16 +02:00
Henrik Rydgård 3bd41376da More memory cleanup 2026-08-11 20:12:10 +02:00
Henrik Rydgård 32abdd63bf Fix EP-map parsing OOB read in PSMF video stream params
EP_MAP_STRIDE * EPMapEntriesNum was computed in 32-bit and could wrap,
passing the range check while the loop read the unwrapped count; and the
check was skipped entirely when headerOffset == 0 (the player tempbuf
path).

- Use 64-bit math for the EP map size.
- Keep the guest-RAM range check when headerOffset != 0.
- Cap the entry count for the headerOffset == 0 path so the reads stay
  within the player's 64KB tempbuf.
2026-08-01 11:57:27 +02:00
Ren 9296bf0a04 Savestate: don't let stale HLE helper threads mutate restored kernel state
On savestate load, two sites delete a pre-load host object that owns an
HLEHelperThread without calling Forget() first, so ~HLEHelperThread runs
__KernelDeleteThread and kernelMemory.Free() with thread ids and block
addresses from before the load, against the freshly restored kernel
state:

- sceUtility: Do(p, accessThread) deletes the stale accessThread inside
  DoClass before recreating it from the stream.
- scePsmf: Do(p, psmfPlayerMap) deletes every existing PsmfPlayer, and
  ~PsmfPlayer -> AbortFinish() deletes its finishThread raw.

When the stale id or block happens to be absent from the restored state
this only logs errors ("... does not exist" / "BlockAllocator: invalid
free"). When it has been recycled, a live thread is terminated or a
live allocation is freed, silently corrupting the loaded state. Easiest
to hit by loading a state while a savedata operation or PSMF player is
active, into a session where those ids were reused.

__IoDoState and __PsmfShutdown already Forget() before deleting; do the
same at these two sites. Worst case behavior change is a leaked
kernel-side thread record where one was previously (incorrectly)
freed.
2026-07-27 16:20:01 +02:00
Henrik Rydgård 5f7a937466 Rename ValidSize to ClampValidSizeAt 2025-12-30 20:31:07 +01:00
Henrik Rydgård dbe6ec80a0 Fix some bad "for (auto x : y)" usage 2025-04-29 16:46:14 +02:00
Henrik Rydgård b52e7913eb Add disable HLE flag for sceCcc (character conversion library). 2025-04-06 23:34:16 +02:00
Henrik Rydgård 4e25f44eef Rename some module-related functions to include HLE where appropriate 2025-03-31 11:17:50 +02:00
Henrik Rydgård 82728652d8 Move Font and Psmf error codes to the big enum 2025-03-21 20:44:46 +01:00
Henrik Rydgård ea198dd593 Add mpeg error codes to the big enum 2025-03-21 20:44:46 +01:00
Henrik Rydgård eff9bd1fc3 mpeg: Minor cleanup 2025-03-19 11:41:17 +01:00
Henrik Rydgård 0f9c97c2a0 Another big batch of logging cleanup 2025-03-05 17:02:46 +01:00
Henrik Rydgård 28b2c7f540 HLE log rename part 1: Remove duplicate log functions. Return type should be determined by metadata. 2025-01-29 09:45:39 +01:00
Henrik Rydgård 7d2ad6980e Another batch of changes 2025-01-20 12:20:21 +01:00
Henrik Rydgård 2523690584 Flip around so sceDelayResult is always outermost. Start using HLECall. 2025-01-20 12:20:18 +01:00
Henrik Rydgård f962fb0386 Enable checking the format string, fix some issues 2025-01-19 16:51:05 +01:00
Henrik Rydgård 2e68d4f638 Clean up a lot of logging in psmf, audio, more 2025-01-19 13:56:51 +01:00
Henrik Rydgård 5316ec7ef7 Fix more misuse of the hleLog* functions 2025-01-19 13:09:30 +01:00
Henrik Rydgård 0df2a40487 Remove the "GPUInterface" base class. Not really useful, GPUCommon is pretty much the same thing. 2024-12-02 11:12:14 +01:00
Herman Semenov 3c66f149d3 [Common/Core/Windows] Removed excess check pointer before delete or free() 2024-09-17 11:34:42 +02:00
Henrik Rydgård e01ca5b057 Logging API change (refactor) (#19324)
* Rename LogType to Log

* Explicitly use the Log:: enum when logging. Allows for autocomplete when editing.

* Mac/ARM64 buildfix

* Do the same with the hle result log macros

* Rename the log names to mixed case while at it.

* iOS buildfix

* Qt buildfix attempt, ARM32 buildfix
2024-07-14 14:42:59 +02:00
sum2012 81057bf535 Try to fix loop in scePsmfPlayerGetVideoData
Fix #19011
2024-04-09 21:55:57 +08:00
Henrik Rydgård 9979372a97 Assorted paranoia, get rid of an allocation in the audio loop 2024-01-29 10:37:38 +01:00
sum2012 0319e489eb Fix warning in scepmsf 2023-12-30 20:37:11 +08:00
Unknown W. Brackets 0a4f1dc49b Thread: Reduce thread stop freeing on shutdown.
Seeing errors for helper threads not existing, so let's try skipping
delete on shutdown.  They already get freed anyway.
2023-09-30 16:52:01 -07:00
Unknown W. Brackets 2b58ac7e95 Psmf: Fix pointer check. 2022-12-03 07:17:27 -08:00
Unknown W. Brackets 55d5dc3834 GPU: Rename readback and buffer write operations.
Avoid download/upload and pack, which don't have clear directions.
2022-10-09 13:49:41 -07:00
Unknown W. Brackets 3af8a667e1 Psmf: Fix save states. 2022-10-07 07:03:29 -07:00
sum2012 de6d747cf0 Store crc change to u32
Should build fixed
2022-10-05 20:36:01 +08:00
sum2012 af93a7185b Add crc record to psmfplayer 2022-10-04 09:50:33 +08:00
Henrik Rydgård ac7ca963db Make valgrind happy 2022-09-23 12:24:43 +02:00
Unknown W. Brackets 8b41178cb8 Psmf: Use PSPPointer instead of WriteStruct. 2022-09-03 10:44:11 -07:00
Unknown W. Brackets b332d0411e Psmf: Check for invalid stream/EP map entry counts. 2021-12-02 19:04:48 -08:00
Henrik Rydgård 2f3bc2d373 Merge pull request #14056 from unknownbrackets/debugger-mem
Track memory allocations and writes for debug info
2021-02-21 10:18:11 +01:00
aliaspider 9a3e5879bb Global: Correct many endian types and casts. 2021-02-18 22:25:24 -08:00
Unknown W. Brackets 88e2b9b740 Debugger: Notate memset tags directly. 2021-02-15 15:01:23 -08:00
Henrik Rydgård 93fd62f54b Merge pull request #13832 from unknownbrackets/events
SaveState: Make event restoring more obvious
2021-02-15 23:39:42 +01:00
Unknown W. Brackets e85a8b0f5b Global: Cleanup class init order warnings. 2021-02-15 11:59:45 -08:00
Unknown W. Brackets f32f89dd90 Global: Remove some unused variables. 2021-02-15 11:59:45 -08:00
Unknown W. Brackets 64f3830668 Psmf: Fix a potential leak on shutdown. 2021-01-01 15:43:13 -08:00
Unknown W. Brackets 06f8ab5a49 SaveState: Make event restoring more obvious.
We still must restore all events, but everything can be taken care of
during the save state load.
2020-12-28 13:29:19 -08:00
sum2012 f7a864981c Add stack value in scempeg and scepsmf from jpcsp
Might help video corruption issue
2020-12-16 22:33:55 +08:00
Henrik Rydgård 668fca01a8 Fix crash on save state. Fixes #13658
Should be ok since the event will get restored next time it's needed
(delayed).
2020-11-12 13:37:48 +01:00
Unknown W. Brackets 9686520dbd Psmf: Cleanup logging. 2020-10-19 19:24:08 -07:00
Unknown W. Brackets c8b2dd123f Psmf: Handle older states for delayed state change. 2020-10-19 19:06:32 -07:00
shenweip c79d20ca07 DoState. 2020-10-19 16:57:51 +08:00
shenweip d940f80b88 PsmfPlayer:The status will not be changed until the delay result is finished. 2020-10-19 16:29:42 +08:00
Unknown W. Brackets b8342fb8ec SaveState: Rename ChunkFile files to Serialize.
Makes more sense and less weird than ChunkFileDoMap, etc.
2020-08-10 08:04:05 +00:00