63 lines
		
	
	
		
			875 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			875 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| // See LICENSE for license details.
 | |
| #include "encoding.h"
 | |
| 	.section .init
 | |
| 	.globl _start_1
 | |
| 	.type _start_1,@function
 | |
| 
 | |
| _start_1:
 | |
|     li t0, MSTATUS_MIE
 | |
|     csrc mstatus, t0
 | |
|     li t0, MIP_MTIP
 | |
|     csrc mie, t0
 | |
|     li t0, MIP_MEIP
 | |
|     csrc mie, t0
 | |
|     li t0, 0
 | |
|     csrc mcause, t0
 | |
| 
 | |
| 	la gp, _gp
 | |
| 	la sp, _sp
 | |
| 
 | |
| 	/* Load data section */
 | |
| 	la a0, _data_lma
 | |
| 	la a1, _data
 | |
| 	la a2, _edata
 | |
| 	bgeu a1, a2, 2f
 | |
| 1:
 | |
| 	lw t0, (a0)
 | |
| 	sw t0, (a1)
 | |
| 	addi a0, a0, 4
 | |
| 	addi a1, a1, 4
 | |
| 	bltu a1, a2, 1b
 | |
| 2:
 | |
| 
 | |
| 	/* Clear bss section */
 | |
| 	la a0, __bss_start
 | |
| 	la a1, _end
 | |
| 	bgeu a0, a1, 2f
 | |
| 1:
 | |
| 	sw zero, (a0)
 | |
| 	addi a0, a0, 4
 | |
| 	bltu a0, a1, 1b
 | |
| 2:
 | |
| 
 | |
|     /* init function*/
 | |
|     call _init_1
 | |
| 
 | |
| #ifndef __riscv_float_abi_soft
 | |
| 	/* Enable FPU */
 | |
| 	li t0, MSTATUS_FS
 | |
| 	csrs mstatus, t0
 | |
| 	csrr t1, mstatus
 | |
| 	and t1, t1, t0
 | |
| 	beqz t1, 1f
 | |
| 	fssr x0
 | |
| 1:
 | |
| #endif
 | |
| 
 | |
| 	/* argc = argv = 0 */
 | |
| 	li a0, 0
 | |
| 	li a1, 0
 | |
| 	call main
 | |
| #	tail exit
 | |
| 1:  j 1b
 |