tests/tcg: split cris tests into bare and libc directories

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 <alex.bennee@linaro.org>
This commit is contained in:
Alex Bennée 2018-12-07 10:28:31 +00:00
parent 6b970dd62c
commit d4f6e58fcb
102 changed files with 0 additions and 0 deletions

View file

@ -0,0 +1,116 @@
/*
* Check the lz insn.
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include "sys.h"
#define __LINUX_KERNEL_VERSION 131584
#define DL_SYSDEP_OSCHECK(FATAL) \
do { \
/* Test whether the kernel is new enough. This test is only \
performed if the library is not compiled to run on all \
kernels. */ \
if (__LINUX_KERNEL_VERSION > 0) \
{ \
char bufmem[64]; \
char *buf = bufmem; \
unsigned int version; \
int parts; \
char *cp; \
struct utsname uts; \
\
/* Try the uname syscall */ \
if (__uname (&uts)) \
{ \
/* This was not successful. Now try reading the /proc \
filesystem. */ \
ssize_t reslen; \
int fd = __open ("/proc/sys/kernel/osrelease", O_RDONLY); \
if (fd == -1 \
|| (reslen = __read (fd, bufmem, sizeof (bufmem))) <= 0) \
/* This also didn't work. We give up since we cannot \
make sure the library can actually work. */ \
FATAL ("FATAL: cannot determine library version\n"); \
__close (fd); \
buf[MIN (reslen, (ssize_t) sizeof (bufmem) - 1)] = '\0'; \
} \
else \
buf = uts.release; \
\
/* Now convert it into a number. The string consists of at most \
three parts. */ \
version = 0; \
parts = 0; \
cp = buf; \
while ((*cp >= '0') && (*cp <= '9')) \
{ \
unsigned int here = *cp++ - '0'; \
\
while ((*cp >= '0') && (*cp <= '9')) \
{ \
here *= 10; \
here += *cp++ - '0'; \
} \
\
++parts; \
version <<= 8; \
version |= here; \
\
if (*cp++ != '.') \
/* Another part following? */ \
break; \
} \
\
if (parts < 3) \
version <<= 8 * (3 - parts); \
\
/* Now we can test with the required version. */ \
if (version < __LINUX_KERNEL_VERSION) \
/* Not sufficient. */ \
FATAL ("FATAL: kernel too old\n"); \
\
_dl_osversion = version; \
} \
} while (0)
int main(void)
{
char bufmem[64] = "2.6.22";
char *buf = bufmem;
unsigned int version;
int parts;
char *cp;
version = 0;
parts = 0;
cp = buf;
while ((*cp >= '0') && (*cp <= '9'))
{
unsigned int here = *cp++ - '0';
while ((*cp >= '0') && (*cp <= '9'))
{
here *= 10;
here += *cp++ - '0';
}
++parts;
version <<= 8;
version |= here;
if (*cp++ != '.')
/* Another part following? */
break;
}
if (parts < 3)
version <<= 8 * (3 - parts);
if (version < __LINUX_KERNEL_VERSION)
err();
pass();
exit(0);
}