summaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2022-02-14 23:50:24 +0100
committerHans-Peter Nilsson <hp@bitrange.com>2022-02-14 23:50:24 +0100
commit3293b4f66797bb2ccd3dbbf170249556fc16ced7 (patch)
tree5b99a13a00665f716090401e6f87eccda8fd7c83 /sim
parent9d67b0a0978e9651db74aa667be793420e7e4817 (diff)
sim/testsuite/cris: Assembler testcase for PRIx32 usage bug
Several C test-cases exposed the bug, but let's have one for people who test using just the assembler and linker. * asm/endmem1.ms: New test.
Diffstat (limited to 'sim')
-rw-r--r--sim/testsuite/cris/asm/endmem1.ms47
1 files changed, 47 insertions, 0 deletions
diff --git a/sim/testsuite/cris/asm/endmem1.ms b/sim/testsuite/cris/asm/endmem1.ms
new file mode 100644
index 0000000000..ff9e334c38
--- /dev/null
+++ b/sim/testsuite/cris/asm/endmem1.ms
@@ -0,0 +1,47 @@
+# 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