* iq2000/crt0.S (__dso_handle): Define (weak).
        * frv/crt0.S (__dso_handle): Define (weak).
        * mn10300/crt0.S (___dso_handle): Define (weak).
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| ##==============================================================================
 | |
| ##
 | |
| ##	crt0.S
 | |
| ##
 | |
| ##	MN10300 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-8,a0		# Load up the stack pointer
 | |
| 	mov a0,sp
 | |
| 
 | |
| 	mov _edata,a0		# Get the start/end of bss
 | |
| 	mov _end,a1
 | |
| 
 | |
| 	cmp a0,a1		# If no bss, then do nothing
 | |
| 	beq .L0
 | |
| 
 | |
| 	clr d0			# clear d0
 | |
| 
 | |
| .L1:
 | |
| 	movbu d0,(a0)		# Clear a byte and bump pointer
 | |
| 	inc a0
 | |
| 	cmp a0,a1
 | |
| 	bne .L1
 | |
| 
 | |
| .L0:
 | |
| 	call ___main,[],0	# Call __main to run ctors/dtors
 | |
| 	clr d0
 | |
| 	clr d1
 | |
| 	mov d0,(4,sp)
 | |
| 	call _main,[],0		# Call main program
 | |
| 	call _exit,[],0		# All done, no need to return or
 | |
| 				# deallocate our stack.
 | |
| 
 | |
| 	.section .stack
 | |
| _stack:	.long 	1
 | |
| 
 | |
| 	.section .data
 | |
| 	.global ___dso_handle
 | |
| 	.weak ___dso_handle
 | |
| ___dso_handle:
 | |
| 	.long	0
 |