Commit 360210ff by zhangyukun223

change am

parent 976bbc0c
# .section entry, "ax"
# .globl _start
# .type _start, @function
# _start:
# mv s0, zero
# la sp, _stack_pointer
# call _trm_init
.section entry, "ax" .section entry, "ax"
.global _start .globl _start
.type _start, @function .type _start, @function
_start: _start:
mv s0, zero mv s0, zero
# 初始化栈指针
la sp, _stack_pointer la sp, _stack_pointer
call _trm_init
# .section entry, "ax"
# .global _start
# .type _start, @function
# _start:
# mv s0, zero
# # 初始化栈指针
# la sp, _stack_pointer
# 调用 bootloader_copy_data() # # 调用 bootloader_copy_data()
call bootloader_copy_data # call bootloader_copy_data
# 调用 clear_bss() # # 调用 clear_bss()
call clear_bss # call clear_bss
# 调用主程序 # # 调用主程序
call _trm_init # call _trm_init
...@@ -31,27 +31,27 @@ void _trm_init() { ...@@ -31,27 +31,27 @@ void _trm_init() {
halt(ret); halt(ret);
} }
extern char _data_lma[]; // extern char _data_lma[];
extern char _data_lma_end[]; // extern char _data_lma_end[];
extern char _data_start[]; // extern char _data_start[];
extern char _data_end[]; // extern char _data_end[];
void bootloader_copy_data() { // void bootloader_copy_data() {
char *src = _data_lma; // char *src = _data_lma;
char *dst = _data_start; // char *dst = _data_start;
while (src < _data_lma_end) { // while (src < _data_lma_end) {
*dst++ = *src++; // *dst++ = *src++;
} // }
} // }
extern char _bss_start[]; // extern char _bss_start[];
extern char _bss_end[]; // extern char _bss_end[];
void clear_bss() { // void clear_bss() {
volatile char *dst = _bss_start; // volatile char *dst = _bss_start;
while (dst < _bss_end) { // while (dst < _bss_end) {
*dst++ = 0; // *dst++ = 0;
} // }
} // }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment