aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/payloads/test_main.c25
-rw-r--r--include/sbi/sbi_ecall_interface.h25
2 files changed, 25 insertions, 25 deletions
diff --git a/firmware/payloads/test_main.c b/firmware/payloads/test_main.c
index 04a5be5..eba5e4d 100644
--- a/firmware/payloads/test_main.c
+++ b/firmware/payloads/test_main.c
@@ -9,6 +9,31 @@
#include <sbi/sbi_ecall_interface.h>
+#define SBI_ECALL(__num, __a0, __a1, __a2) \
+ ({ \
+ 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); \
+ asm volatile("ecall" \
+ : "+r"(a0) \
+ : "r"(a1), "r"(a2), "r"(a7) \
+ : "memory"); \
+ a0; \
+ })
+
+#define SBI_ECALL_0(__num) SBI_ECALL(__num, 0, 0, 0)
+#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++);
+}
+
#define wfi() \
do { \
__asm__ __volatile__("wfi" ::: "memory"); \
diff --git a/include/sbi/sbi_ecall_interface.h b/include/sbi/sbi_ecall_interface.h
index 6c12272..0d8e5ea 100644
--- a/include/sbi/sbi_ecall_interface.h
+++ b/include/sbi/sbi_ecall_interface.h
@@ -24,29 +24,4 @@
/* clang-format on */
-#define SBI_ECALL(__num, __a0, __a1, __a2) \
- ({ \
- 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); \
- asm volatile("ecall" \
- : "+r"(a0) \
- : "r"(a1), "r"(a2), "r"(a7) \
- : "memory"); \
- a0; \
- })
-
-#define SBI_ECALL_0(__num) SBI_ECALL(__num, 0, 0, 0)
-#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