Add testcase for CRIS ftag/fidx cache flushing insns.
authoredgar_igl <edgar_igl@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 25 Feb 2008 10:00:07 +0000 (10:00 +0000)
committeredgar_igl <edgar_igl@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 25 Feb 2008 10:00:07 +0000 (10:00 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3991 c046a42c-6fe2-441c-8c8c-71466251a162

tests/cris/Makefile
tests/cris/check_ftag.c [new file with mode: 0644]

index a6a28f4..47c93f2 100644 (file)
@@ -55,6 +55,7 @@ TESTCASES += check_cmpxm.tst
 TESTCASES += check_cmp-2.tst
 TESTCASES += check_clrjmp1.tst
 TESTCASES += check_dstep.tst
+TESTCASES += check_ftag.tst
 TESTCASES += check_int64.tst
 # check_jsr is broken.
 #TESTCASES += check_jsr.tst
diff --git a/tests/cris/check_ftag.c b/tests/cris/check_ftag.c
new file mode 100644 (file)
index 0000000..40d1507
--- /dev/null
@@ -0,0 +1,33 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include "sys.h"
+#include "crisutils.h"
+
+extern inline void cris_ftag_i(unsigned int x) {
+       register unsigned int v asm("$r10") = x;
+       asm ("ftagi\t[%0]\n" : : "r" (v) );
+}
+extern inline void cris_ftag_d(unsigned int x) {
+       register unsigned int v asm("$r10") = x;
+       asm ("ftagd\t[%0]\n" : : "r" (v) );
+}
+extern inline void cris_fidx_i(unsigned int x) {
+       register unsigned int v asm("$r10") = x;
+       asm ("fidxi\t[%0]\n" : : "r" (v) );
+}
+extern inline void cris_fidx_d(unsigned int x) {
+       register unsigned int v asm("$r10") = x;
+       asm ("fidxd\t[%0]\n" : : "r" (v) );
+}
+
+
+int main(void)
+{
+       cris_ftag_i(0);
+       cris_ftag_d(0);
+       cris_fidx_i(0);
+       cris_fidx_d(0);
+       pass();
+       return 0;
+}