Skip to content

Commit 4d5e4f5

Browse files
committed
rt: configure T-Head C906 registers on ROM bootstrap
TODO: verify if ROM code has already done those for us Signed-off-by: Zhouqi Jiang <luojia@hust.edu.cn>
1 parent 6aef7f4 commit 4d5e4f5

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

sophgo-rom-rt/src/lib.rs

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,35 @@ unsafe extern "C" fn entry() -> ! {
4343
".word 0",
4444
".word 0",
4545
".word 0",
46-
"1: la sp, {stack}
46+
"1:",
47+
// configure mxstatus register
48+
// PM = 0b11 (Current privilege mode is Machine mode)
49+
// THEADISAEE = 1 (Enable T-Head ISA)
50+
// MAEE = 1 (Enable extended MMU attributes)
51+
// MHRD = 0 (Disable TLB hardware refill)
52+
// CLINTEE = 1 (CLINT usoft and utimer can be responded)
53+
// UCME = 1 (Enable extended cache instructions on U-mode)
54+
// MM = 1 (Enable hardware unaligned memory access)
55+
// PMP4K = 0 (read-only, PMP granularity 4KiB)
56+
// PMDM = 0 (allow performance counter on M-mode)
57+
// PMDS = 0 (allow performance counter on S-mode)
58+
// PMDU = 0 (allow performance counter on U-mode)
59+
" li t0, 0xc0638000
60+
csrw 0x7c0, t0",
61+
// invalid I-cache, D-cache, BHT and BTB by writing mcor register
62+
" li t2, 0x30013
63+
csrw 0x7c2, t2",
64+
// enable I-cache, D-cache by mhcr register
65+
" csrsi 0x7c1, 0x3",
66+
// load stack address
67+
" la sp, {stack}
4768
li t0, {hart_stack_size}
4869
add sp, sp, t0",
70+
// clear bss segment
4971
" la t1, sbss
5072
la t2, ebss
5173
1: bgeu t1, t2, 1f
52-
sd zero, 0(t1)
74+
sd zero, 0(t1)
5375
addi t1, t1, 8
5476
j 1b
5577
1:",

0 commit comments

Comments
 (0)