parent
							
								
									1e5f901926
								
							
						
					
					
						commit
						45c2ec0b17
					
				| @ -0,0 +1,49 @@ | ||||
| /* Copy from bbl-ucore : https://ring00.github.io/bbl-ucore      */ | ||||
| 
 | ||||
| /* Simple linker script for the ucore kernel. | ||||
|    See the GNU ld 'info' manual ("info ld") to learn the syntax. */ | ||||
| 
 | ||||
| OUTPUT_ARCH(riscv) | ||||
| ENTRY(_start) | ||||
| 
 | ||||
| BASE_ADDRESS = 0xffffffffc0010000; | ||||
| 
 | ||||
| SECTIONS | ||||
| { | ||||
|     /* Load the kernel at this address: "." means the current address */ | ||||
|     . = BASE_ADDRESS; | ||||
|     start = .; | ||||
| 
 | ||||
|     .text : { | ||||
|         stext = .; | ||||
|         *(.text.entry) | ||||
|         *(.text .text.*) | ||||
|         . = ALIGN(4K); | ||||
|         etext = .; | ||||
|     } | ||||
| 
 | ||||
|     .rodata : { | ||||
|         srodata = .; | ||||
|         *(.rodata .rodata.*) | ||||
|         . = ALIGN(4K); | ||||
|         erodata = .; | ||||
|     } | ||||
| 
 | ||||
|     .data : { | ||||
|         sdata = .; | ||||
|         *(.data .data.*) | ||||
|         edata = .; | ||||
|     } | ||||
| 
 | ||||
|     .stack : { | ||||
|         *(.bss.stack) | ||||
|     } | ||||
| 
 | ||||
|     .bss : { | ||||
|         sbss = .; | ||||
|         *(.bss .bss.*) | ||||
|         ebss = .; | ||||
|     } | ||||
| 
 | ||||
|     PROVIDE(end = .); | ||||
| } | ||||
| @ -0,0 +1,30 @@ | ||||
|     .section .text.entry | ||||
|     .globl _start | ||||
| _start: | ||||
|     # a0 == hartid | ||||
|     # pc == 0x80010000 | ||||
|     # sp == 0x8000xxxx | ||||
| 
 | ||||
|     # 1. set sp | ||||
|     # sp = bootstack + (hartid + 1) * 0x10000 | ||||
|     add     t0, a0, 1 | ||||
|     slli    t0, t0, 14 | ||||
|     lui     sp, %hi(bootstack) | ||||
|     add     sp, sp, t0 | ||||
| 
 | ||||
|     # 1.1 set device tree paddr | ||||
|     # OpenSBI give me 0 ??? | ||||
|     li      a1, 0x800003b0 | ||||
| 
 | ||||
|     # 2. jump to rust_main (absolute address) | ||||
|     lui     t0, %hi(rust_main) | ||||
|     addi    t0, t0, %lo(rust_main) | ||||
|     jr      t0 | ||||
| 
 | ||||
|     .section .bss.stack | ||||
|     .align 12   # page align | ||||
|     .global bootstack | ||||
| bootstack: | ||||
|     .space 4096 * 4 * 2 | ||||
|     .global bootstacktop | ||||
| bootstacktop: | ||||
											
												
													File diff suppressed because one or more lines are too long
												
											
										
									
								
											
												Binary file not shown.
											
										
									
								
					Loading…
					
					
				
		Reference in new issue