On Thu, Aug 7, 2025, 19:06 Chris Hanson via cctalk <cctalk(a)classiccmp.org>
wrote:
All instructions need to be restartable to meet the Popek & Goldberg
requirements, whether they trap due to a privilege violation or a bus
error. Memory is just one of the things that can be virtualized once a
system meeds the requirements.
Restartable or resumable. The MC68010, 012, 020, and 030 use resumption,
because restart would require that the page fault revert any memory writes
that have already occurred in the instruction partially executed. That's
why those processors have a huge bus error "stack puke"; instruction
resumption requires storage of a bunch of internal processor state that is
not otherwise architecturally visible.
The IBM 360 Model 67, and IBM 370 models supporting a virtual machine, use
a different approach. Instructions that may cause a page fault after a
successful memory write undergo a "preflight" pass by the microcode, to
test whether any memory access that will be generated by the instruction
will fault. This is particularly cumbersome for the ED and EDMK
instructions.