Instruction Model
e200z3 Power Architecture Core Reference Manual, Rev. 2
Freescale Semiconductor
3-17
the SPR specified is undefined and privileged and the CPU is in supervisor mode (MSR[PR] = 0), an illegal
instruction exception is generated.
For mtspr, if the SPR specified is read-only and not privileged, an illegal instruction exception is
generated. If the SPR specified is read-only and privileged and the CPU is in user mode (MSR[PR] = 1, a
privileged instruction exception is generated. If the SPR specified is read-only and privileged and the CPU
is in supervisor mode (MSR[PR] = 0), an illegal instruction exception is generated.
3.12
Invalid Instruction Forms
describes invalid instruction forms.
3.13
Instruction Summary
In addition to the SPE instructions listed in
and the floating-point instructions listed in
,
the e200z3 implements the instructions defined in
. Instructions not listed in
these tables are not supported by the e200z3 core and signal an illegal, unimplemented, or floating-point
unavailable exception. Implementation-dependent instructions are identified with a footnote.
Instructions that are optionally supported (when an optional function is added to the base core) are shown
with shaded entries.
Table 3-10. Invalid Instruction Forms
Instructions
Descriptions
Load and store
with update
Book E defines as an invalid form the case when a load with update instruction specifies the same register in
the
r
D and
r
A field of the instruction. For this invalid case, the e200z3 core performs the instruction and updates
the register with the load data. In addition, if
r
A = 0 for any load or store with update instruction, the e200z3
core updates
r
A (GPR0).
Load Multiple
Word (
lmw
)
Book E defines as invalid any form of the
lmw
instruction in which
r
A is in the range of registers to be loaded,
including the case in which
r
A = 0. On the e200z3, invalid forms of
lmw
execute as follows:
• Case 1:
r
A is in the range of
r
D,
r
A
≠
0. In this case address generation for individual loads to register targets
is done using the architectural value of
r
A which existed when beginning execution of this
lmw
instruction.
r
A is overwritten with a value fetched from memory as if it had not been the base register. Note that if the
instruction is interrupted and restarted, the base address may be different if
r
A has been overwritten.
• Case 2: rA = 0
and
r
D = 0.
In this case address generation for all loads to register targets
r
D = 0 to
r
D = 31
is done substituting the value of 0 for
r
A.
Branch
Conditional to
Count
Register [and
Link]
Book E defines as invalid any
bcctr
or
bcctrl
instruction that specifies the decrement and test CTR (BO[2] = 0)
option. The e200z3 executes instructions with these invalid forms by decrementing the CTR and branching to
the location specified by the pre-decremented CTR value if all CR and CTR conditions are met as specified by
the other BO field settings.
Instructions
with non-zero
reserved fields
Book E defines certain bit fields in various instructions as reserved and specifies that these fields be set to zero.
Following the Book E recommendation, the e200z3 ignores the value of the reserved field (bit 31) in X-form
integer load and store instructions. The e200z3 ignores the value of the reserved ‘z’ bits in the BO field of
branch instructions. For all other instructions, the e200z3 generates an illegal instruction exception if a reserved
field is non-zero.