diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-10-25 17:05:34 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-10-25 17:05:34 -0700 |
commit | 402793033200c9f728fe022d4c57fc19b1df2937 (patch) | |
tree | 219fcdd79d41c738703526e28767e4f645b5498b | |
parent | f81b722bf004177eadaf6f1b4b9e699e20257521 (diff) | |
download | riscv-pk-402793033200c9f728fe022d4c57fc19b1df2937.zip riscv-pk-402793033200c9f728fe022d4c57fc19b1df2937.tar.gz riscv-pk-402793033200c9f728fe022d4c57fc19b1df2937.tar.bz2 |
rv32 putstring fixrv32-putstring
-rw-r--r-- | machine/mtrap.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/machine/mtrap.c b/machine/mtrap.c index a68c0d9..00fdcc7 100644 --- a/machine/mtrap.c +++ b/machine/mtrap.c @@ -3,6 +3,8 @@ #include "htif.h" #include "atomic.h" #include "bits.h" +#include "syscall.h" +#include <string.h> #include <errno.h> #include <stdarg.h> #include <stdio.h> @@ -89,8 +91,13 @@ void poweroff() void putstring(const char* s) { - while (*s) - mcall_console_putchar(*s++); + volatile uint64_t magic_mem[8] __attribute__((aligned(64))); + magic_mem[0] = SYS_write; + magic_mem[1] = 1; + magic_mem[2] = (uintptr_t)s; + magic_mem[3] = strlen(s); + + mcall_htif_syscall((uintptr_t)magic_mem); } void printm(const char* s, ...) |