mirror of
https://github.com/cccriscv/mini-riscv-os.git
synced 2025-11-16 12:34:33 +00:00
simplify start.s
This commit is contained in:
@@ -3,24 +3,14 @@
|
|||||||
.global _start
|
.global _start
|
||||||
|
|
||||||
_start:
|
_start:
|
||||||
# setup stacks per hart
|
csrr a0, mhartid # 讀取核心代號
|
||||||
csrr t0, mhartid # read current hart id
|
bnez a0, park # 若不是 0 號核心,跳到 park 停止
|
||||||
slli t0, t0, 10 # shift left the hart id by 1024
|
la sp, stacks + STACK_SIZE # 0 號核心設定堆疊
|
||||||
la sp, stacks + STACK_SIZE # set the initial stack pointer
|
j os_main # 0 號核心跳到主程式 os_main
|
||||||
# to the end of the stack space
|
|
||||||
add sp, sp, t0 # move the current hart stack pointer
|
|
||||||
# to its place in the stack space
|
|
||||||
|
|
||||||
# park harts with id != 0
|
|
||||||
csrr a0, mhartid # read current hart id
|
|
||||||
bnez a0, park # if we're not on the hart 0
|
|
||||||
# we park the hart
|
|
||||||
|
|
||||||
j os_main # hart 0 jump to c
|
|
||||||
|
|
||||||
park:
|
park:
|
||||||
wfi
|
wfi
|
||||||
j park
|
j park
|
||||||
|
|
||||||
stacks:
|
stacks:
|
||||||
.skip STACK_SIZE * 4 # allocate space for the harts stacks
|
.skip STACK_SIZE # 分配堆疊空間
|
||||||
|
|||||||
@@ -3,24 +3,14 @@
|
|||||||
.global _start
|
.global _start
|
||||||
|
|
||||||
_start:
|
_start:
|
||||||
# setup stacks per hart
|
csrr a0, mhartid # 讀取核心代號
|
||||||
csrr t0, mhartid # read current hart id
|
bnez a0, park # 若不是 0 號核心,跳到 park 停止
|
||||||
slli t0, t0, 10 # shift left the hart id by 1024
|
la sp, stacks + STACK_SIZE # 0 號核心設定堆疊
|
||||||
la sp, stacks + STACK_SIZE # set the initial stack pointer
|
j os_main # 0 號核心跳到主程式 os_main
|
||||||
# to the end of the stack space
|
|
||||||
add sp, sp, t0 # move the current hart stack pointer
|
|
||||||
# to its place in the stack space
|
|
||||||
|
|
||||||
# park harts with id != 0
|
|
||||||
csrr a0, mhartid # read current hart id
|
|
||||||
bnez a0, park # if we're not on the hart 0
|
|
||||||
# we park the hart
|
|
||||||
|
|
||||||
j os_main # hart 0 jump to c
|
|
||||||
|
|
||||||
park:
|
park:
|
||||||
wfi
|
wfi
|
||||||
j park
|
j park
|
||||||
|
|
||||||
stacks:
|
stacks:
|
||||||
.skip STACK_SIZE * 4 # allocate space for the harts stacks
|
.skip STACK_SIZE # 分配堆疊空間
|
||||||
|
|||||||
@@ -3,24 +3,14 @@
|
|||||||
.global _start
|
.global _start
|
||||||
|
|
||||||
_start:
|
_start:
|
||||||
# setup stacks per hart
|
csrr a0, mhartid # 讀取核心代號
|
||||||
csrr t0, mhartid # read current hart id
|
bnez a0, park # 若不是 0 號核心,跳到 park 停止
|
||||||
slli t0, t0, 10 # shift left the hart id by 1024
|
la sp, stacks + STACK_SIZE # 0 號核心設定堆疊
|
||||||
la sp, stacks + STACK_SIZE # set the initial stack pointer
|
j os_main # 0 號核心跳到主程式 os_main
|
||||||
# to the end of the stack space
|
|
||||||
add sp, sp, t0 # move the current hart stack pointer
|
|
||||||
# to its place in the stack space
|
|
||||||
|
|
||||||
# park harts with id != 0
|
|
||||||
csrr a0, mhartid # read current hart id
|
|
||||||
bnez a0, park # if we're not on the hart 0
|
|
||||||
# we park the hart
|
|
||||||
|
|
||||||
j os_main # hart 0 jump to c
|
|
||||||
|
|
||||||
park:
|
park:
|
||||||
wfi
|
wfi
|
||||||
j park
|
j park
|
||||||
|
|
||||||
stacks:
|
stacks:
|
||||||
.skip STACK_SIZE * 4 # allocate space for the harts stacks
|
.skip STACK_SIZE # 分配堆疊空間
|
||||||
|
|||||||
@@ -3,24 +3,14 @@
|
|||||||
.global _start
|
.global _start
|
||||||
|
|
||||||
_start:
|
_start:
|
||||||
# setup stacks per hart
|
csrr a0, mhartid # 讀取核心代號
|
||||||
csrr t0, mhartid # read current hart id
|
bnez a0, park # 若不是 0 號核心,跳到 park 停止
|
||||||
slli t0, t0, 10 # shift left the hart id by 1024
|
la sp, stacks + STACK_SIZE # 0 號核心設定堆疊
|
||||||
la sp, stacks + STACK_SIZE # set the initial stack pointer
|
j os_main # 0 號核心跳到主程式 os_main
|
||||||
# to the end of the stack space
|
|
||||||
add sp, sp, t0 # move the current hart stack pointer
|
|
||||||
# to its place in the stack space
|
|
||||||
|
|
||||||
# park harts with id != 0
|
|
||||||
csrr a0, mhartid # read current hart id
|
|
||||||
bnez a0, park # if we're not on the hart 0
|
|
||||||
# we park the hart
|
|
||||||
|
|
||||||
j os_main # hart 0 jump to c
|
|
||||||
|
|
||||||
park:
|
park:
|
||||||
wfi
|
wfi
|
||||||
j park
|
j park
|
||||||
|
|
||||||
stacks:
|
stacks:
|
||||||
.skip STACK_SIZE * 4 # allocate space for the harts stacks
|
.skip STACK_SIZE # 分配堆疊空間
|
||||||
|
|||||||
@@ -3,24 +3,14 @@
|
|||||||
.global _start
|
.global _start
|
||||||
|
|
||||||
_start:
|
_start:
|
||||||
# setup stacks per hart
|
csrr a0, mhartid # 讀取核心代號
|
||||||
csrr t0, mhartid # read current hart id
|
bnez a0, park # 若不是 0 號核心,跳到 park 停止
|
||||||
slli t0, t0, 10 # shift left the hart id by 1024
|
la sp, stacks + STACK_SIZE # 0 號核心設定堆疊
|
||||||
la sp, stacks + STACK_SIZE # set the initial stack pointer
|
j os_main # 0 號核心跳到主程式 os_main
|
||||||
# to the end of the stack space
|
|
||||||
add sp, sp, t0 # move the current hart stack pointer
|
|
||||||
# to its place in the stack space
|
|
||||||
|
|
||||||
# park harts with id != 0
|
|
||||||
csrr a0, mhartid # read current hart id
|
|
||||||
bnez a0, park # if we're not on the hart 0
|
|
||||||
# we park the hart
|
|
||||||
|
|
||||||
j os_main # hart 0 jump to c
|
|
||||||
|
|
||||||
park:
|
park:
|
||||||
wfi
|
wfi
|
||||||
j park
|
j park
|
||||||
|
|
||||||
stacks:
|
stacks:
|
||||||
.skip STACK_SIZE * 4 # allocate space for the harts stacks
|
.skip STACK_SIZE # 分配堆疊空間
|
||||||
|
|||||||
@@ -3,24 +3,14 @@
|
|||||||
.global _start
|
.global _start
|
||||||
|
|
||||||
_start:
|
_start:
|
||||||
# setup stacks per hart
|
csrr a0, mhartid # 讀取核心代號
|
||||||
csrr t0, mhartid # read current hart id
|
bnez a0, park # 若不是 0 號核心,跳到 park 停止
|
||||||
slli t0, t0, 10 # shift left the hart id by 1024
|
la sp, stacks + STACK_SIZE # 0 號核心設定堆疊
|
||||||
la sp, stacks + STACK_SIZE # set the initial stack pointer
|
j os_main # 0 號核心跳到主程式 os_main
|
||||||
# to the end of the stack space
|
|
||||||
add sp, sp, t0 # move the current hart stack pointer
|
|
||||||
# to its place in the stack space
|
|
||||||
|
|
||||||
# park harts with id != 0
|
|
||||||
csrr a0, mhartid # read current hart id
|
|
||||||
bnez a0, park # if we're not on the hart 0
|
|
||||||
# we park the hart
|
|
||||||
|
|
||||||
j os_main # hart 0 jump to c
|
|
||||||
|
|
||||||
park:
|
park:
|
||||||
wfi
|
wfi
|
||||||
j park
|
j park
|
||||||
|
|
||||||
stacks:
|
stacks:
|
||||||
.skip STACK_SIZE * 4 # allocate space for the harts stacks
|
.skip STACK_SIZE # 分配堆疊空間
|
||||||
|
|||||||
@@ -3,24 +3,14 @@
|
|||||||
.global _start
|
.global _start
|
||||||
|
|
||||||
_start:
|
_start:
|
||||||
# setup stacks per hart
|
csrr a0, mhartid # 讀取核心代號
|
||||||
csrr t0, mhartid # read current hart id
|
bnez a0, park # 若不是 0 號核心,跳到 park 停止
|
||||||
slli t0, t0, 10 # shift left the hart id by 1024
|
la sp, stacks + STACK_SIZE # 0 號核心設定堆疊
|
||||||
la sp, stacks + STACK_SIZE # set the initial stack pointer
|
j os_main # 0 號核心跳到主程式 os_main
|
||||||
# to the end of the stack space
|
|
||||||
add sp, sp, t0 # move the current hart stack pointer
|
|
||||||
# to its place in the stack space
|
|
||||||
|
|
||||||
# park harts with id != 0
|
|
||||||
csrr a0, mhartid # read current hart id
|
|
||||||
bnez a0, park # if we're not on the hart 0
|
|
||||||
# we park the hart
|
|
||||||
|
|
||||||
j os_main # hart 0 jump to c
|
|
||||||
|
|
||||||
park:
|
park:
|
||||||
wfi
|
wfi
|
||||||
j park
|
j park
|
||||||
|
|
||||||
stacks:
|
stacks:
|
||||||
.skip STACK_SIZE * 4 # allocate space for the harts stacks
|
.skip STACK_SIZE # 分配堆疊空間
|
||||||
|
|||||||
@@ -3,24 +3,14 @@
|
|||||||
.global _start
|
.global _start
|
||||||
|
|
||||||
_start:
|
_start:
|
||||||
# setup stacks per hart
|
csrr a0, mhartid # 讀取核心代號
|
||||||
csrr t0, mhartid # read current hart id
|
bnez a0, park # 若不是 0 號核心,跳到 park 停止
|
||||||
slli t0, t0, 10 # shift left the hart id by 1024
|
la sp, stacks + STACK_SIZE # 0 號核心設定堆疊
|
||||||
la sp, stacks + STACK_SIZE # set the initial stack pointer
|
j os_main # 0 號核心跳到主程式 os_main
|
||||||
# to the end of the stack space
|
|
||||||
add sp, sp, t0 # move the current hart stack pointer
|
|
||||||
# to its place in the stack space
|
|
||||||
|
|
||||||
# park harts with id != 0
|
|
||||||
csrr a0, mhartid # read current hart id
|
|
||||||
bnez a0, park # if we're not on the hart 0
|
|
||||||
# we park the hart
|
|
||||||
|
|
||||||
j os_main # hart 0 jump to c
|
|
||||||
|
|
||||||
park:
|
park:
|
||||||
wfi
|
wfi
|
||||||
j park
|
j park
|
||||||
|
|
||||||
stacks:
|
stacks:
|
||||||
.skip STACK_SIZE * 4 # allocate space for the harts stacks
|
.skip STACK_SIZE # 分配堆疊空間
|
||||||
|
|||||||
@@ -3,32 +3,14 @@
|
|||||||
.global _start
|
.global _start
|
||||||
|
|
||||||
_start:
|
_start:
|
||||||
# setup stacks per hart
|
csrr a0, mhartid # 讀取核心代號
|
||||||
csrr t0, mhartid # read current hart id
|
bnez a0, park # 若不是 0 號核心,跳到 park 停止
|
||||||
slli t0, t0, 10 # shift left the hart id by 1024
|
la sp, stacks + STACK_SIZE # 0 號核心設定堆疊
|
||||||
la sp, stacks + STACK_SIZE # set the initial stack pointer
|
j os_main # 0 號核心跳到主程式 os_main
|
||||||
# to the end of the stack space
|
|
||||||
add sp, sp, t0 # move the current hart stack pointer
|
|
||||||
# to its place in the stack space
|
|
||||||
|
|
||||||
# park harts with id != 0
|
|
||||||
csrr a0, mhartid # read current hart id
|
|
||||||
bnez a0, park # if we're not on the hart 0
|
|
||||||
|
|
||||||
# li t0, 1 << 7
|
|
||||||
# li t0, 0xffffffff
|
|
||||||
# csrw pmpaddr0, t0
|
|
||||||
# li t0, 0xf
|
|
||||||
# csrw pmpcfg0, t0
|
|
||||||
# csrr a1, mstatus
|
|
||||||
# or t0, t0, a1
|
|
||||||
# csrw mstatus, t0
|
|
||||||
# we park the hart
|
|
||||||
j os_main # hart 0 jump to c
|
|
||||||
|
|
||||||
park:
|
park:
|
||||||
wfi
|
wfi
|
||||||
j park
|
j park
|
||||||
|
|
||||||
stacks:
|
stacks:
|
||||||
.skip STACK_SIZE * 4 # allocate space for the harts stacks
|
.skip STACK_SIZE # 分配堆疊空間
|
||||||
|
|||||||
Reference in New Issue
Block a user