| # mach: crisv3 crisv8 crisv10 crisv32 |
| |
| ; Check that the simulator and the program agrees on the |
| ; value of endmem; the base point for further allocations. |
| |
| .include "testutils.inc" |
| start |
| |
| ; First, get the end of memory by calling brk with 0 to get |
| ; the current value. |
| clear.d $r10 |
| movu.w 0x2d,$r9 |
| break 13 |
| |
| ; Get one more 8192-byte page. |
| addu.w 8192,$r10 |
| |
| ; Save it in a (call- and) syscall-saved register. |
| move.d $r10,$r0 |
| |
| ; Call brk again to raise the value. |
| movu.w 0x2d,$r9 |
| break 13 |
| |
| ; If the simulator messed up internally, it'd have exited |
| ; with an error at the brk call. But, let's sanity-check |
| ; the return-value: it should be the same as the input and |
| ; the allocated memory should be accessible. |
| cmp.d $r10,$r0 |
| beq 0f |
| nop |
| |
| 1: |
| fail |
| |
| 0: |
| ; Check that we can write and read the last address on that |
| ; page. |
| subq 4,$r10 |
| move.d 0xbad1d101,$r12 |
| move.d $r12,[$r10] |
| move.d [$r10],$r11 |
| cmp.d $r11,$r12 |
| bne 1b |
| nop |
| |
| pass |