summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/c4x/c4xsim/start
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2000-02-22 18:39:52 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2000-02-22 18:39:52 +0000
commit61ba976360804d85f9203821518bb4b132852188 (patch)
tree28e72dd94472e21da42f5f5d1e82912a9f83852a /c/src/lib/libbsp/c4x/c4xsim/start
parentAdding information on prebuilt toolset binaries. (diff)
downloadrtems-61ba976360804d85f9203821518bb4b132852188.tar.bz2
New port of RTEMS to TI C3x and C4x.
Diffstat (limited to 'c/src/lib/libbsp/c4x/c4xsim/start')
-rw-r--r--c/src/lib/libbsp/c4x/c4xsim/start/Makefile.am32
-rw-r--r--c/src/lib/libbsp/c4x/c4xsim/start/start.S71
2 files changed, 103 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/c4x/c4xsim/start/Makefile.am b/c/src/lib/libbsp/c4x/c4xsim/start/Makefile.am
new file mode 100644
index 0000000000..824d7a22c5
--- /dev/null
+++ b/c/src/lib/libbsp/c4x/c4xsim/start/Makefile.am
@@ -0,0 +1,32 @@
+##
+## $Id$
+##
+
+AUTOMAKE_OPTIONS = foreign 1.4
+
+PGM = $(ARCH)/start.o
+
+S_FILES = start.S
+S_O_FILES = $(S_FILES:%.S=$(ARCH)/%.o)
+
+OBJS = $(S_O_FILES)
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../../../../../../automake/lib.am
+
+#
+# (OPTIONAL) Add local stuff here using +=
+#
+
+$(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).o: $(PGM)
+ $(INSTALL_DATA) $< $@
+
+TMPINSTALL_FILES += $(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).o
+
+all-local: $(ARCH) $(OBJS) $(PGM) $(TMPINSTALL_FILES)
+
+.PRECIOUS: $(PGM)
+
+EXTRA_DIST = start.S
+
+include $(top_srcdir)/../../../../../../automake/local.am
diff --git a/c/src/lib/libbsp/c4x/c4xsim/start/start.S b/c/src/lib/libbsp/c4x/c4xsim/start/start.S
new file mode 100644
index 0000000000..2123fc24c3
--- /dev/null
+++ b/c/src/lib/libbsp/c4x/c4xsim/start/start.S
@@ -0,0 +1,71 @@
+/*
+ * This start.S is a combination of the files boot.s and crt0.s
+ * provided by Herman ...XXX
+ */
+
+ ; .file "crt0.s"
+ .ref _c_int00
+ .global start
+ .global _start
+
+ .if .tms320C40
+
+ .sect ".const"
+mem_control:
+ .word 000100000h
+mem_data:
+ .word 03ef78050h
+
+ .text
+start:
+_start:
+ ldi 0800h,st
+ ldp @mem_control
+ ldi @mem_control,ar0
+ ldp @mem_data
+ ldi @mem_data,r0
+ sti r0,*+ar0(0)
+ sti r0,*+ar0(4)
+ br _c_int00
+
+ .else
+
+ .sect ".const"
+mem_control:
+ .word 000808000h
+mem_data:
+ .word 000001f00h
+
+ .text
+start:
+_start:
+ ldi 0800h,st
+ ldp @mem_control
+ ldi @mem_control,ar0
+ ldp @mem_data
+ ldi @mem_data,r0
+ sti r0,*+ar0(0)
+ sti r0,*+ar0(4)
+ br _c_int00
+
+ .endif
+ ; .file "boot.s"
+ .global __stack
+ .global _c_int00
+ .ref .bss
+ .ref _boot_card
+ .ref _exit
+
+__stack: .usect ".stack",0
+ .text
+stack_addr: .word __stack
+
+_c_int00:
+ ldp stack_addr
+ ldi @stack_addr,sp
+ ldi sp,ar3
+ ldp .bss ; For the small model, set up the DP to .bss
+ ldi 0,ar2 ; make sure argc=0 with regparm
+ push ar2 ; and memparm
+ call _boot_card
+ call _sim_exit