diff options
-rw-r--r-- | firmware/fw_common.S | 10 | ||||
-rw-r--r-- | include/sbi/riscv_asm.h | 5 |
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 |