Chapter 5
140 MIPS R4000 Microprocessor User's Manual
Coprocessor Unusable Exception
Cause
The Coprocessor Unusable exception occurs when an attempt is made to
execute a coprocessor instruction for either:
• a corresponding coprocessor unit that has not been marked
usable, or
• CP0 instructions, when the unit has not been marked usable
and the process executes in either User or Supervisor mode.
This exception is not maskable.
Processing
The common exception vector is used for this exception, and the CPU code
in the Cause register is set. The contents of the Coprocessor Usage Error field
of the coprocessor Control register indicate which of the four coprocessors
was referenced. The EPC register contains the address of the unusable
coprocessor instruction unless it is in a branch delay slot, in which case the
EPC register contains the address of the preceding branch instruction.
Coprocessor Unusable exception processing is shown in Figure 5-17.
Servicing
The coprocessor unit to which an attempted reference was made is
identified by the Coprocessor Usage Error field, which results in one of the
following situations:
• If the process is entitled access to the coprocessor, the
coprocessor is marked usable and the corresponding user state
is restored to the coprocessor.
• If the process is entitled access to the coprocessor, but the
coprocessor does not exist or has failed, interpretation of the
coprocessor instruction is possible.
• If the BD bit is set in the Cause register, the branch instruction
must be interpreted; then the coprocessor instruction can be
emulated and execution resumed with the EPC register
advanced past the coprocessor instruction.
• If the process is not entitled access to the coprocessor, the
process executing at the time is handed a UNIX SIGILL/
ILL_PRIVIN_FAULT (illegal instruction/privileged instruction
fault) signal. This error is usually fatal.