commit - 0ec92ecb47a3a0093deb0f285e0d05d011cf06d9
commit + ff146ca7952073cfa50cef3136f5ad8bf6249dfb
blob - a705236c9bc04ebc05144792b2c9cc7cded54f0a
blob + 44537fe39bb4e8ea22f90917381b9327ef99beb9
--- cpu.c
+++ cpu.c
case 0b0100000:
name = "sraiw";
c = (i32)a >> shamt;
+ break;
default:
goto ud;
}
blob - d9d65bf68d10b5d9c1590f6519a0c84c3eceaed5
blob + 23d31d68cbaa4919d7ea80f36ba6af592227e811
--- ecall.c
+++ ecall.c
#include <sys/stat.h>
#include <sys/msg.h>
#include <sys/sem.h>
+#include <sys/uio.h>
#include <signal.h>
#include <unistd.h>
#include <string.h>
ret = map (write ((int)a0, ptr (const void, a1), (size_t)a2));
break;
case SYS_readv:
- ret = enosys ("readv");
+ ret = map (readv ((int)a0, ptr (const struct iovec, a1), (int)a2));
break;
case SYS_writev:
- ret = enosys ("writev");
+ ret = map (writev ((int)a0, ptr (const struct iovec, a1), (int)a2));
break;
case SYS_pread:
ret = map (pread ((int)a0, ptr (void, a1), (size_t)a2, (off_t)a3));
blob - 23cc40c4b208dbd67a50dac13bd9cf0784df78eb
blob + a0d8b14d8d05941c2315f86aa3a6da4ba0551ba4
--- rvemu.c
+++ rvemu.c
-1,
0
);
- fprintf (stderr, "mmap (%p, %#zx) = %p;\n", addr, len, ptr);
+ eprintf ("mmap (%p, %#zx) = %p;\n", addr, len, ptr);
if (ptr == NULL)
err (1, "mmap()");
blob - 7ae62507ac23f2c3e6716f44bfdb437b02dbc5f6
blob + 03f581641727d6bf3a3b2bde53a69d2d7de35b27
--- test.c
+++ test.c
#include <unistd.h>
#include <string.h>
+#include <stdio.h>
-const char *volatile str = "Hello World!\n";
+volatile int x = 42;
__attribute__((always_inline))
inline static void ebreak (void)
}
int main (void) {
- const size_t len = strlen (str);
- write (1, str, len);
+ printf ("Hello World, x = %d\n", x);
return 0;
}