3.4.4. LDR and STR, unprivileged

Load and Store with unprivileged access.

Syntax

op{type}T{cond} Rt, [Rn {, #offset}]      

Where:

op

Is one of:

LDR

Load Register.

STR

Store Register.

type

Is one of:

B

Unsigned byte, zero extend to 32 bits on loads.

SB

Signed byte, sign extend to 32 bits (LDR only).

H

Unsigned halfword, zero extend to 32 bits on loads.

SH

Signed halfword, sign extend to 32 bits (LDR only).

Omit, for word.

cond

Is an optional condition code. See Conditional execution.

Rt

Is the register to load or store.

Rn

Is the register on which the memory address is based.

offset

Is an immediate offset from Rn and can be 0 to 255. If offset is omitted, the address is the value in Rn.

Operation

These load and store instructions perform the same function as the memory access instructions with immediate offset, see LDR and STR, immediate offset. The difference is that these instructions have only unprivileged access even when used in privileged software.

When used in unprivileged software, these instructions behave in exactly the same way as normal memory access instructions with immediate offset.

Restrictions

In these instructions:

  • Rn must not be PC.

  • Rt must not be SP and must not be PC.

Condition flags

These instructions do not change the flags.

Examples

    STRBTEQ  R4, [R7]       ; Conditionally store least significant byte in
                            ; R4 to an address in R7, with unprivileged access.
    LDRHT    R2, [R2, #8]   ; Load halfword value from an address equal to
                            ; sum of R2 and 8 into R2, with unprivileged access.

Copyright © 2015, 2018 Arm. All rights reserved.ARM DUI 0646C
Non-ConfidentialID121118