aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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, ...)