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        asm volatile ("moveq 1, $r9\n" /* NR_exit.  */
  37                      "break 13\n");
  38        while(1)
  39                ;
  40}
  41
  42ssize_t write (int fd, const void *buf, size_t count) {
  43        int r;
  44        asm ("move.d %0, $r10\n"
  45             "move.d %1, $r11\n"
  46             "move.d %2, $r12\n"
  47             "moveq 4, $r9\n" /* NR_write.  */
  48             "break 13\n" : : "r" (fd), "r" (buf), "r" (count) : "memory");
  49        asm ("move.d $r10, %0\n" : "=r" (r));
  50        return r;
  51}
  52