ARM “Unpredictable” Instructions

Instruction ARM1
Coprocessor instruction Treated as undefined (regardless of condition field).
Comparison instruction without S bit No-op.
Data processing register shift, bit 7 set Treated as if bit 7 clear.
Load/store “register shift” (bit 4 set, bit 7 clear) Loads as a register shift, but any writeback as if immediate shift, taking an extra cycle overall. Stores as if bit 4 clear, but still taking an extra cycle.
Load/store “register shift” (bit 4 set, bit 7 set) As above (bit 7 forming part of the immediate, but not Rs).
LDM or STM with empty register list No load or store takes place (2 cycles for LDM, 1 cycle for STM), but if writeback, will be as if all registers (R0-R15) specified. LDM seems to cause a reset.
LDR with Rd=Rn, pre-indexed Loaded value wins.
LDR with Rd=Rn, post-indexed Loaded value wins.
STR with Rd=Rn, pre-indexed Stores old value.
STR with Rd=Rn, post-indexed Stores old value.
Unaligned LDR Loads rotated value.
Unaligned STR Effectively aligns address for purposes of the store (bottom 2 bits ignored), writeback value not affected though.
Unaligned LDM Effectively aligns address for purposes of the loads (bottom 2 bits ignored), writeback value not affected though.
Unaligned STM Effectively aligns address for purposes of the stores (bottom 2 bits ignored), writeback value not affected though.
Load/store multiple with R15 base Uses current instruction + 2 (+8 bytes).
Modifying current instruction + 1 Old instruction executed.
Modifying current instruction + 2 Old instruction executed.
Modifying current instruction + 3 New instruction executed.
Executing @ 0x03fffffc Wraps around to 0 after.
Branching back past 0 or forward past 0x03fffffc Wraps around. Consequently, branch offset may be considered to be either signed or unsigned.
BL @ 0x03fffff8 R14 has wrong PSR (1<<26 subtracted).
SWI @ 0x03fffff8 R14_svc has wrong PSR (1<<26 subtracted).
Load/store multiple + address exception Only the first (lowest) transfer address is checked. Will wrap around to 0 subsequently.