summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/sbi/sbi_system.h14
-rw-r--r--lib/sbi/sbi_ecall_legacy.c2
-rw-r--r--lib/sbi/sbi_init.c8
-rw-r--r--lib/sbi/sbi_system.c26
4 files changed, 11 insertions, 39 deletions
diff --git a/include/sbi/sbi_system.h b/include/sbi/sbi_system.h
index 3ad8348..8d9c18b 100644
--- a/include/sbi/sbi_system.h
+++ b/include/sbi/sbi_system.h
@@ -12,18 +12,8 @@
#include <sbi/sbi_types.h>
-struct sbi_scratch;
+void __noreturn sbi_system_reboot(u32 type);
-int sbi_system_early_init(struct sbi_scratch *scratch, bool cold_boot);
-
-int sbi_system_final_init(struct sbi_scratch *scratch, bool cold_boot);
-
-void sbi_system_early_exit(struct sbi_scratch *scratch);
-
-void sbi_system_final_exit(struct sbi_scratch *scratch);
-
-void __noreturn sbi_system_reboot(struct sbi_scratch *scratch, u32 type);
-
-void __noreturn sbi_system_shutdown(struct sbi_scratch *scratch, u32 type);
+void __noreturn sbi_system_shutdown(u32 type);
#endif
diff --git a/lib/sbi/sbi_ecall_legacy.c b/lib/sbi/sbi_ecall_legacy.c
index 32183cb..36d6f17 100644
--- a/lib/sbi/sbi_ecall_legacy.c
+++ b/lib/sbi/sbi_ecall_legacy.c
@@ -102,7 +102,7 @@ static int sbi_ecall_legacy_handler(unsigned long extid, unsigned long funcid,
}
break;
case SBI_EXT_0_1_SHUTDOWN:
- sbi_system_shutdown(scratch, 0);
+ sbi_system_shutdown(0);
break;
default:
ret = SBI_ENOTSUPP;
diff --git a/lib/sbi/sbi_init.c b/lib/sbi/sbi_init.c
index f448b79..b01bff1 100644
--- a/lib/sbi/sbi_init.c
+++ b/lib/sbi/sbi_init.c
@@ -160,7 +160,7 @@ static void __noreturn init_coldboot(struct sbi_scratch *scratch, u32 hartid)
if (rc)
sbi_hart_hang();
- rc = sbi_system_early_init(scratch, TRUE);
+ rc = sbi_platform_early_init(plat, TRUE);
if (rc)
sbi_hart_hang();
@@ -192,7 +192,7 @@ static void __noreturn init_coldboot(struct sbi_scratch *scratch, u32 hartid)
if (rc)
sbi_hart_hang();
- rc = sbi_system_final_init(scratch, TRUE);
+ rc = sbi_platform_final_init(plat, TRUE);
if (rc)
sbi_hart_hang();
@@ -224,7 +224,7 @@ static void __noreturn init_warmboot(struct sbi_scratch *scratch, u32 hartid)
if (rc)
sbi_hart_hang();
- rc = sbi_system_early_init(scratch, FALSE);
+ rc = sbi_platform_early_init(plat, FALSE);
if (rc)
sbi_hart_hang();
@@ -248,7 +248,7 @@ static void __noreturn init_warmboot(struct sbi_scratch *scratch, u32 hartid)
if (rc)
sbi_hart_hang();
- rc = sbi_system_final_init(scratch, FALSE);
+ rc = sbi_platform_final_init(plat, FALSE);
if (rc)
sbi_hart_hang();
diff --git a/lib/sbi/sbi_system.c b/lib/sbi/sbi_system.c
index ffe0b41..5d4c7de 100644
--- a/lib/sbi/sbi_system.c
+++ b/lib/sbi/sbi_system.c
@@ -17,30 +17,11 @@
#include <sbi/sbi_ipi.h>
#include <sbi/sbi_init.h>
-int sbi_system_early_init(struct sbi_scratch *scratch, bool cold_boot)
-{
- return sbi_platform_early_init(sbi_platform_ptr(scratch), cold_boot);
-}
-
-int sbi_system_final_init(struct sbi_scratch *scratch, bool cold_boot)
-{
- return sbi_platform_final_init(sbi_platform_ptr(scratch), cold_boot);
-}
-
-void sbi_system_early_exit(struct sbi_scratch *scratch)
-{
- sbi_platform_early_exit(sbi_platform_ptr(scratch));
-}
-
-void sbi_system_final_exit(struct sbi_scratch *scratch)
-{
- sbi_platform_final_exit(sbi_platform_ptr(scratch));
-}
-
-void __noreturn sbi_system_reboot(struct sbi_scratch *scratch, u32 type)
+void __noreturn sbi_system_reboot(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)) {
@@ -61,10 +42,11 @@ void __noreturn sbi_system_reboot(struct sbi_scratch *scratch, u32 type)
sbi_exit(scratch);
}
-void __noreturn sbi_system_shutdown(struct sbi_scratch *scratch, u32 type)
+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)) {