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