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
 |