MC68060 Software Package
C-24
M68060 USER’S MANUAL
MOTOROLA
Since the MC68040FPSP obtained most of its necessary information from the complex
stack frames, very few calls to _mem_{read,write} were required. For the M68060SP, less
information is provided by the processor. Therefore, several accesses to/from user code
and data space may be necessary for emulation. Providing the MC68040FPSP level of sub-
routine abstraction in the M68060SP will slightly degrade performance.
In order to compensate for this loss, the M68060SP adds to the list of operating system-sup-
plied call-outs that read/write user/supervisor data/instruction memory. The current routines
are
_imem_read_{word,long}
and
_dmem_{read,write}_{byte,word,long}
. These pro-
vide a finer granularity than the traditional _mem_{read,write} which is also provided. Figure
C-11 outlines the register usage of these routines.
Unlike the MC68040, which stored all necessary operands and decoding information on the
stack, the MC68060 processor does not always “touch” the entire instruction and operand
before entering an exception handler. Therefore, unlike with the MC68040FPSP, the
M68060SP memory read and write routines may encounter bad addresses. For example,
the instruction FSIN.x ADDR,fp0 will enter the M68060SP. When the M68060SP package
executes a _dmem_read to fetch the extended-precision operand, the routine may return a
failing value if ADDR points to inappropriate memory.
If _mem_{read,write} returns a non-zero status value to the M68060SP, the M68060SP cre-
ates an access error exception stack frame out of the existing exception stack frame and
branches to the user-supplied call-out _real_access. The _real_access call-out must con-
tain the actual access error handler, a short program that examines the vector table to find
the actual access error handler address and branch to it, or an entirely separate access error
handler for this specific case.
The PC on the access error stack frame points to the instruction the caused the original
exception. The stacked address will point to the address passed to _mem_{read,write}
before it returned a failing value. The stacked fault status long word (FSLW) will have the
SEE bit set. The other FSLW bits may or may not be defined, depending on the M68060SP
release. The initial release of the M68060SP does not define the other FSLW bits. However,
future releases may define these bits. The handler supplied by the operating system for
_real_access (most likely the system’s access error handler) should check for this bit and
take appropriate action if set. An example action could be that the process executing the
instruction that originally entered the M68060SP is terminated.