summaryrefslogtreecommitdiffstats
path: root/libgloss/crx/crt0.S
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2004-10-05 20:00:53 +0000
committerJeff Johnston <jjohnstn@redhat.com>2004-10-05 20:00:53 +0000
commit49a8b8f05cc85693a05dede399f4dfa5a829b718 (patch)
treed2aa759d150bf5ff4687433e66bc26cd7ca0f7aa /libgloss/crx/crt0.S
parent1185687a7b7f2e707484100d48a68d074d763f15 (diff)
downloadcygnal-49a8b8f05cc85693a05dede399f4dfa5a829b718.tar.gz
cygnal-49a8b8f05cc85693a05dede399f4dfa5a829b718.tar.bz2
cygnal-49a8b8f05cc85693a05dede399f4dfa5a829b718.zip
2004-10-05 Tomer Levi <Tomer.Levi@nsc.com>
* configure.in: Support crx-*-*. * configure: regenerate. * crx/_exit.c: New file. * crx/_getenv.c: Ditto. * crx/_rename: Ditto. * crx/close.c: Ditto. * crx/configure.in: Ditto. * crx/crti.S: Ditto. * crx/crtn.S: Ditto. * crx/crt0.S: Ditto. * crx/dvz_hndl.c: Ditto. * crx/flg_hndl.c: Ditto. * crx/fstat.c: Ditto. * crx/getpid.c: Ditto. * crx/iad_hndl.c: Ditto. * crx/intable.c: Ditto. * crx/isatty.c: Ditto. * crx/kill.c: Ditto. * crx/lseek.c: Ditto. * crx/Makefile.in: Ditto. * crx/open.c: Ditto. * crx/putnum.c: Ditto. * crx/read.c: Ditto. * crx/sbrk.c: Ditto. * crx/sim.ld: Ditto. * crx/stat.c: Ditto. * crx/svc_hndl.c: Ditto. * crx/time.c: Ditto. * crx/und_hndl.c: Ditto. * crx/unlink.c: Ditto. * crx/write.c: Ditto.
Diffstat (limited to 'libgloss/crx/crt0.S')
-rw-r--r--libgloss/crx/crt0.S93
1 files changed, 93 insertions, 0 deletions
diff --git a/libgloss/crx/crt0.S b/libgloss/crx/crt0.S
new file mode 100644
index 000000000..c49849728
--- /dev/null
+++ b/libgloss/crx/crt0.S
@@ -0,0 +1,93 @@
+ ##############################################################################
+ # crt0.S -- CRX default start-up routine #
+ # #
+ # Copyright (c) 2004 National Semiconductor Corporation #
+ # #
+ # 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. #
+ # #
+ # This is the start routine of your CRX program. #
+ # It is linked with your application automatically. You can use #
+ # this routine as a template and modify it to your needs, yet this #
+ # file must be supplied for the compiler. #
+ # It is assumed that the following symbols are defined in your linker #
+ # script: __STACK_START, __ISTACK_START, __DATA_START, __DATA_END, #
+ # __DATA_IMAGE_START, __BSS_START, __BSS_END. #
+ ##############################################################################
+
+ .text
+ .align 4
+ .globl _main
+ .globl _start
+ .globl _atexit
+ .globl _exit
+ .globl __dispatch_table
+
+_start:
+
+ #----------------------------------------------------------------------------#
+ # Initialize the stack pointers. The constants __STACK_START and #
+ # __ISTACK_START should be defined in the linker script. #
+
+ movd $__STACK_START, sp
+ movd $__ISTACK_START, r0
+ mtpr r0, isp
+
+ #----------------------------------------------------------------------------#
+ # Initialize the default sections according to the linker script. #
+
+ movd $__DATA_END, r4
+ subd $__DATA_START, r4
+ movd $__DATA_START, r2
+ movd $__DATA_IMAGE_START, r3
+ bal ra, _memcpy
+ movd $__BSS_END, r4
+ subd $__BSS_START, r4
+ movd $__BSS_START, r2
+ movd $0, r3
+ bal ra, _memset
+
+ #----------------------------------------------------------------------------#
+ # Initialize the intbase (pointer to the dispatch table). #
+
+ movd $__dispatch_table, r0
+ mtpr r0, intbase
+
+ #----------------------------------------------------------------------------#
+ # Handle global and static constructurs execution and setup #
+ # destructors to be called from exit. #
+ bal ra, _init
+ movd $_fini, r2
+ bal ra, _atexit
+
+ #----------------------------------------------------------------------------#
+ # Here you may add initializations that are specific to your #
+ # environment. For example: #
+ # 1. Configure wait states and other BIU parameters in order to get #
+ # the best performance out of your target (see the specification #
+ # document). #
+ # 2. Enable maskable interrupts that should be enabled when your #
+ # program starts to execute. #
+
+
+ #----------------------------------------------------------------------------#
+ # Jump to the main function in your application. #
+
+ bal ra, _main
+
+ #----------------------------------------------------------------------------#
+ # Upon returning from the main function (if it isn't an infinite loop), #
+ # jump to the exit function. The exit function is located in the #
+ # library 'libc.a'. #
+
+ movd r0, r2 # _main return value is passed as a
+ # parameter to exit.
+ br _exit # returns control to the debugger.
+