内核的第一条指令
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