pub const NOBIOS_SCRIPT: &[u8] = b"\
OUTPUT_ARCH(riscv)
ENTRY(_m_start)
M_BASE_ADDRESS = 0x80000000;
S_BASE_ADDRESS = 0x80200000;
SECTIONS {
. = M_BASE_ADDRESS;
.text.m_entry : {
*(.text.m_entry)
}
.text.m_trap : {
*(.text.m_trap)
}
.bss.m_stack : {
*(.bss.m_stack)
}
.bss.m_data : {
*(.bss.m_data)
}
. = S_BASE_ADDRESS;
.text : {
__start = .;
*(.text.entry)
*(.text .text.*)
}
.rodata : ALIGN(4K) {
__rodata = .;
*(.rodata .rodata.*)
*(.srodata .srodata.*)
}
.data : ALIGN(4K) {
__data = .;
*(.data .data.*)
*(.sdata .sdata.*)
}
.bss : ALIGN(8) {
__sbss = .;
*(.bss .bss.*)
*(.sbss .sbss.*)
__ebss = .;
}
.boot : ALIGN(4K) {
__boot = .;
KEEP(*(.boot.stack))
}
__end = .;
}";Expand description
链接脚本(nobios 模式)。
M-Mode 入口在 0x80000000,S-Mode 内核在 0x80200000。
对应关系:
tg-sbi的m_entry.asm放在 M 态区域;- 章节内核
.text.entry在 S 态区域启动。