| # 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 |