内核的第一条指令
parent
0cf7276636
commit
b27b29d1df
@ -0,0 +1,5 @@
|
||||
.section .text.entry
|
||||
.globl _start // 声明_start是全局符号
|
||||
_start:
|
||||
li x1, 100
|
||||
|
@ -0,0 +1,48 @@
|
||||
OUTPUT_ARCH(riscv) /* 目标平台 */
|
||||
ENTRY(_start) /* 设置程序入口点为entry.asm中定义的全局符号 */
|
||||
BASE_ADDRESS = 0x80200000; /* 一个常量, 我们的kernel将来加载到这个物理地址 */
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = BASE_ADDRESS; /* 我们对 . 进行赋值, 调整接下来的段的开始位置放在我们定义的常量出 */
|
||||
/* skernel = .;*/
|
||||
|
||||
stext = .; /* .text段的开始位置 */
|
||||
.text : { /* 表示生成一个为 .text的段, 花括号内按照防止顺序表示将输入文件中的哪些段放在 当前.text段中 */
|
||||
*(.text.entry) /* entry.asm中, 我们自己定义的.text.entry段, 被放在顶部*/
|
||||
*(.text .text.*)
|
||||
}
|
||||
|
||||
. = ALIGN(4K);
|
||||
etext = .;
|
||||
srodata = .;
|
||||
.rodata : {
|
||||
*(.rodata .rodata.*)
|
||||
*(.srodata .srodata.*)
|
||||
}
|
||||
|
||||
. = ALIGN(4K);
|
||||
erodata = .;
|
||||
sdata = .;
|
||||
.data : {
|
||||
*(.data .data.*)
|
||||
*(.sdata .sdata.*)
|
||||
}
|
||||
|
||||
. = ALIGN(4K);
|
||||
edata = .;
|
||||
.bss : {
|
||||
*(.bss.stack)
|
||||
sbss = .;
|
||||
*(.bss .bss.*)
|
||||
*(.sbss .sbss.*)
|
||||
}
|
||||
|
||||
. = ALIGN(4K);
|
||||
ebss = .;
|
||||
ekernel = .;
|
||||
|
||||
/DISCARD/ : {
|
||||
*(.eh_frame)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue