summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/payloads/test_main.c10
-rw-r--r--include/sbi/sbi_ecall_interface.h11
2 files changed, 11 insertions, 10 deletions
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