Modify boot.S
This commit is contained in:
parent
861795f8bd
commit
32977dd301
|
@ -226,10 +226,10 @@ __attribute__((__always_inline__)) static inline void arch_set_return(struct tra
|
||||||
// TODO: refer to jh7110 Linux
|
// TODO: refer to jh7110 Linux
|
||||||
struct thread_info {
|
struct thread_info {
|
||||||
unsigned long flags; /* low level flags */
|
unsigned long flags; /* low level flags */
|
||||||
int preempt_count; /* 0=>preemptible, <0=>BUG */
|
long preempt_count; /* 0=>preemptible, <0=>BUG */
|
||||||
long kernel_sp; /* Kernel stack pointer */
|
long kernel_sp; /* Kernel stack pointer */
|
||||||
long user_sp; /* User stack pointer */
|
long user_sp; /* User stack pointer */
|
||||||
int cpu;
|
long cpu;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <asm/csr.h>
|
#include <asm/csr.h>
|
||||||
#include "core.h"
|
|
||||||
#include "memlayout.h"
|
#include "memlayout.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -61,8 +60,7 @@ clear_bss_done:
|
||||||
|
|
||||||
/* Restore C environment */
|
/* Restore C environment */
|
||||||
la tp, init_thread_info
|
la tp, init_thread_info
|
||||||
sw zero, TASK_TI_CPU(tp)
|
sw zero, 32(tp)
|
||||||
la sp, init_thread_union + THREAD_SIZE
|
|
||||||
|
|
||||||
/* Start the kernel */
|
/* Start the kernel */
|
||||||
tail bootmain
|
tail bootmain
|
||||||
|
@ -70,7 +68,7 @@ clear_bss_done:
|
||||||
relocate_enable_mmu:
|
relocate_enable_mmu:
|
||||||
/* Relocate return address */
|
/* Relocate return address */
|
||||||
la a1, kernel_map
|
la a1, kernel_map
|
||||||
ld a1, KERNEL_MAP_VIRT_ADDR(a1)
|
ld a1, 0(a1)
|
||||||
la a2, _start
|
la a2, _start
|
||||||
sub a1, a1, a2
|
sub a1, a1, a2
|
||||||
add ra, ra, a1
|
add ra, ra, a1
|
||||||
|
|
|
@ -39,7 +39,6 @@
|
||||||
OUTPUT_ARCH(riscv)
|
OUTPUT_ARCH(riscv)
|
||||||
OUTPUT_FORMAT("elf64-littleriscv", "elf64-littleriscv", "elf64-littleriscv")
|
OUTPUT_FORMAT("elf64-littleriscv", "elf64-littleriscv", "elf64-littleriscv")
|
||||||
|
|
||||||
/* ENTRY(_start) */
|
|
||||||
ENTRY( _boot_start )
|
ENTRY( _boot_start )
|
||||||
|
|
||||||
MEMORY {
|
MEMORY {
|
||||||
|
@ -85,27 +84,15 @@ SECTIONS
|
||||||
PROVIDE(boot_end_addr = .);
|
PROVIDE(boot_end_addr = .);
|
||||||
}
|
}
|
||||||
|
|
||||||
. = ALIGN(0x1000);
|
|
||||||
.text : {
|
.text : {
|
||||||
. = ALIGN(0x1000);
|
. = ALIGN(0x1000);
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
}
|
}
|
||||||
|
|
||||||
. = ALIGN(0x1000);
|
|
||||||
.data : {
|
.data : {
|
||||||
. = ALIGN(16);
|
. = ALIGN(0x1000);
|
||||||
*(.sdata .sdata.*)
|
|
||||||
. = ALIGN(16);
|
|
||||||
*(.data .data.*)
|
*(.data .data.*)
|
||||||
|
|
||||||
__start_init_task = .;
|
|
||||||
init_thread_union = .;
|
|
||||||
init_stack = .;
|
|
||||||
KEEP(*(.data..init_task))
|
|
||||||
KEEP(*(.data..init_thread_info))
|
|
||||||
. = __start_init_task + ((1 << (12)) << (2));
|
|
||||||
__end_init_task = .;
|
|
||||||
|
|
||||||
. = ALIGN(0x1000);
|
. = ALIGN(0x1000);
|
||||||
PROVIDE(_binary_fs_img_start = .);
|
PROVIDE(_binary_fs_img_start = .);
|
||||||
*(.rawdata_fs_img*)
|
*(.rawdata_fs_img*)
|
||||||
|
@ -122,11 +109,14 @@ SECTIONS
|
||||||
PROVIDE(__init_array_end = .);
|
PROVIDE(__init_array_end = .);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sdata : {
|
||||||
. = ALIGN(0x1000);
|
. = ALIGN(0x1000);
|
||||||
_image_size = . - _start;
|
__global_pointer$ = . + 0x800;
|
||||||
|
*(.sdata*)
|
||||||
|
}
|
||||||
|
|
||||||
. = ALIGN(0x1000);
|
|
||||||
.bss : {
|
.bss : {
|
||||||
|
. = ALIGN(0x1000);
|
||||||
PROVIDE(kernel_data_begin = .);
|
PROVIDE(kernel_data_begin = .);
|
||||||
PROVIDE(__bss_start = .);
|
PROVIDE(__bss_start = .);
|
||||||
*(.bss .bss.* COMMON)
|
*(.bss .bss.* COMMON)
|
||||||
|
@ -136,11 +126,9 @@ SECTIONS
|
||||||
__bss_stop = .;
|
__bss_stop = .;
|
||||||
}
|
}
|
||||||
|
|
||||||
. = ALIGN((1 << 21));
|
. = ALIGN(0x1000);
|
||||||
.sdata : {
|
_image_size = . - _start;
|
||||||
__global_pointer$ = . + 0x800;
|
|
||||||
*(.sdata*)
|
|
||||||
}
|
|
||||||
. = ALIGN((1 << 21));
|
. = ALIGN((1 << 21));
|
||||||
_edata = .;
|
_edata = .;
|
||||||
_end = .;
|
_end = .;
|
||||||
|
|
|
@ -86,61 +86,3 @@ SECTIONS
|
||||||
_end = .;
|
_end = .;
|
||||||
PROVIDE(end = .);
|
PROVIDE(end = .);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
_start = .;
|
|
||||||
_boot_start = .;
|
|
||||||
|
|
||||||
. = ALIGN(0x1000);
|
|
||||||
.text : {
|
|
||||||
. = ALIGN(0x1000);
|
|
||||||
*(.text .text.*)
|
|
||||||
}
|
|
||||||
|
|
||||||
. = ALIGN(0x1000);
|
|
||||||
.data : {
|
|
||||||
. = ALIGN(16);
|
|
||||||
*(.sdata .sdata.*)
|
|
||||||
. = ALIGN(16);
|
|
||||||
*(.data .data.*)
|
|
||||||
|
|
||||||
__start_init_task = .;
|
|
||||||
init_thread_union = .;
|
|
||||||
init_stack = .;
|
|
||||||
KEEP(*(.data..init_task))
|
|
||||||
KEEP(*(.data..init_thread_info))
|
|
||||||
. = __start_init_task + ((1 << (12)) << (2));
|
|
||||||
__end_init_task = .;
|
|
||||||
|
|
||||||
|
|
||||||
PROVIDE(__init_array_start = .);
|
|
||||||
PROVIDE(__init_array_end = .);
|
|
||||||
}
|
|
||||||
|
|
||||||
. = ALIGN(0x1000);
|
|
||||||
_image_size = . - _start;
|
|
||||||
|
|
||||||
. = ALIGN(0x1000);
|
|
||||||
.bss : {
|
|
||||||
PROVIDE(kernel_data_begin = .);
|
|
||||||
PROVIDE(__bss_start = .);
|
|
||||||
*(.bss .bss.* COMMON)
|
|
||||||
. = ALIGN(0x1000);
|
|
||||||
PROVIDE(__bss_end = .);
|
|
||||||
PROVIDE(kernel_data_end = .);
|
|
||||||
__bss_stop = .;
|
|
||||||
}
|
|
||||||
|
|
||||||
. = ALIGN((1 << 21));
|
|
||||||
.sdata : {
|
|
||||||
__global_pointer$ = . + 0x800;
|
|
||||||
*(.sdata*)
|
|
||||||
}
|
|
||||||
. = ALIGN((1 << 21));
|
|
||||||
_edata = .;
|
|
||||||
_end = .;
|
|
||||||
PROVIDE(end = .);
|
|
||||||
}
|
|
||||||
*/
|
|
Loading…
Reference in New Issue