Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'libgloss/iq2000/crt0.S')
-rw-r--r--libgloss/iq2000/crt0.S56
1 files changed, 56 insertions, 0 deletions
diff --git a/libgloss/iq2000/crt0.S b/libgloss/iq2000/crt0.S
new file mode 100644
index 000000000..12d2a5b0a
--- /dev/null
+++ b/libgloss/iq2000/crt0.S
@@ -0,0 +1,56 @@
+##==============================================================================
+##
+## crt0.S
+##
+## IQ2000 startup code
+##
+##==============================================================================
+##
+## Copyright (c) 2000, Cygnus Solutions, A Red Hat Company
+##
+## 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:
+ lui %29,%hi(__stack)
+ ori %29,%29,%lo(__stack)
+
+ lui %24,%hi(_edata) # get start of bss
+ ori %24,%24,%lo(_edata)
+
+ lui %25,%hi(_end) # get end of bss
+ ori %25,%25,%lo(_end)
+
+ beq %24,%25,.L0 # check if end and start are the same
+ # do nothing if no bss
+
+.L1:
+ sb %0,0(%24) # clear a byte and bump pointer
+ addi %24,%24,1
+ bne %24,%25,.L1
+ nop
+
+.L0:
+ jal _main # call _main to run ctors/dtors
+ nop
+ xor %4,%4,%4
+ jal main # call main program
+ xor %5,%5,%5
+ jal exit # all done, no need to return or
+ or %4,%0,%2 # exit with main's return value