riscv: add CAR interface
Add an interface to support cache as ram. Initialize stack pointer for each hart. Change-Id: Ic3920e01dd1a7f047a53de57250589000a111409 Signed-off-by: Xiang Wang <wxjstz@126.com> Reviewed-on: https://review.coreboot.org/27430 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
parent
3a1a956286
commit
35da319b72
|
@ -34,25 +34,26 @@ _start:
|
||||||
#
|
#
|
||||||
csrw mscratch, a1
|
csrw mscratch, a1
|
||||||
|
|
||||||
# N.B. This only works on low 4G of the address space
|
# initialize cache as ram
|
||||||
|
call cache_as_ram
|
||||||
|
|
||||||
|
# initialize stack point for each hart
|
||||||
# and the stack must be page-aligned.
|
# and the stack must be page-aligned.
|
||||||
la sp, _estack
|
# 0xDEADBEEF used to check stack overflow
|
||||||
|
csrr a0, mhartid
|
||||||
|
la t0, _stack
|
||||||
|
slli t1, a0, RISCV_PGSHIFT
|
||||||
|
add t0, t0, t1
|
||||||
|
li t1, 0xDEADBEEF
|
||||||
|
sd t1, 0(t0)
|
||||||
|
li t1, RISCV_PGSIZE - HLS_SIZE
|
||||||
|
add sp, t0, t1
|
||||||
|
|
||||||
# poison the stack
|
# initialize hart-local storage
|
||||||
la t1, _stack
|
csrr a0, mhartid
|
||||||
li t0, 0xdeadbeef
|
|
||||||
sd t0, 0(t1)
|
|
||||||
|
|
||||||
# make room for HLS and initialize it
|
|
||||||
addi sp, sp, -HLS_SIZE
|
|
||||||
|
|
||||||
// Once again, the docs and toolchain disagree.
|
|
||||||
// Rather than get fancy I'll just lock this down
|
|
||||||
// until it all stabilizes.
|
|
||||||
//csrr a0, mhartid
|
|
||||||
csrr a0, 0xf14
|
|
||||||
call hls_init
|
call hls_init
|
||||||
|
|
||||||
|
# initialize entry of interrupt/exception
|
||||||
la t0, trap_entry
|
la t0, trap_entry
|
||||||
csrw mtvec, t0
|
csrw mtvec, t0
|
||||||
|
|
||||||
|
@ -62,3 +63,8 @@ _start:
|
||||||
# set up the mstatus register for VM
|
# set up the mstatus register for VM
|
||||||
call mstatus_init
|
call mstatus_init
|
||||||
tail main
|
tail main
|
||||||
|
|
||||||
|
// These codes need to be implemented on a specific SoC.
|
||||||
|
.weak cache_as_ram
|
||||||
|
cache_as_ram:
|
||||||
|
ret
|
||||||
|
|
Loading…
Reference in New Issue