qemu/tests/tcg/cris/sys.c
<<
>>
Prefs
   1#include <stdio.h>
   2#include <stdlib.h>
   3#include <unistd.h>
   4
   5static inline int mystrlen(char *s) {
   6        int i = 0;
   7        while (s[i])
   8                i++;
   9        return i;
  10}
  11
  12void pass(void) {
  13        char s[] = "passed.\n";
  14        write (1, s, sizeof (s) - 1);
  15        exit (0);
  16}
  17
  18void _fail(char *reason) {
  19        char s[] = "\nfailed: ";
  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
  27void *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
  35void exit (int status) {
  36        register unsigned int callno asm ("r9") = 1; /* NR_exit */
  37
  38        asm volatile ("break 13\n"
  39                      :
  40                      : "r" (callno)
  41                      : "memory" );
  42        while(1)
  43                ;
  44}
  45
  46ssize_t write (int fd, const void *buf, size_t count) {
  47        register unsigned int callno asm ("r9") = 4; /* NR_write */
  48        register unsigned int r10 asm ("r10") = fd;
  49        register const void *r11 asm ("r11") = buf;
  50        register size_t r12 asm ("r12") = count;
  51        register unsigned int r asm ("r10");
  52
  53        asm volatile ("break 13\n"
  54             : "=r" (r)
  55             : "r" (callno), "0" (r10), "r" (r11), "r" (r12)
  56             : "memory");
  57
  58        return r;
  59}
  60