There are some interesting cases involving R31 as a destination:
•STx_C R31,disp(Rb)
Although this might seem like a good way to zero out a shared location and reset the lock_flag, this instruction causes the lock_flag and virtual location {Rbv + SEXT(disp)} to become UNPREDICTABLE.
•LDx_L R31,disp(Rb)
This instruction produces no useful result since it causes both lock_flag and locked_physical_address to become UNPREDICTABLE.
Unconditional Branch (BR and BSR) and Jump (JMP, JSR, RET, and JSR_COROUTINE) instructions, when R31 is specified as the Ra operand, execute normally and update the PC with the target virtual address. Of course, no PC value can be saved in R31.
3.1.3 Floating-Point Registers
There are 32
When F31 is specified as a register source operand, a true
Results of an instruction that specifies F31 as a destination operand are discarded and it is UNPREDICTABLE whether the other destination operands (implicit and explicit) are changed by the instruction. In this case, it is
Implementation note:
As described in Section A.3.5, certain load instructions to an F31 destination are the preferred method for signalling a cache block prefetch.
A
3.1.4 Lock Registers
There are two