sim/testsuite/cris: Assembler testcase for PRIx32 usage bug
authorHans-Peter Nilsson <hp@axis.com>
Mon, 14 Feb 2022 22:50:24 +0000 (23:50 +0100)
committerHans-Peter Nilsson <hp@bitrange.com>
Mon, 14 Feb 2022 22:50:24 +0000 (23:50 +0100)
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.

sim/testsuite/cris/asm/endmem1.ms [new file with mode: 0644]

diff --git a/sim/testsuite/cris/asm/endmem1.ms b/sim/testsuite/cris/asm/endmem1.ms
new file mode 100644 (file)
index 0000000..ff9e334
--- /dev/null
@@ -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