50 lines
		
	
	
		
			749 B
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			749 B
		
	
	
	
		
			ArmAsm
		
	
	
	
| // MCore StartUp Code.
 | |
| 
 | |
| 	.import	main
 | |
| 	.import	exit
 | |
| 
 | |
| 	.text
 | |
| 	.export	_start
 | |
| _start:
 | |
| 	.export	_mainCRTStartup
 | |
| _mainCRTStartup:
 | |
| 	// Initialise the stack pointer
 | |
| 	lrw	r1, _stack
 | |
| 	mov	r0, r1
 | |
| 
 | |
| 	// Zero the .bss data space
 | |
| 	lrw     r1, __bss_start__
 | |
| 	lrw     r2, __bss_end__
 | |
| 	movi	r3, 0
 | |
| .L0:	
 | |
| 	st	r3, (r1, 0)
 | |
| 	addi	r1, 4
 | |
| 	cmphs	r1, r2
 | |
| 	bf      .L0
 | |
| #ifdef __ELF__
 | |
| 	// Call the global/static constructors
 | |
| 	jbsr    _init
 | |
| 
 | |
| 	// Setup destructors to be called from exit,
 | |
| 	// just in case main never returns...
 | |
| 	lrw     r2, _fini
 | |
| 	jbsr    atexit
 | |
| #endif
 | |
| 	
 | |
| 	// Initialise the parameters to main()
 | |
| 	movi 	r2, 0	// argc 
 | |
| 	movi	r3, 0	// argv
 | |
| 	movi	r4, 0	// envp
 | |
| 
 | |
| 	// Call main
 | |
| 	jbsr	main
 | |
| 
 | |
| 	// Call exit
 | |
| 	movi	r2, 0
 | |
| 	jbsr	exit
 | |
| 
 | |
| 	// We should never reach here.
 | |
| 	bkpt
 | |
| 
 | |
| 
 |