Compare commits
	
		
			4 commits
		
	
	
		
			ae7b904abc
			...
			7d658ad704
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 7d658ad704 | ||
|  | e409015ff8 | ||
|  | 2b80cb9a9b | ||
|  | 13fb110417 | 
							
								
								
									
										15
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								src/main.rs
									
									
									
									
									
								
							|  | @ -16,10 +16,15 @@ unsafe extern "C" fn _enter() -> ! { | ||||||
|     asm!( |     asm!( | ||||||
|         // before we use the `la` pseudo-instruction for the first time,
 |         // before we use the `la` pseudo-instruction for the first time,
 | ||||||
|         // we need to set `gp` (google linker relaxation)
 |         // we need to set `gp` (google linker relaxation)
 | ||||||
|         ".option push", |         ".option push", // pushes the current option stack
 | ||||||
|         ".option norelax", |         ".option norelax", // disable relaxation so we can properly set `gp`
 | ||||||
|  |         // this instruction compiles to:
 | ||||||
|  |         //   1:
 | ||||||
|  |         //     auipc gp, %pcrel_hi(_global_pointer)
 | ||||||
|  |         //     addi  gp, gp, %pcrel_lo(1b)
 | ||||||
|  |         // if relaxation were on, this would simply be `mv gp, gp` or `addi gp, gp, 0`
 | ||||||
|         "la gp, _global_pointer", |         "la gp, _global_pointer", | ||||||
|         ".option pop", |         ".option pop", // pops the current option stack
 | ||||||
| 
 | 
 | ||||||
|         // set the stack pointer
 |         // set the stack pointer
 | ||||||
|         "la sp, _init_stack_top", |         "la sp, _init_stack_top", | ||||||
|  | @ -67,7 +72,9 @@ extern "C" fn start() -> ! { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[panic_handler] | #[panic_handler] | ||||||
| fn on_panic(_info: &PanicInfo) -> ! { | fn on_panic(info: &PanicInfo) -> ! { | ||||||
|  |     println!("{}", info); | ||||||
|  | 
 | ||||||
|     loop {} |     loop {} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ PHDRS { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| SECTIONS { | SECTIONS { | ||||||
|   . = ORIGIN(ram); # start at 0x8000_0000 |   . = ORIGIN(ram); # start at 0x8000_0000 (DRAM) | ||||||
| 
 | 
 | ||||||
|   .text : { # put code first |   .text : { # put code first | ||||||
|     *(.text.init) # start with anything in the .text.init section |     *(.text.init) # start with anything in the .text.init section | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue