59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| ##==============================================================================
 | |
| ##
 | |
| ##	crt0.S
 | |
| ##
 | |
| ##	MN10200 startup code
 | |
| ##
 | |
| ##==============================================================================
 | |
| ##
 | |
| ## Copyright (c) 1995, 1996, 1997, 1998 Cygnus Solutions
 | |
| ## 
 | |
| ## The authors hereby grant permission to use, copy, modify, distribute,
 | |
| ## and license this software and its documentation for any purpose, provided
 | |
| ## that existing copyright notices are retained in all copies and that this
 | |
| ## notice is included verbatim in any distributions. No written agreement,
 | |
| ## license, or royalty fee is required for any of the authorized uses.
 | |
| ## Modifications to this software may be copyrighted by their authors
 | |
| ## and need not follow the licensing terms described here, provided that
 | |
| ## the new terms are clearly indicated on the first page of each file where
 | |
| ## they apply.
 | |
| ##
 | |
| 	
 | |
| ##------------------------------------------------------------------------------
 | |
| 	
 | |
| 	.file	"crt0.S"
 | |
| 
 | |
| ##------------------------------------------------------------------------------
 | |
| ## Startup code
 | |
| 	.section .text
 | |
| 	.global	_start
 | |
| _start:
 | |
| 	mov _stack,a3		# Load up the stack pointer and allocate
 | |
| 				# our current frame.
 | |
| 
 | |
| 	mov _edata,a0		# Get the start/end of bss
 | |
| 	mov _end,a1
 | |
| 
 | |
| 	cmp a0,a1		# If no bss, then do nothing
 | |
| 	beqx .L0
 | |
| 
 | |
| 	sub d0,d0		# clear d0
 | |
| 
 | |
| .L1:
 | |
| 	movb d0,(a0)		# Clear a byte and bump pointer
 | |
| 	add 1,a0
 | |
| 	cmp a0,a1
 | |
| 	bnex .L1
 | |
| 
 | |
| .L0:
 | |
| 	jsr ___main
 | |
| 	sub d0,d0
 | |
| 	mov d0,d1
 | |
| 	mov d0,(a3)
 | |
| 	jsr _main		# Call main program
 | |
| 	jmp _exit		# All done, no need to return or
 | |
| 				# deallocate our stack.
 | |
| 
 | |
| 	.section .stack
 | |
| _stack:	.long 	1
 |