blob: 389042d70aff3abec0def8eb8c808f909197209c [file] [log] [blame]
@ Tests for LDR group relocations.
.text
.macro ldrtest load store sym offset
\load r0, [r0, #:pc_g0:(\sym \offset)]
\load r0, [r0, #:pc_g1:(\sym \offset)]
\load r0, [r0, #:pc_g2:(\sym \offset)]
\load r0, [r0, #:sb_g0:(\sym \offset)]
\load r0, [r0, #:sb_g1:(\sym \offset)]
\load r0, [r0, #:sb_g2:(\sym \offset)]
\store r0, [r0, #:pc_g0:(\sym \offset)]
\store r0, [r0, #:pc_g1:(\sym \offset)]
\store r0, [r0, #:pc_g2:(\sym \offset)]
\store r0, [r0, #:sb_g0:(\sym \offset)]
\store r0, [r0, #:sb_g1:(\sym \offset)]
\store r0, [r0, #:sb_g2:(\sym \offset)]
.endm
@ LDR/STR/LDRB/STRB only have 12 bits available for the magnitude of the addend.
@ So these should all (just) work.
ldrtest ldr str f "+ 4095"
ldrtest ldrb strb f "+ 4095"
ldrtest ldr str f "- 4095"
ldrtest ldrb strb f "- 4095"
@ The same as the above, but for a local symbol. These should not be
@ resolved by the assembler but instead left to the linker.
ldrtest ldr str localsym "+ 4095"
ldrtest ldrb strb localsym "+ 4095"
ldrtest ldr str localsym "- 4095"
ldrtest ldrb strb localsym "- 4095"
localsym:
mov r0, #0