diff --git a/firmware/payloads/test_main.c b/firmware/payloads/test_main.c index 666ce7c0..957f963f 100644 --- a/firmware/payloads/test_main.c +++ b/firmware/payloads/test_main.c @@ -14,17 +14,9 @@ do { \ __asm__ __volatile__ ("wfi" ::: "memory"); \ } while (0) -static void sbi_puts(const char *str) -{ - while (*str) { - SBI_ECALL_1(SBI_ECALL_CONSOLE_PUTCHAR, *str); - str++; - } -} - void test_main(unsigned long a0, unsigned long a1) { - sbi_puts("\nTest payload running\n"); + sbi_ecall_console_puts("\nTest payload running\n"); while (1) wfi(); diff --git a/include/sbi/sbi_ecall_interface.h b/include/sbi/sbi_ecall_interface.h index 53de6a4d..1ea26764 100644 --- a/include/sbi/sbi_ecall_interface.h +++ b/include/sbi/sbi_ecall_interface.h @@ -24,7 +24,7 @@ register unsigned long a0 asm ("a0") = (unsigned long)(__a0); \ register unsigned long a1 asm ("a1") = (unsigned long)(__a1); \ register unsigned long a2 asm ("a2") = (unsigned long)(__a2); \ - register unsigned long a7 asm ("a7") = (unsigned long)(__num);\ + register unsigned long a7 asm ("a7") = (unsigned long)(__num); \ asm volatile ("ecall" \ : "+r" (a0) \ : "r" (a1), "r" (a2), "r" (a7) \ @@ -36,4 +36,13 @@ #define SBI_ECALL_1(__num, __a0) SBI_ECALL(__num, __a0, 0, 0) #define SBI_ECALL_2(__num, __a0, __a1) SBI_ECALL(__num, __a0, __a1, 0) +#define sbi_ecall_console_putc(c) \ + SBI_ECALL_1(SBI_ECALL_CONSOLE_PUTCHAR, (c)); + +static inline void sbi_ecall_console_puts(const char *str) +{ + while (str && *str) + sbi_ecall_console_putc(*str++); +} + #endif