+# mach: crisv32
+# ld: -N --oformat binary --section-start=.text=0x10000000
+# sim: --architecture crisv32 --target binary --cris-program-offset=0x10000000 --cris-start-address=0x10000040 --cris-naked --memory-region 0x10000000,0x1000
+ .include "testutils.inc"
+
+; Test that we can load a binary program at a non-zero address.
+; Also serves to exercise the --cris-program-offset and
+; --cris-start-address options.
+
+; Make sure starting at the first address does fail.
+ fail
+
+; ...and that we know an offset we can jump for it to work, and all we
+; have to assume is that "fail" takes no more than 64 bytes.
+ .p2align 6
+ ba _start
+ nop
+
+;
+ start
+x:
+
+; Make sure we're loaded at the linked address. Since we're re-used
+; in other tests, we have to provide for non-v32 as well.
+ .if ..asm.arch.cris.v32
+ lapcq .,$r0
+ .else
+ move.d $pc,$r0
+ subq .-x,$r0
+ .endif
+
+ cmp.d x,$r0
+ bne y
+ nop
+ pass
+y:
+ fail
+
+; Make sure we have enough contents for the mapping.
+ .data
+ .fill 4096,1,0