Load kernel on qemu/k210.

This commit is contained in:
Yifan Wu 2020-11-11 16:50:00 +08:00
parent 4480790386
commit 5b69a312ba
10 changed files with 1588 additions and 1 deletions

12
os/src/entry.asm Normal file
View file

@ -0,0 +1,12 @@
.section .text.entry
.globl _start
_start:
la sp, boot_stack_top
call rust_main
.section .bss.stack
.globl boot_stack
boot_stack:
.space 4096 * 16
.globl boot_stack_top
boot_stack_top:

48
os/src/linker.ld Normal file
View file

@ -0,0 +1,48 @@
OUTPUT_ARCH(riscv)
ENTRY(_start)
BASE_ADDRESS = 0x80020000;
SECTIONS
{
. = BASE_ADDRESS;
skernel = .;
stext = .;
.text : {
*(.text.entry)
*(.text)
}
. = ALIGN(4K);
etext = .;
srodata = .;
.rodata : {
*(.rodata)
}
. = ALIGN(4K);
erodata = .;
sdata = .;
.data : {
*(.data)
}
. = ALIGN(4K);
edata = .;
sbss = .;
.bss : {
*(.bss)
}
. = ALIGN(4K);
ebss = .;
.stack : {
*(.bss.stack)
}
ekernel = .;
/DISCARD/ : {
*(.eh_frame)
}
}

View file

@ -1,5 +1,12 @@
#![no_std]
#![no_main]
#![feature(global_asm)]
mod lang_items;
global_asm!(include_str!("entry.asm"));
#[no_mangle]
pub extern "C" fn rust_main() -> ! {
loop {}
}