parent
1e5f901926
commit
45c2ec0b17
@ -0,0 +1,49 @@
|
|||||||
|
/* Copy from bbl-ucore : https://ring00.github.io/bbl-ucore */
|
||||||
|
|
||||||
|
/* Simple linker script for the ucore kernel.
|
||||||
|
See the GNU ld 'info' manual ("info ld") to learn the syntax. */
|
||||||
|
|
||||||
|
OUTPUT_ARCH(riscv)
|
||||||
|
ENTRY(_start)
|
||||||
|
|
||||||
|
BASE_ADDRESS = 0xffffffffc0010000;
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
/* Load the kernel at this address: "." means the current address */
|
||||||
|
. = BASE_ADDRESS;
|
||||||
|
start = .;
|
||||||
|
|
||||||
|
.text : {
|
||||||
|
stext = .;
|
||||||
|
*(.text.entry)
|
||||||
|
*(.text .text.*)
|
||||||
|
. = ALIGN(4K);
|
||||||
|
etext = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rodata : {
|
||||||
|
srodata = .;
|
||||||
|
*(.rodata .rodata.*)
|
||||||
|
. = ALIGN(4K);
|
||||||
|
erodata = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
.data : {
|
||||||
|
sdata = .;
|
||||||
|
*(.data .data.*)
|
||||||
|
edata = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stack : {
|
||||||
|
*(.bss.stack)
|
||||||
|
}
|
||||||
|
|
||||||
|
.bss : {
|
||||||
|
sbss = .;
|
||||||
|
*(.bss .bss.*)
|
||||||
|
ebss = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
PROVIDE(end = .);
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
.section .text.entry
|
||||||
|
.globl _start
|
||||||
|
_start:
|
||||||
|
# a0 == hartid
|
||||||
|
# pc == 0x80010000
|
||||||
|
# sp == 0x8000xxxx
|
||||||
|
|
||||||
|
# 1. set sp
|
||||||
|
# sp = bootstack + (hartid + 1) * 0x10000
|
||||||
|
add t0, a0, 1
|
||||||
|
slli t0, t0, 14
|
||||||
|
lui sp, %hi(bootstack)
|
||||||
|
add sp, sp, t0
|
||||||
|
|
||||||
|
# 1.1 set device tree paddr
|
||||||
|
# OpenSBI give me 0 ???
|
||||||
|
li a1, 0x800003b0
|
||||||
|
|
||||||
|
# 2. jump to rust_main (absolute address)
|
||||||
|
lui t0, %hi(rust_main)
|
||||||
|
addi t0, t0, %lo(rust_main)
|
||||||
|
jr t0
|
||||||
|
|
||||||
|
.section .bss.stack
|
||||||
|
.align 12 # page align
|
||||||
|
.global bootstack
|
||||||
|
bootstack:
|
||||||
|
.space 4096 * 4 * 2
|
||||||
|
.global bootstacktop
|
||||||
|
bootstacktop:
|
File diff suppressed because one or more lines are too long
Binary file not shown.
Loading…
Reference in new issue