summaryrefslogtreecommitdiff
path: root/platform/thead
diff options
context:
space:
mode:
authorLiu Yibin <yibin_liu@c-sky.com>2020-03-27 06:31:48 +0300
committerAnup Patel <anup@brainfault.org>2020-03-28 11:11:03 +0300
commite5a7f556ce22984128bed0a336551a968c818450 (patch)
tree36abb2e127ce4d9680f934bf9169f5bdb23bddcb /platform/thead
parent648507a86791d4558e96c9876e757cee2c30b203 (diff)
downloadopensbi-e5a7f556ce22984128bed0a336551a968c818450.tar.xz
platform: thead/c910: Use HSM extension to boot secondary cores
Remove custom vendor extension and use HSM extension to boot secondary cores Signed-off-by: Liu Yibin <yibin_liu@c-sky.com> Reviewed-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Diffstat (limited to 'platform/thead')
-rw-r--r--platform/thead/c910/platform.c20
-rw-r--r--platform/thead/c910/platform.h5
2 files changed, 5 insertions, 20 deletions
diff --git a/platform/thead/c910/platform.c b/platform/thead/c910/platform.c
index 9d98a31..adb1a20 100644
--- a/platform/thead/c910/platform.c
+++ b/platform/thead/c910/platform.c
@@ -106,25 +106,11 @@ static int c910_system_shutdown(u32 type)
return 0;
}
-void sbi_boot_other_core(int hartid)
+int c910_hart_start(u32 hartid, ulong saddr)
{
- csr_write(CSR_MRVBR, FW_TEXT_START);
+ csr_write(CSR_MRVBR, saddr);
csr_write(CSR_MRMR, csr_read(CSR_MRMR) | (1 << hartid));
-}
-static int c910_vendor_ext_provider(long extid, long funcid,
- unsigned long *args,
- unsigned long *out_value,
- struct sbi_trap_info *out_trap)
-{
- switch (extid) {
- case SBI_EXT_VENDOR_C910_BOOT_OTHER_CORE:
- sbi_boot_other_core((int)args[0]);
- break;
- default:
- sbi_printf("Unsupported private sbi call: %ld\n", extid);
- asm volatile ("ebreak");
- }
return 0;
}
@@ -143,7 +129,7 @@ const struct sbi_platform_operations platform_ops = {
.system_shutdown = c910_system_shutdown,
- .vendor_ext_provider = c910_vendor_ext_provider,
+ .hart_start = c910_hart_start,
};
const struct sbi_platform platform = {
diff --git a/platform/thead/c910/platform.h b/platform/thead/c910/platform.h
index 5e74128..0faf2af 100644
--- a/platform/thead/c910/platform.h
+++ b/platform/thead/c910/platform.h
@@ -10,7 +10,8 @@
#define SBI_THEAD_FEATURES \
(SBI_PLATFORM_HAS_SCOUNTEREN | \
SBI_PLATFORM_HAS_MCOUNTEREN | \
- SBI_PLATFORM_HAS_MFAULTS_DELEGATION)
+ SBI_PLATFORM_HAS_MFAULTS_DELEGATION | \
+ SBI_PLATFORM_HAS_HART_SECONDARY_BOOT)
#define CSR_MCOR 0x7c2
#define CSR_MHCR 0x7c1
@@ -21,8 +22,6 @@
#define CSR_MRMR 0x7c6
#define CSR_MRVBR 0x7c7
-#define SBI_EXT_VENDOR_C910_BOOT_OTHER_CORE 0x09000003
-
#define C910_PLIC_CLINT_OFFSET 0x04000000 /* 64M */
#define C910_PLIC_DELEG_OFFSET 0x001ffffc
#define C910_PLIC_DELEG_ENABLE 0x1