diff options
Diffstat (limited to 'machine/mtrap.c')
-rw-r--r-- | machine/mtrap.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/machine/mtrap.c b/machine/mtrap.c index d0c1684..ff4eb60 100644 --- a/machine/mtrap.c +++ b/machine/mtrap.c @@ -7,6 +7,7 @@ #include "uart.h" #include "fdt.h" #include "unprivileged_memory.h" +#include "platform_interface.h" #include <errno.h> #include <stdarg.h> #include <stdio.h> @@ -20,7 +21,7 @@ static uintptr_t mcall_console_putchar(uint8_t ch) { if (uart) { uart_putchar(ch); - } else { + } else if (platform__use_htif()) { htif_console_putchar(ch); } return 0; @@ -28,7 +29,11 @@ static uintptr_t mcall_console_putchar(uint8_t ch) void poweroff() { - htif_poweroff(); + if (platform__use_htif()) { + htif_poweroff(); + } else { + while (1); + } } void putstring(const char* s) @@ -61,8 +66,10 @@ static uintptr_t mcall_console_getchar() { if (uart) { return uart_getchar(); - } else { + } else if (platform__use_htif()) { return htif_console_getchar(); + } else { + return '\0'; } } |