Made the kernel higher half
This commit is contained in:
parent
ed25810927
commit
62fefbc836
8 changed files with 336 additions and 149 deletions
95
linker.ld
95
linker.ld
|
|
@ -1,35 +1,86 @@
|
|||
OUTPUT_ARCH(riscv)
|
||||
ENTRY(_start)
|
||||
|
||||
MEMORY
|
||||
{
|
||||
RAM (rwx) : ORIGIN = 0x80200000, LENGTH = 126M
|
||||
}
|
||||
KERNEL_PHYS_BASE = 0x80200000;
|
||||
KERNEL_VIRT_OFFSET = 0xffffffc000000000;
|
||||
BOOT_STACK_SIZE = 0x10000;
|
||||
KERNEL_STACK_SIZE = 0x10000;
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text : {
|
||||
*(.text.init)
|
||||
*(.text .text.*)
|
||||
} > RAM
|
||||
. = KERNEL_PHYS_BASE;
|
||||
|
||||
.rodata : {
|
||||
*(.rodata .rodata.*)
|
||||
} > RAM
|
||||
__boot_phys_start = .;
|
||||
|
||||
.data : {
|
||||
*(.data .data.*)
|
||||
} > RAM
|
||||
.boot.text : ALIGN(0x1000) {
|
||||
*(.boot.text)
|
||||
*(.boot.text.*)
|
||||
}
|
||||
|
||||
.bss : {
|
||||
__bss_start = .;
|
||||
*(.bss .bss.*)
|
||||
*(COMMON)
|
||||
__bss_end = .;
|
||||
} > RAM
|
||||
.boot.rodata : ALIGN(0x1000) {
|
||||
*(.boot.rodata)
|
||||
*(.boot.rodata.*)
|
||||
}
|
||||
|
||||
.boot.data : ALIGN(0x1000) {
|
||||
*(.boot.data)
|
||||
*(.boot.data.*)
|
||||
}
|
||||
|
||||
.boot.bss (NOLOAD) : ALIGN(0x1000) {
|
||||
*(.boot.bss)
|
||||
*(.boot.bss.*)
|
||||
}
|
||||
|
||||
. = ALIGN(16);
|
||||
__stack_top = . + 0x10000;
|
||||
. += BOOT_STACK_SIZE;
|
||||
__boot_stack_top = .;
|
||||
. = ALIGN(0x1000);
|
||||
PROVIDE(__memory_start = .);
|
||||
__boot_phys_end = .;
|
||||
|
||||
__kernel_phys_start = .;
|
||||
. = KERNEL_VIRT_OFFSET + __kernel_phys_start;
|
||||
__kernel_start = .;
|
||||
__kernel_virt_start = .;
|
||||
|
||||
.text : AT(ADDR(.text) - KERNEL_VIRT_OFFSET) ALIGN(0x1000) {
|
||||
*(.text)
|
||||
*(.text.*)
|
||||
}
|
||||
|
||||
.rodata : AT(ADDR(.rodata) - KERNEL_VIRT_OFFSET) ALIGN(0x1000) {
|
||||
*(.rodata)
|
||||
*(.rodata.*)
|
||||
}
|
||||
|
||||
.data : AT(ADDR(.data) - KERNEL_VIRT_OFFSET) ALIGN(0x1000) {
|
||||
PROVIDE(__global_pointer$ = . + 0x800);
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
*(.sdata)
|
||||
*(.sdata.*)
|
||||
}
|
||||
|
||||
.bss : AT(ADDR(.bss) - KERNEL_VIRT_OFFSET) ALIGN(0x1000) {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
*(.bss.*)
|
||||
*(.sbss)
|
||||
*(.sbss.*)
|
||||
*(COMMON)
|
||||
. = ALIGN(16);
|
||||
. += KERNEL_STACK_SIZE;
|
||||
__stack_top = .;
|
||||
__bss_end = .;
|
||||
}
|
||||
|
||||
__kernel_end = ALIGN(., 0x1000);
|
||||
__kernel_virt_end = __kernel_end;
|
||||
__kernel_phys_end = __kernel_end - KERNEL_VIRT_OFFSET;
|
||||
__memory_start = __kernel_phys_end;
|
||||
|
||||
/DISCARD/ : {
|
||||
*(.eh_frame)
|
||||
*(.eh_frame_hdr)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue