Repository navigation
Conversation
fjtrujy
marked this pull request as ready for review
November 3, 2026 19:34
Add a standalone C VBlank interrupt observer, with no network calls or register manipulation in the handler. The first real-PS2 run recorded twelve interrupts during a CPU-bound uninstrumented loop and observed application instruction addresses in the extended interrupt callback while CP0 EPC belonged to the kernel. Add a stricter busy-loop address-range assertion for the next hardware run, build it in CI without execution, and document the register-context and instruction-replay requirements for true preemptive Ctrl-C.
fjtrujy
force-pushed
the
feat/ee-preemptive-interrupt-research
branch
from
November 3, 2026 20:53
11b68dd to
2dd4b8d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
Standalone, observation-only EE interrupt diagnostics. This PR does not implement preemptive Ctrl-C or change the GDB stub.
Validation
On a real PS2, both VBlank probes passed (2026-11-02): 12 interrupts, 11 in the busy loop; and 42 interrupts, 41 in the branch-loop range, with 120,000,000 delay-slot increments. VBlank is disabled before its handler is removed; PS2Link ping succeeded afterward. The callback's address argument reflected application code, while CP0 EPC sampled inside the callback reflected handler context.
The full local build, native tests, GDB/RSP checks, installation check, and cross-compiled probe checks pass. CI covers the same scope, including strict warning flags on the standalone probes.
Deliberate limitations
The callback argument is not a documented writable context pointer. There is no proven interrupted-thread identity, full register snapshot, general BD/EPC recovery, or asynchronous stop/resume. This PR is reviewable as an isolated diagnostic; the separate experimental preemptive implementation remains out of scope.