/* * Helper functions for CRIS system tests * * There is no libc and only a limited set of headers. */ #include 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) { /* do nothing */ }; } 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"); asm volatile ("break 13\n" : "=r" (r) : "r" (callno), "0" (r10), "r" (r11), "r" (r12) : "memory"); return r; } static inline int mystrlen(char *s) { int i = 0; while (s[i]) { i++; } return i; } void pass(void) { char s[] = "passed.\n"; write(1, s, sizeof(s) - 1); exit(0); } 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); }