@@ -1,59 +1,59 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-static inline int mystrlen(char *s) {
- int i = 0;
- while (s[i])
- i++;
- return i;
+/*
+ * Helper functions for CRIS system tests
+ *
+ * There is no libc and only a limited set of headers.
+ */
+
+#include <stddef.h>
+
+void exit(int status)
+{
+ register unsigned int callno asm ("r9") = 1; /* NR_exit */
+
+ asm volatile ("break 13\n"
+ : /* no outputs */
+ : "r" (callno)
+ : "memory" );
+ while(1);
}
-void pass(void) {
- char s[] = "passed.\n";
- write (1, s, sizeof (s) - 1);
- exit (0);
-}
+size_t write(int fd, const void *buf, size_t count)
+{
+ register unsigned int callno asm ("r9") = 4; /* NR_write */
+ register unsigned int r10 asm ("r10") = fd;
+ register const void *r11 asm ("r11") = buf;
+ register size_t r12 asm ("r12") = count;
+ register unsigned int r asm ("r10");
-void _fail(char *reason) {
- char s[] = "\nfailed: ";
- int len = mystrlen(reason);
- write (1, s, sizeof (s) - 1);
- write (1, reason, len);
- write (1, "\n", 1);
-// exit (1);
-}
+ asm volatile ("break 13\n"
+ : "=r" (r)
+ : "r" (callno), "0" (r10), "r" (r11), "r" (r12)
+ : "memory");
-void *memset (void *s, int c, size_t n) {
- char *p = s;
- int i;
- for (i = 0; i < n; i++)
- p[i] = c;
- return p;
+ return r;
}
-void exit (int status) {
- register unsigned int callno asm ("r9") = 1; /* NR_exit */
-
- asm volatile ("break 13\n"
- :
- : "r" (callno)
- : "memory" );
- while(1)
- ;
+static inline int mystrlen(char *s)
+{
+ int i = 0;
+ while (s[i]) {
+ i++;
+ }
+ return i;
}
-ssize_t write (int fd, const void *buf, size_t count) {
- register unsigned int callno asm ("r9") = 4; /* NR_write */
- register unsigned int r10 asm ("r10") = fd;
- register const void *r11 asm ("r11") = buf;
- register size_t r12 asm ("r12") = count;
- register unsigned int r asm ("r10");
- asm volatile ("break 13\n"
- : "=r" (r)
- : "r" (callno), "0" (r10), "r" (r11), "r" (r12)
- : "memory");
+void pass(void) {
+ char s[] = "passed.\n";
+ write(1, s, sizeof (s) - 1);
+ exit(0);
+}
- return r;
+void _fail(char *reason) {
+ char s[] = "\nfailed: ";
+ int len = mystrlen(reason);
+ write(1, s, sizeof (s) - 1);
+ write(1, reason, len);
+ write(1, "\n", 1);
+ exit(1);
}
@@ -3,16 +3,18 @@
*/
-void exit (int status) {
+void exit(int status)
+{
register unsigned int callno asm ("r9") = 1; /* NR_exit */
asm volatile ("break 13\n"
:
: "r" (callno)
- : "memory" );
+ : "memory");
while(1);
}
-ssize_t write (int fd, const void *buf, size_t count) {
+ssize_t write(int fd, const void *buf, size_t count)
+{
register unsigned int callno asm ("r9") = 4; /* NR_write */
register unsigned int r10 asm ("r10") = fd;
register const void *r11 asm ("r11") = buf;
@@ -27,29 +29,32 @@ ssize_t write (int fd, const void *buf, size_t count) {
return r;
}
-static inline int mystrlen(char *s) {
+static inline int mystrlen(char *s)
+{
int i = 0;
while (s[i])
i++;
return i;
}
-void pass(void) {
+void pass(void)
+{
char s[] = "passed.\n";
- write (1, s, sizeof (s) - 1);
+ write (1, s, sizeof(s) - 1);
exit (0);
}
-void _fail(char *reason) {
+void _fail(char *reason)
+{
char s[] = "\nfailed: ";
int len = mystrlen(reason);
write (1, s, sizeof (s) - 1);
write (1, reason, len);
write (1, "\n", 1);
-// exit (1);
}
-void *memset (void *s, int c, size_t n) {
+void *memset(void *s, int c, size_t n)
+{
char *p = s;
int i;
for (i = 0; i < n; i++)
This is a mini library which provides helper functions to the tests which are all currently written in assembly. A bunch of minor changes: - removed libc related headers (fedora-cris-cross is a system compiler) - re-organised the functions to avoid forward declarations - cleaned up brace usage - restored exit for _fail case - removed tabs and fixed indentation Signed-off-by: Alex Bennée <alex.bennee@linaro.org> --- tests/tcg/cris/bare/sys.c | 96 +++++++++++++++++++-------------------- tests/tcg/cris/libc/sys.c | 23 ++++++---- 2 files changed, 62 insertions(+), 57 deletions(-) -- 2.20.1