pre-Release 6:
SPECIAL 000000 |
rs |
0 00 0000 0000 |
hint |
JR 001000 |
6 |
5 |
10 |
5 |
6 |
Release 6:
SPECIAL 000000 |
rs |
0 00000 |
00000 |
hint |
JALR 001001 |
6 |
5 |
5 |
5 |
5 |
6 |
JR rs |
MIPS32 |
Jump Register |
Jump Register
To execute a branch to an instruction address in a register
PC = GPR[rs]
Jump to the effective target address in GPR rs. Execute the instruction following the jump, in the branch delay slot, before jumping.
For processors that do not implement the MIPS16e or microMIPS ISA:
Jump to the effective target address in GPR rs. If the target address is not 4-byte aligned, an Address Error exception will occur when the target address is fetched.
For processors that do implement the MIPS16e or microMIPS ISA:
Jump to the effective target address in GPR rs. Set the ISA Mode bit to the value in GPR rs bit 0. Set bit 0 of the target address to zero. If the target ISA Mode bit is 0 and the target address is not 4-byte aligned, an Address
Error exception will occur when the target instruction is fetched.
Control Transfer Instructions (CTIs) should not be placed in branch delay slots or Release 6 forbidden slots. CTIs
include all branches and jumps, NAL, ERET, ERETNC, DERET, WAIT, and PAUSE.
Pre-Release 6: Processor operation is UNPREDICTABLE if a control transfer instruction (CTI) is placed in the delay slot of a branch or jump.
Release 6: If a control transfer instruction (CTI) is executed in the delay slot of a branch or jump, Release 6 implementations are required to signal a Reserved Instruction exception.
Restrictions Related to Multiple Instruction Sets: This instruction can change the active instruction set, if more than
one instruction set is implemented.
If only one instruction set is implemented, then the effective target address must obey the alignment rules of the instruction set. If multiple instruction sets are implemented, the effective target address must obey the alignment rules of the intended instruction set of the target address as specified by the bit 0 or GPR rs.
For processors that do not implement the microMIPS ISA, the effective target address in GPR rs must be naturallyaligned. For processors that do not implement the MIPS16e ASE or microMIPS ISA, if either of the two least-significant bits are not zero, an Address Error exception occurs when the branch target is subsequently fetched as an instruction.
For processors that do implement the MIPS16e ASE or microMIPS ISA, if bit 0 is zero and bit 1 is one, an Address
Error exception occurs when the jump target is subsequently fetched as an instruction.
In release 1 of the architecture, the only defined hint field value is 0, which sets default handling of JR. In Release 2 of the architecture, bit 10 of the hint field is used to encode an instruction hazard barrier. See the JR.HB instruction description for additional information.
Release 6 maps JR and JR.HB to JALR and JALR.HB with rd = 0:
Pre-Release 6, JR and JALR were distinct instructions, both with primary opcode SPECIAL, but with distinct function codes.
Release 6: JR is defined to be JALR with the destination register specifier rd set to 0. The primary opcode and function field are the same for JR and JALR. The pre-Release 6 instruction encoding for JR is removed in Release 6.
Release 6 assemblers should accept the JR and JR.HB mnemonics, mapping them to the Release 6 instruction encodings.
I: temp = GPR[rs] I+1:if (Config3ISA = 0) and (Config1CA = 0) then PC = temp else PC = tempGPRLEN-1..1 || 0 ISAMode = temp0 endif
None
Software should use the value 31 for the rs field of the instruction word on return from a JAL, JALR, or BGEZAL, and should use a value other than 31 for remaining uses of JR.