aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@cs.berkeley.edu>2016-10-25 17:05:34 -0700
committerAndrew Waterman <waterman@cs.berkeley.edu>2016-10-25 17:05:34 -0700
commit402793033200c9f728fe022d4c57fc19b1df2937 (patch)
tree219fcdd79d41c738703526e28767e4f645b5498b
parentf81b722bf004177eadaf6f1b4b9e699e20257521 (diff)
downloadpk-rv32-putstring.zip
pk-rv32-putstring.tar.gz
pk-rv32-putstring.tar.bz2
rv32 putstring fixrv32-putstring
-rw-r--r--machine/mtrap.c11
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, ...)