summaryrefslogtreecommitdiff
path: root/riscv/riscv-probe/libfemto/drivers/sifive_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'riscv/riscv-probe/libfemto/drivers/sifive_test.c')
-rw-r--r--riscv/riscv-probe/libfemto/drivers/sifive_test.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/riscv/riscv-probe/libfemto/drivers/sifive_test.c b/riscv/riscv-probe/libfemto/drivers/sifive_test.c
new file mode 100644
index 0000000..1bda9e9
--- /dev/null
+++ b/riscv/riscv-probe/libfemto/drivers/sifive_test.c
@@ -0,0 +1,28 @@
+// See LICENSE for license details.
+
+#include "femto.h"
+
+enum {
+ SIFIVE_TEST_FAIL = 0x3333,
+ SIFIVE_TEST_PASS = 0x5555,
+};
+
+static volatile uint32_t *test;
+
+static void sifive_test_init()
+{
+ test = (uint32_t *)(void *)getauxval(SIFIVE_TEST_CTRL_ADDR);
+}
+
+static void sifive_test_poweroff(int status)
+{
+ *test = SIFIVE_TEST_PASS;
+ while (1) {
+ asm volatile("");
+ }
+}
+
+poweroff_device_t poweroff_sifive_test = {
+ sifive_test_init,
+ sifive_test_poweroff
+};