summaryrefslogtreecommitdiff
path: root/lib/sbi/sbi_system.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sbi/sbi_system.c')
-rw-r--r--lib/sbi/sbi_system.c34
1 files changed, 5 insertions, 29 deletions
diff --git a/lib/sbi/sbi_system.c b/lib/sbi/sbi_system.c
index 5d4c7de..6f7be14 100644
--- a/lib/sbi/sbi_system.c
+++ b/lib/sbi/sbi_system.c
@@ -17,7 +17,7 @@
#include <sbi/sbi_ipi.h>
#include <sbi/sbi_init.h>
-void __noreturn sbi_system_reboot(u32 type)
+void __noreturn sbi_system_reset(u32 platform_reset_type)
{
ulong hbase = 0, hmask;
u32 cur_hartid = current_hartid();
@@ -35,34 +35,10 @@ void __noreturn sbi_system_reboot(u32 type)
/* Stop current HART */
sbi_hsm_hart_stop(scratch, FALSE);
- /* Platform specific reooot */
- sbi_platform_system_reboot(sbi_platform_ptr(scratch), type);
+ /* Platform specific reset */
+ sbi_platform_system_reset(sbi_platform_ptr(scratch),
+ platform_reset_type);
- /* If platform specific reboot did not work then do sbi_exit() */
- sbi_exit(scratch);
-}
-
-void __noreturn sbi_system_shutdown(u32 type)
-{
- ulong hbase = 0, hmask;
- u32 cur_hartid = current_hartid();
- struct sbi_scratch *scratch = sbi_scratch_thishart_ptr();
-
- /* Send HALT IPI to every hart other than the current hart */
- while (!sbi_hsm_hart_started_mask(hbase, &hmask)) {
- if (hbase <= cur_hartid)
- hmask &= ~(1UL << (cur_hartid - hbase));
- if (hmask)
- sbi_ipi_send_halt(hmask, hbase);
- hbase += BITS_PER_LONG;
- }
-
- /* Stop current HART */
- sbi_hsm_hart_stop(scratch, FALSE);
-
- /* Platform specific shutdown */
- sbi_platform_system_shutdown(sbi_platform_ptr(scratch), type);
-
- /* If platform specific shutdown did not work then do sbi_exit() */
+ /* If platform specific reset did not work then do sbi_exit() */
sbi_exit(scratch);
}