summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/fw_common.S10
-rw-r--r--include/sbi/riscv_asm.h5
2 files changed, 11 insertions, 4 deletions
diff --git a/firmware/fw_common.S b/firmware/fw_common.S
index 4c11e85..d426f15 100644
--- a/firmware/fw_common.S
+++ b/firmware/fw_common.S
@@ -132,8 +132,9 @@ _start_warm:
* s8 -> HART Stack Size
*/
csrr s6, mhartid
- li s7, PLAT_HART_COUNT
- li s8, PLAT_HART_STACK_SIZE
+ la a4, platform
+ lwu s7, RISCV_PLATFORM_HART_COUNT_OFFSET(a4)
+ lwu s8, RISCV_PLATFORM_HART_STACK_SIZE_OFFSET(a4)
/* HART ID should be within expected limit */
csrr s6, mhartid
@@ -202,8 +203,9 @@ _hartid_to_scratch:
* s1 -> HART Stack End
* s2 -> Temporary
*/
- li s0, PLAT_HART_STACK_SIZE
- li s2, PLAT_HART_COUNT
+ la s2, platform
+ lwu s0, RISCV_PLATFORM_HART_STACK_SIZE_OFFSET(s2)
+ lwu s2, RISCV_PLATFORM_HART_COUNT_OFFSET(s2)
mul s2, s2, s0
la s1, _fw_end
add s1, s1, s2
diff --git a/include/sbi/riscv_asm.h b/include/sbi/riscv_asm.h
index 516bf6f..045310b 100644
--- a/include/sbi/riscv_asm.h
+++ b/include/sbi/riscv_asm.h
@@ -81,6 +81,11 @@
#define RISCV_SCRATCH_IPI_TYPE_OFFSET (9 * __SIZEOF_POINTER__)
#define RISCV_SCRATCH_SIZE 256
+#define RISCV_PLATFORM_NAME_OFFSET (0x0)
+#define RISCV_PLATFORM_FEATURES_OFFSET (0x40)
+#define RISCV_PLATFORM_HART_COUNT_OFFSET (0x48)
+#define RISCV_PLATFORM_HART_STACK_SIZE_OFFSET (0x4c)
+
#define RISCV_TRAP_REGS_zero 0
#define RISCV_TRAP_REGS_ra 1
#define RISCV_TRAP_REGS_sp 2