commit ff146ca7952073cfa50cef3136f5ad8bf6249dfb from: Benjamin Stürz date: Tue Feb 20 19:04:43 2024 UTC make printf(3) work commit - 0ec92ecb47a3a0093deb0f285e0d05d011cf06d9 commit + ff146ca7952073cfa50cef3136f5ad8bf6249dfb blob - a705236c9bc04ebc05144792b2c9cc7cded54f0a blob + 44537fe39bb4e8ea22f90917381b9327ef99beb9 --- cpu.c +++ cpu.c @@ -254,6 +254,7 @@ void cpu_exec (u32 instr) case 0b0100000: name = "sraiw"; c = (i32)a >> shamt; + break; default: goto ud; } blob - d9d65bf68d10b5d9c1590f6519a0c84c3eceaed5 blob + 23d31d68cbaa4919d7ea80f36ba6af592227e811 --- ecall.c +++ ecall.c @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -292,10 +293,10 @@ void ecall (void) 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 @@ -33,7 +33,7 @@ static void load_segment (int fd, Elf64_Phdr phdr) -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 @@ -1,7 +1,8 @@ #include #include +#include -const char *volatile str = "Hello World!\n"; +volatile int x = 42; __attribute__((always_inline)) inline static void ebreak (void) @@ -10,7 +11,6 @@ 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; }