summaryrefslogtreecommitdiff
path: root/src/kernel/sbi.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/sbi.cc')
-rw-r--r--src/kernel/sbi.cc52
1 files changed, 0 insertions, 52 deletions
diff --git a/src/kernel/sbi.cc b/src/kernel/sbi.cc
deleted file mode 100644
index 5ae7edb..0000000
--- a/src/kernel/sbi.cc
+++ /dev/null
@@ -1,52 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * Copyright (C) 2026 Richard QIn
- */
-#include "common/types.h"
-#include "kernel/sbi.h"
-
-namespace SBI
-{
- struct sbiret
- {
- long error;
- long value;
- };
-
- struct sbiret sbi_call(int ext, int fid, uint64 arg0, uint64 arg1, uint64 arg2)
- {
- struct sbiret ret;
- register uint64 a0 asm("a0") = arg0;
- register uint64 a1 asm("a1") = arg1;
- register uint64 a2 asm("a2") = arg2;
- register uint64 a6 asm("a6") = fid;
- register uint64 a7 asm("a7") = ext;
-
- asm volatile(
- "ecall"
- : "=r"(a0), "=r"(a1)
- : "r"(a0), "r"(a1), "r"(a2), "r"(a6), "r"(a7)
- : "memory");
- ret.error = a0;
- ret.value = a1;
- return ret;
- }
-
- void set_timer(uint64 stime_value)
- {
- sbi_call(0x54494D45, 0, stime_value, 0, 0);
- }
-
- void sbi_shutdown()
- {
- sbi_call(0x53525354, 0, 0, 0, 0);
- sbi_call(0x08, 0, 0, 0, 0);
- while (1)
- ;
- }
-
- void sbi_reboot()
- {
- sbi_call(SBI_EID_SRST, SBI_FID_SRST_RESET, SBI_SRST_TYPE_COLD_REBOOT, SBI_SRST_REASON_NONE, 0);
- }
-} \ No newline at end of file