diff options
Diffstat (limited to 'src/kernel/sbi.cc')
| -rw-r--r-- | src/kernel/sbi.cc | 52 |
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 |
