1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-26 23:52:26 +00:00

Merge pull request #1051 from TomHarte/STOPReturn

Fix return address following a STOP.
This commit is contained in:
Thomas Harte 2022-06-16 15:15:50 -04:00 committed by GitHub
commit 37516e6f6b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -382,6 +382,13 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor
// Apply the suffix status. // Apply the suffix status.
status_.set_status(prefetch_.w); status_.set_status(prefetch_.w);
did_update_status(); did_update_status();
// Ensure that after this STOP exits, the eventual RTE returns to
// after the STOP rather than to it. Unlike most instructions, STOP
// has not prefetched the next instruction, so the program counter
// is at the actual return point, not beyond it.
instruction_address_.l = program_counter_.l;
[[fallthrough]]; [[fallthrough]];
BeginState(WaitForInterrupt): BeginState(WaitForInterrupt):