|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include <stdlib.h> ! 3: #include <unistd.h> ! 4: ! 5: static inline int mystrlen(char *s) { ! 6: int i = 0; ! 7: while (s[i]) ! 8: i++; ! 9: return i; ! 10: } ! 11: ! 12: void pass(void) { ! 13: char s[] = "passed.\n"; ! 14: write (1, s, sizeof (s) - 1); ! 15: exit (0); ! 16: } ! 17: ! 18: void _fail(char *reason) { ! 19: char s[] = "failed: "; ! 20: int len = mystrlen(reason); ! 21: write (1, s, sizeof (s) - 1); ! 22: write (1, reason, len); ! 23: write (1, "\n", 1); ! 24: // exit (1); ! 25: } ! 26: ! 27: void *memset (void *s, int c, size_t n) { ! 28: char *p = s; ! 29: int i; ! 30: for (i = 0; i < n; i++) ! 31: p[i] = c; ! 32: return p; ! 33: } ! 34: ! 35: void exit (int status) { ! 36: asm volatile ("moveq 1, $r9\n" /* NR_exit. */ ! 37: "break 13\n"); ! 38: while(1) ! 39: ; ! 40: } ! 41: ! 42: ssize_t write (int fd, const void *buf, size_t count) { ! 43: int r; ! 44: asm volatile ("moveq 4, $r9\n" /* NR_write. */ ! 45: "break 13\n" : : : "memory"); ! 46: asm volatile ("move.d $r10, %0\n" : "=r" (r)); ! 47: return r; ! 48: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.