[net.micro.68k] Problem with Virtual Machines on the 68010

pugs (03/15/83)

The 68010 solves the virtual machines problems of the 68000, but introduces
a new one of its own.  The stack for a bus error now includes numerous words
of "internal state information" will allows the 68010 to resume (via RTE)
instructions which are interrupted due to bus errors (e.g., page faults).
If a virtual 68010 is to be possible and reliable, there must be some way
for a virtual machine monitor to implement a virtual RTE instruction.
The problem is that the internal state information on the bus error stack
is undocumented and thus cannot be validated or translated on the way
from the virtual machine to the real machine. 
For instance, a virtual machine may have total garbage on its stack 
and then execute a RTE -- if this garbage is passed on to the real
machine it may wreak havoc, but there is no way to tell if it's garbage or not.
If the long format RTEs are not implemented by the virtual machine monitor
then there is no way to pass virtual bus errors to the virtual machine.

The sneaky way around this problem is to run virtual 68000s, not 68010s,
because the 68000 does not have the long format RTEs.  Unfortunately,
those of you who wanted to debug your virtual machine operating systems under
a virtual machine are out of luck.  Motorola has been told about this
problem, but it's a little late for a good fix.  Hopefully, they can be
persuaded to document the internal state, although even so it may be too
complex to consider validating in software.

					Tom Lyon
					sun!pugs