arithmetic operation, but that an overflow occurred since the last clearing of XER[SO]. 
mtspr(XER) 
sets XER[SO, OV] to the value of bit positions 0 and 1 
in 
the source register, respectively. 
Once set, XER[SO] is not reset until 
an 
mtspr(XER) is executed with data that explicitly puts a 0 
in 
the SO bit, or until an 
mcrxr 
instruction is executed. 
XER[OV] is set to indicate whether an instruction that updates XER[OV] produces a 
result that 
"overflows" the 32-bit target register. XER[OV] = 1 indicates overflow. For arithmetic operations, this 
occurs when an operation has a carry-in to the most-significant bit of the 
result that does not equal 
the carry-out of the most-significant bit (that is, the exclusive-or of the carry-in and the carry-out is 1). 
The 
following instructions set XER[OV] differently. The specific behavior is indicated 
in 
the instruction 
descriptions 
in 
Chapter 24, "Instruction Set." 
• 
Move instructions: 
mcrxr, mtspr(XER) 
•  Multiply and divide instructions: 
mullwo, mullwo., divwo, 
divwo., 
divwuo, 
divwuo 
The Carry (CA) field is set to indicate whether an instruction that updates XER[CA] produces a result 
that has a carry-out of the most-significant bit. XER[CA] = 1 indicates a carry. 
The 
following instructions set XER[CA] differently. The specific behavior is indicated 
in 
the instruction 
descriptions 
in 
Chapter 24, "Instruction Set." 
• 
Move instructions 
mcrxr, mtspr(XER) 
•  Shift-algebraic operations 
sraw, 
srawi 
The Transfer Byte Count (TBC) field is the byte count for load/store string instructions. 
The XER is part of the user programming 
model. 
Preliminary 
Programming Model 
3-9