#include #include #include 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); } 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; } void exit (int status) { register unsigned int callno asm ("r9") = 1; /* NR_exit */ asm volatile ("break 13\n" : : "r" (callno) : "memory" ); while(1) ; } 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"); return r; }