From d4f6e58fcbab1fa2df123e3849dd95f30400a896 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Fri, 7 Dec 2018 10:28:31 +0000 Subject: tests/tcg: split cris tests into bare and libc directories MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bare tests are standalone assembly tests that don't require linking to any libc and hence can be built with kernel only compilers. The libc tests need a compiler capable of building properly linked userspace binaries. As we don't have such a cross compiler at the moment we won't be building those tests. Signed-off-by: Alex Bennée --- tests/tcg/cris/libc/check_addoq.c | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 tests/tcg/cris/libc/check_addoq.c (limited to 'tests/tcg/cris/libc/check_addoq.c') diff --git a/tests/tcg/cris/libc/check_addoq.c b/tests/tcg/cris/libc/check_addoq.c new file mode 100644 index 0000000000..ed509e27e0 --- /dev/null +++ b/tests/tcg/cris/libc/check_addoq.c @@ -0,0 +1,44 @@ +#include +#include +#include +#include "sys.h" +#include "crisutils.h" + +/* this would be better to do in asm, it's an orgy in GCC inline asm now. */ + +/* ACR will be clobbered. */ +#define cris_addoq(o, v) \ + asm volatile ("addoq\t%1, %0, $acr\n" : : "r" (v), "i" (o) : "acr"); + + +int main(void) +{ + int x[3] = {0x55aa77ff, 0xccff2244, 0x88ccee19}; + int *p, *t = x + 1; + + cris_tst_cc_init(); + asm volatile ("setf\tzvnc\n"); + cris_addoq(0, t); + cris_tst_cc(1, 1, 1, 1); + asm volatile ("move.d\t$acr, %0\n" : "=r" (p)); + if (*p != 0xccff2244) + err(); + + cris_tst_cc_init(); + asm volatile ("setf\tzvnc\n"); + cris_addoq(4, t); + cris_tst_cc(0, 0, 0, 0); + asm volatile ("move.d\t$acr, %0\n" : "=r" (p)); + if (*p != 0x88ccee19) + err(); + + cris_tst_cc_init(); + asm volatile ("clearf\tzvnc\n"); + cris_addoq(-8, t + 1); + cris_tst_cc(0, 0, 0, 0); + asm volatile ("move.d\t$acr, %0\n" : "=r" (p)); + if (*p != 0x55aa77ff) + err(); + pass(); + return 0; +} -- cgit v1.2.3