On Tue, Oct 4, 2016 at 4:02 PM, Ken Seefried <seefriek at gmail.com> wrote:
Dumb question...did the '451 have a mechanism to
work around the
instruction restart issue in the 68000? Or was there some other way
that was handled?
The MC68451 was just an MMU. The bus fault problem of the MC68000
can't really be solved by an MMU; solving it in the general case
requires a LOT of external logic, and/or a second MC68000. The Apple
Lisa solved it in a specialized way by writing the software to never
perform accesses from which bus fault recovery might be needed, except
using a specific instruction which yielded predictable bus fault
results.
The MC68010/012, MC68020, and MC68030 didn't support instruction
restart, but they supported instruction continuation, by having a bus
fault or address error dump a lot of internal processor state onto the
stack (known lovingly as the "stack puke"), and having the RTE
instruction reload it.
IIRC, the MC68040 and MC68060 supported instruction restart.
I once wrote an address error handler for the MC68020 so that I could
execute misaligned code. Very very slowly.