diff --git a/firmware/payloads/test_main.c b/firmware/payloads/test_main.c index 194dbbe6..03f6ba39 100644 --- a/firmware/payloads/test_main.c +++ b/firmware/payloads/test_main.c @@ -46,6 +46,13 @@ static inline void sbi_ecall_console_puts(const char *str) sbi_strlen(str), (unsigned long)str, 0, 0, 0, 0); } +static inline void sbi_ecall_shutdown(void) +{ + sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, + SBI_SRST_RESET_TYPE_SHUTDOWN, SBI_SRST_RESET_REASON_NONE, + 0, 0, 0, 0); +} + #define wfi() \ do { \ __asm__ __volatile__("wfi" ::: "memory"); \ @@ -54,7 +61,6 @@ static inline void sbi_ecall_console_puts(const char *str) void test_main(unsigned long a0, unsigned long a1) { sbi_ecall_console_puts("\nTest payload running\n"); - - while (1) - wfi(); + sbi_ecall_shutdown(); + sbi_ecall_console_puts("sbi_ecall_shutdown failed to execute.\n"); }