I was wondering about LDRT when the operand is rrx'd. Which where does the carry-bit come from?
LDRT{<c>}{<q>} <Rt>, [<Rn>], +/-<Rm> {, <shift>}
RRX Rotate right one bit, with extend. Bit[0] is written to shifter_carry_out, bits[31:1] are shifted right
one bit, and the Carry flag is shifted into bit[31].
That's user mode access, and user mode doesn't have SPSR, so where does the carry shifted into the
bit[31] come from? User mode is not necessarily the previous mode.
Yes, you use the current mode's register values, but the permission checking in the MMU/MPU is equivalent to a User mode access.
Note, in Hyp mode (EL2) this instruction is UNPREDICTABLE.
Thanks.