
MOTOROLA
Chapter 3. The PowerPC Core
3-15
Part II. PowerPC Microprocessor Module
Table 3-3 summarizes MPC850 features with respect to the UISA deTnition.
Table 3-3. UISA-Level Features
Functionality
Description
Reserved Telds
Reserved Telds in instructions are described under the speciTc instruction deTnition in Chapter 5,
òMPC850 Instruction Set.ó Unless otherwise stated, instruction Telds marked I, II, and III are
discarded during decoding. Thus, this type of instruction yields results of the deTned instructions
with the appropriate Teld = 0. In most cases, reserved Telds in registers are ignored on write and
return zeros for them on read for any control register implemented by the core. Exceptions are
XER[16D23] and the reserved bits of MSR, which are set by the source value on write and return
the value last set for it on read.
Classes of
Instructions
Required instructions (except oating-point load, store, and compute instructions) are
implemented in hardware. Optional instructions are executed by implementation-dependent code;
any attempt to execute one of these commands causes the core to take the software emulation
exception (offset 0x01000). Illegal and reserved instruction class instructions are supported by
implementation-dependent code and, thus the core hardware generates a software emulation
exception.
Exceptions
Invocation of the system software for any exception caused by an instruction in the core is precise,
regardless of the type and setting.
Fetching
instructions
The core fetches a number of instructions into its IQ from which they are dispatched to the
execution units. If a program modiTes instructions, it should call a system library program to
ensure that the instruction fetching mechanism can detect changes before execution.
Branch
instructions
The core implements all UISA instructions deTned for the branch processor in hardware. For
details about the performance of various instructions, see Table 3-1.
Invalid branch
instruction forms
Bits marked with z in the BO encoding deTnition default to z = 0 and are discarded by the core
decoding. Thus, these instructions yield results of deTned instructions for which z = 0. If the
decrement and test CTR option is speciTed for the
bcctr
or
bcctrl
instructions, the target address
of the branch is the new value of the CTR. Condition is evaluated correctly, including the value of
the counter after decrement.
Branch prediction The core uses the y bit to predict path for prefetch. Prediction is only done for not-ready branch
conditions. No prediction is done for branches to the link or count register if the target address is
not ready (see Table 3-1).
Integer processor The core implements the following integer instructions:
¥ Arithmetic instructions
¥ Compare instructions
¥ Trap instructions
¥ Logical instructions
¥ Rotate and shift instructions
Move to/from
SPR instructions
Move to/from invalid SPRs in which SPR[0] = 1 invokes the privileged instruction error exception
handler if the processor is in user mode.
Integer arithmetic
instructions
Attempting to use
divw
to perform either 0x80000000
-1 or <anything>
0 sets the contents of
r
D to 0x80000000 and if Rc =1, the contents CR0 are LT = 1, GT = 0, and EQ = 0. SO is set to the
correct value.
In the
cmpi
,
cmp
,
cmpli
, and
cmpl
instructions, the L bit is applicable for 64-bit implementations.
For the MPC850, if L = 1 the instruction form is invalid. The core ignores this bit and, therefore, the
behavior when L = 1 is identical to the valid form instruction with L = 0.
Integer
load/store with
update
instructions
For load with update and store with update instructions where
r
A = 0, the EA is written into
r
0. For
load with update instructions where
r
A =
r
D,
r
A is
boundedly undeTned.