forked from Imagelibrary/rtems
Moved start code from lib/start to libbsp.
This commit is contained in:
@@ -24,7 +24,7 @@ MP_SUPPORT = $(MP_SUPPORT_$(HAS_MP)_V)
|
||||
|
||||
# wrapup is the one that actually builds and installs the library
|
||||
# from the individual .rel files built in other directories
|
||||
SUB_DIRS = include startup clock console $(MP_SUPPORT) timer wrapup
|
||||
SUB_DIRS = include start startup clock console $(MP_SUPPORT) timer wrapup
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
|
||||
@@ -5,13 +5,16 @@
|
||||
@SET_MAKE@
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
top_builddir = .
|
||||
top_builddir = ../../..
|
||||
subdir = i960/cvme961/start
|
||||
|
||||
RTEMS_ROOT = @RTEMS_ROOT@
|
||||
PROJECT_ROOT = @PROJECT_ROOT@
|
||||
|
||||
VPATH = @srcdir@
|
||||
|
||||
PGM = ${ARCH}/start.o
|
||||
|
||||
# C source names, if any, go here -- minus the .c
|
||||
C_PIECES =
|
||||
C_FILES = $(C_PIECES:%=%.c)
|
||||
@@ -24,16 +27,14 @@ S_PIECES = start
|
||||
S_FILES = $(S_PIECES:%=%.S)
|
||||
S_O_FILES = $(S_FILES:%.S=${ARCH}/%.o)
|
||||
|
||||
SRCS = $(C_FILES) $(H_FILES) $(S_FILES)
|
||||
OBJS = $(C_O_FILES) $(S_O_FILES)
|
||||
SRCS = $(C_FILES) $(CC_FILES) $(H_FILES) $(S_FILES)
|
||||
OBJS = $(C_O_FILES) $(CC_O_FILES) $(S_O_FILES)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
|
||||
INSTALL_CHANGE = @INSTALL_CHANGE@
|
||||
|
||||
PGM = ${ARCH}/start.o
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
@@ -61,4 +62,4 @@ all: ${ARCH} $(SRCS) $(OBJS) $(PGM)
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
@@ -5,13 +5,16 @@
|
||||
@SET_MAKE@
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
top_builddir = .
|
||||
top_builddir = ../../..
|
||||
subdir = mips64orion/p4000/start
|
||||
|
||||
RTEMS_ROOT = @RTEMS_ROOT@
|
||||
PROJECT_ROOT = @PROJECT_ROOT@
|
||||
|
||||
VPATH = @srcdir@
|
||||
|
||||
PGM = ${ARCH}/start.o
|
||||
|
||||
# C source names, if any, go here -- minus the .c
|
||||
C_PIECES =
|
||||
C_FILES = $(C_PIECES:%=%.c)
|
||||
@@ -20,7 +23,7 @@ C_O_FILES = $(C_PIECES:%=${ARCH}/%.o)
|
||||
H_FILES =
|
||||
|
||||
# Assembly source names, if any, go here -- minus the .S
|
||||
S_PIECES = idt_csu
|
||||
S_PIECES = start
|
||||
S_FILES = $(S_PIECES:%=%.S)
|
||||
S_O_FILES = $(S_FILES:%.S=${ARCH}/%.o)
|
||||
|
||||
@@ -32,8 +35,6 @@ include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
|
||||
INSTALL_CHANGE = @INSTALL_CHANGE@
|
||||
|
||||
PGM = ${ARCH}/idt_csu.o
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
@@ -61,4 +62,4 @@ all: ${ARCH} $(SRCS) $(OBJS) $(PGM)
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
@@ -20,7 +20,7 @@ INSTALL_CHANGE = @INSTALL_CHANGE@
|
||||
|
||||
# wrapup is the one that actually builds and installs the library
|
||||
# from the individual .rel files built in other directories
|
||||
SUB_DIRS = include startup scitab wrapup
|
||||
SUB_DIRS = include start startup scitab wrapup
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
|
||||
@@ -5,14 +5,15 @@
|
||||
@SET_MAKE@
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
top_builddir = .
|
||||
top_builddir = ../../..
|
||||
subdir = sh/gensh1/start
|
||||
|
||||
RTEMS_ROOT = @RTEMS_ROOT@
|
||||
PROJECT_ROOT = @PROJECT_ROOT@
|
||||
|
||||
VPATH = @srcdir@
|
||||
|
||||
PGMS = ${ARCH}/start.o
|
||||
PGM = ${ARCH}/start.o
|
||||
|
||||
# C source names, if any, go here -- minus the .c
|
||||
C_PIECES =
|
||||
@@ -26,8 +27,8 @@ S_PIECES = start
|
||||
S_FILES = $(S_PIECES:%=%.S)
|
||||
S_O_FILES = $(S_FILES:%.S=${ARCH}/%.o)
|
||||
|
||||
SRCS = $(C_FILES) $(H_FILES) $(S_FILES)
|
||||
OBJS = $(C_O_FILES) $(S_O_FILES)
|
||||
SRCS = $(C_FILES) $(CC_FILES) $(H_FILES) $(S_FILES)
|
||||
OBJS = $(C_O_FILES) $(CC_O_FILES) $(S_O_FILES)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
@@ -46,11 +47,6 @@ LD_PATHS +=
|
||||
LD_LIBS +=
|
||||
LDFLAGS +=
|
||||
|
||||
# force optimization, unless start.o will not work
|
||||
# CFLAGS_PROFILE=
|
||||
# CFLAGS_DEBUG=-O3
|
||||
# CFLAGS_OPTIMIZE=-O3
|
||||
|
||||
#
|
||||
# Add your list of files to delete here. The config files
|
||||
# already know how to delete some stuff, so you may want
|
||||
@@ -62,8 +58,8 @@ CLEAN_ADDITIONS +=
|
||||
CLOBBER_ADDITIONS +=
|
||||
|
||||
all: ${ARCH} $(SRCS) $(OBJS) $(PGM)
|
||||
@$(INSTALL_VARIANT) -m 755 ${PGMS} $(PROJECT_RELEASE)/lib
|
||||
$(INSTALL_VARIANT) -m 755 ${PGM} $(PROJECT_RELEASE)/lib
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
@SET_MAKE@
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
top_builddir = .
|
||||
|
||||
RTEMS_ROOT = @RTEMS_ROOT@
|
||||
PROJECT_ROOT = @PROJECT_ROOT@
|
||||
|
||||
VPATH = @srcdir@
|
||||
|
||||
# C source names, if any, go here -- minus the .c
|
||||
C_PIECES =
|
||||
C_FILES = $(C_PIECES:%=%.c)
|
||||
C_O_FILES = $(C_PIECES:%=${ARCH}/%.o)
|
||||
|
||||
H_FILES =
|
||||
|
||||
# Assembly source names, if any, go here -- minus the .S
|
||||
S_PIECES = start
|
||||
S_FILES = $(S_PIECES:%=%.S)
|
||||
S_O_FILES = $(S_FILES:%.S=${ARCH}/%.o)
|
||||
|
||||
SRCS = $(C_FILES) $(H_FILES) $(S_FILES)
|
||||
OBJS = $(C_O_FILES) $(S_O_FILES)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
|
||||
INSTALL_CHANGE = @INSTALL_CHANGE@
|
||||
|
||||
PGM = ${ARCH}/start.o
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
DEFINES +=
|
||||
CPPFLAGS +=
|
||||
CFLAGS +=
|
||||
|
||||
LD_PATHS +=
|
||||
LD_LIBS +=
|
||||
LDFLAGS +=
|
||||
|
||||
#
|
||||
# Add your list of files to delete here. The config files
|
||||
# already know how to delete some stuff, so you may want
|
||||
# to just run 'make clean' first to see what gets missed.
|
||||
# 'make clobber' already includes 'make clean'
|
||||
#
|
||||
|
||||
CLEAN_ADDITIONS +=
|
||||
CLOBBER_ADDITIONS +=
|
||||
|
||||
all: ${ARCH} $(SRCS) $(OBJS) $(PGM)
|
||||
$(INSTALL_VARIANT) -m 755 ${PGM} $(PROJECT_RELEASE)/lib
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
@@ -1,35 +0,0 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
dnl
|
||||
dnl $Id$
|
||||
|
||||
AC_PREREQ(2.13)
|
||||
AC_INIT(start.S)
|
||||
RTEMS_TOP(../../../../..)
|
||||
AC_CONFIG_AUX_DIR(../../../../..)
|
||||
|
||||
RTEMS_CANONICAL_TARGET_CPU
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PROG_INSTALL
|
||||
# AM_INIT_AUTOMAKE(rtems-c-src-lib-start-i960,$RTEMS_VERSION,no)
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
RTEMS_ENABLE_LIBCDIR
|
||||
RTEMS_ENABLE_BARE
|
||||
|
||||
RTEMS_ENV_RTEMSBSP
|
||||
|
||||
RTEMS_CHECK_CPU
|
||||
RTEMS_CANONICAL_HOST
|
||||
|
||||
RTEMS_PROJECT_ROOT
|
||||
|
||||
dnl check target cc
|
||||
RTEMS_PROG_CC_FOR_TARGET
|
||||
RTEMS_CANONICALIZE_TOOLS
|
||||
|
||||
RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
|
||||
|
||||
# try to explicitly list a Makefile here
|
||||
AC_OUTPUT(
|
||||
Makefile
|
||||
)
|
||||
@@ -1,110 +0,0 @@
|
||||
/* entry.s
|
||||
*
|
||||
* This file contains the entry point for the application.
|
||||
* The name of this entry point is compiler dependent.
|
||||
* It jumps to the BSP which is responsible for performing
|
||||
* all initialization.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1998.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
* Copyright assigned to U.S. Government, 1994.
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.OARcorp.com/rtems/license.html.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "asm.h"
|
||||
|
||||
BEGIN_CODE
|
||||
PUBLIC(start) # GNU960 default entry point
|
||||
|
||||
SYM(start):
|
||||
mov 3, r12
|
||||
modpc r12, r12, r12 # enable tracing/trace faults
|
||||
mov g5, g5 # NOP
|
||||
mov 0, g14 # initialize constant for C
|
||||
|
||||
/*
|
||||
* zero out uninitialized data area
|
||||
*/
|
||||
zerobss:
|
||||
lda _end, r4 /* find end of .bss */
|
||||
lda _bss_start, r5 /* find beginning of .bss */
|
||||
ldconst 0, r6
|
||||
|
||||
loop: st r6, (r5) /* to zero out uninitialized */
|
||||
addo 4, r5, r5 /* data area */
|
||||
cmpobl r5, r4, loop /* loop until _end reached */
|
||||
|
||||
/* set up stack pointer:
|
||||
* The heap will begin at '_end'; its length is 'heap_size'
|
||||
* bytes. The stack will begin at the first 64-byte-aligned
|
||||
* block after the heap.
|
||||
*
|
||||
* A default value of 'heap_size' is set by linking with libnindy.a
|
||||
* The default can be overridden by redefining this symbol at link
|
||||
* time (with a line of the form 'heap_size=XXXX;' in the lnk960
|
||||
* linker specification file; or one of the form
|
||||
* "-defsym heap_size=XXXX" on the gld960 invocation line).
|
||||
*/
|
||||
|
||||
ldconst _end, sp /* set sp = address of end of heap */
|
||||
lda heap_size(sp),sp
|
||||
lda 64(sp), sp /* Now round up to 64-byte boundary */
|
||||
ldconst 0xffffffc0, r12
|
||||
and r12, sp, sp
|
||||
st sp, _stack_start /* Save for brk() routine */
|
||||
|
||||
call init_frames
|
||||
ret /* return to monitor */
|
||||
|
||||
init_frames:
|
||||
mov 0, g14 /* initialize constant for C */
|
||||
ldconst 0x3b001000, g0
|
||||
ldconst 0x00009107, g1
|
||||
modac g1, g0, g0 /* set AC controls */
|
||||
|
||||
/*
|
||||
* remember the frame, so that we can set it up if necessary
|
||||
*/
|
||||
|
||||
st fp, _start_frame
|
||||
|
||||
/*
|
||||
* Call application boot_card.
|
||||
* Someday, real values of argc and argv will be set up.
|
||||
* For now, they are set to 0.
|
||||
*/
|
||||
ldconst 0,g0
|
||||
ldconst 0,g1
|
||||
ldconst 0,g2
|
||||
call _boot_card
|
||||
ret
|
||||
|
||||
END_CODE
|
||||
|
||||
BEGIN_DATA
|
||||
|
||||
PUBLIC(_start_frame)
|
||||
PUBLIC(start_frame)
|
||||
SYM (_start_frame):
|
||||
SYM (start_frame):
|
||||
.word 0 # addr of first user frame: for gdb960
|
||||
|
||||
PUBLIC(_stack_start)
|
||||
PUBLIC(stack_start)
|
||||
SYM (_stack_start):
|
||||
SYM (stack_start):
|
||||
.word 0 # addr of first user frame: for gdb960
|
||||
|
||||
END_DATA
|
||||
|
||||
BEGIN_BSS
|
||||
PUBLIC(heap_size)
|
||||
.set heap_size,0x2000
|
||||
END_BSS
|
||||
|
||||
END
|
||||
@@ -1,64 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
@SET_MAKE@
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
top_builddir = .
|
||||
|
||||
RTEMS_ROOT = @RTEMS_ROOT@
|
||||
PROJECT_ROOT = @PROJECT_ROOT@
|
||||
|
||||
VPATH = @srcdir@
|
||||
|
||||
# C source names, if any, go here -- minus the .c
|
||||
C_PIECES =
|
||||
C_FILES = $(C_PIECES:%=%.c)
|
||||
C_O_FILES = $(C_PIECES:%=${ARCH}/%.o)
|
||||
|
||||
H_FILES =
|
||||
|
||||
# Assembly source names, if any, go here -- minus the .S
|
||||
S_PIECES = idt_csu
|
||||
S_FILES = $(S_PIECES:%=%.S)
|
||||
S_O_FILES = $(S_FILES:%.S=${ARCH}/%.o)
|
||||
|
||||
SRCS = $(C_FILES) $(CC_FILES) $(H_FILES) $(S_FILES)
|
||||
OBJS = $(C_O_FILES) $(CC_O_FILES) $(S_O_FILES)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
|
||||
INSTALL_CHANGE = @INSTALL_CHANGE@
|
||||
|
||||
PGM = ${ARCH}/idt_csu.o
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
DEFINES +=
|
||||
CPPFLAGS +=
|
||||
CFLAGS +=
|
||||
|
||||
LD_PATHS +=
|
||||
LD_LIBS +=
|
||||
LDFLAGS +=
|
||||
|
||||
#
|
||||
# Add your list of files to delete here. The config files
|
||||
# already know how to delete some stuff, so you may want
|
||||
# to just run 'make clean' first to see what gets missed.
|
||||
# 'make clobber' already includes 'make clean'
|
||||
#
|
||||
|
||||
CLEAN_ADDITIONS +=
|
||||
CLOBBER_ADDITIONS +=
|
||||
|
||||
all: ${ARCH} $(SRCS) $(OBJS) $(PGM)
|
||||
$(INSTALL_VARIANT) -m 755 ${PGM} $(PROJECT_RELEASE)/lib
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
@@ -1,35 +0,0 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
dnl
|
||||
dnl $Id$
|
||||
|
||||
AC_PREREQ(2.13)
|
||||
AC_INIT(idt_csu.S)
|
||||
RTEMS_TOP(../../../../..)
|
||||
AC_CONFIG_AUX_DIR(../../../../..)
|
||||
|
||||
RTEMS_CANONICAL_TARGET_CPU
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PROG_INSTALL
|
||||
# AM_INIT_AUTOMAKE(rtems-c-src-lib-start-mips64orion,$RTEMS_VERSION,no)
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
RTEMS_ENABLE_LIBCDIR
|
||||
RTEMS_ENABLE_BARE
|
||||
|
||||
RTEMS_ENV_RTEMSBSP
|
||||
|
||||
RTEMS_CHECK_CPU
|
||||
RTEMS_CANONICAL_HOST
|
||||
|
||||
RTEMS_PROJECT_ROOT
|
||||
|
||||
dnl check target cc
|
||||
RTEMS_PROG_CC_FOR_TARGET
|
||||
RTEMS_CANONICALIZE_TOOLS
|
||||
|
||||
RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
|
||||
|
||||
# try to explicitly list a Makefile here
|
||||
AC_OUTPUT(
|
||||
Makefile
|
||||
)
|
||||
@@ -1,299 +0,0 @@
|
||||
/*
|
||||
|
||||
Based upon IDT provided code with the following release:
|
||||
|
||||
This source code has been made available to you by IDT on an AS-IS
|
||||
basis. Anyone receiving this source is licensed under IDT copyrights
|
||||
to use it in any way he or she deems fit, including copying it,
|
||||
modifying it, compiling it, and redistributing it either with or
|
||||
without modifications. No license under IDT patents or patent
|
||||
applications is to be implied by the copyright license.
|
||||
|
||||
Any user of this software should understand that IDT cannot provide
|
||||
technical support for this software and will not be responsible for
|
||||
any consequences resulting from the use of this software.
|
||||
|
||||
Any person who transfers this source code or any derivative work must
|
||||
include the IDT copyright notice, this paragraph, and the preceeding
|
||||
two paragraphs in the transferred software.
|
||||
|
||||
COPYRIGHT IDT CORPORATION 1996
|
||||
LICENSED MATERIAL - PROGRAM PROPERTY OF IDT
|
||||
|
||||
$Id$
|
||||
*/
|
||||
|
||||
/*************************************************************************
|
||||
**
|
||||
** Copyright 1991-95 Integrated Device Technology, Inc.
|
||||
** All Rights Reserved
|
||||
**
|
||||
** idt_csu.S -- IDT stand alone startup code
|
||||
**
|
||||
**************************************************************************/
|
||||
#include <iregdef.h>
|
||||
#include <idtcpu.h>
|
||||
#include <idtmon.h>
|
||||
|
||||
|
||||
.extern _fbss,4 /* this is defined by the linker */
|
||||
.extern end,4 /* this is defined by the linker */
|
||||
|
||||
.lcomm sim_mem_cfg_struct,12
|
||||
|
||||
.text
|
||||
|
||||
|
||||
#define TMP_STKSIZE 1024
|
||||
|
||||
/**************************************************************************
|
||||
**
|
||||
** start - Typicl standalone start up code required for R3000/R4000
|
||||
**
|
||||
**
|
||||
** 1) Initialize the STATUS Register
|
||||
** a) Clear parity error bit
|
||||
** b) Set co_processor 1 usable bit ON
|
||||
** c) Clear all IntMask Enables
|
||||
** d) Set kernel/disabled mode
|
||||
** 2) Initialize Cause Register
|
||||
** a) clear software interrupt bits
|
||||
** 3) Determine FPU installed or not
|
||||
** if not, clear CoProcessor 1 usable bit
|
||||
** 4) Clear bss area
|
||||
** 5) MUST allocate temporary stack until memory size determined
|
||||
** It MUST be uncached to prevent overwriting when caches are cleared
|
||||
** 6) Install exception handlers
|
||||
** 7) Determine memory and cache sizes
|
||||
** 8) Establish permanent stack (cached or uncached as defined by bss)
|
||||
** 9) Flush Instruction and Data caches
|
||||
** 10) If there is a Translation Lookaside Buffer, Clear the TLB
|
||||
** 11) Execute initialization code if the IDT/c library is to be used
|
||||
**
|
||||
** 12) Jump to user's "main()"
|
||||
** 13) Jump to promexit
|
||||
**
|
||||
** IDT/C 5.x defines _R3000, IDT/C 6.x defines _R4000 internally.
|
||||
** This is used to mark code specific to R3xxx or R4xxx processors.
|
||||
** IDT/C 6.x defines __mips to be the ISA level for which we're
|
||||
** generating code. This is used to make sure the stack etc. is
|
||||
** double word aligned, when using -mips3 (default) or -mips2,
|
||||
** when compiling with IDT/C6.x
|
||||
**
|
||||
***************************************************************************/
|
||||
|
||||
FRAME(start,sp,0,ra)
|
||||
|
||||
.set noreorder
|
||||
#ifdef _R3000
|
||||
li v0,SR_PE|SR_CU1 /* reset parity error and set */
|
||||
/* cp1 usable */
|
||||
#endif
|
||||
#ifdef _R4000
|
||||
#if __mips==3 || defined(R4650)
|
||||
li v0,SR_CU1|SR_DE|SR_FR /* initally clear ERL, enable FPA 64bit regs*/
|
||||
/* 4650: Need fr to be set anyway */
|
||||
#else
|
||||
li v0,SR_CU1|SR_DE /* initally clear ERL, enable FPA 32bit regs*/
|
||||
#endif mips3
|
||||
#endif
|
||||
|
||||
mtc0 v0,C0_SR /* clr IntMsks/ kernel/disabled mode */
|
||||
nop
|
||||
mtc0 zero,C0_CAUSE /* clear software interrupts */
|
||||
nop
|
||||
|
||||
#ifdef _R4000
|
||||
li v0,CFG_C_NONCOHERENT # initialise default cache mode
|
||||
mtc0 v0,C0_CONFIG
|
||||
#endif
|
||||
|
||||
/*
|
||||
** check to see if an fpu is really plugged in
|
||||
*/
|
||||
li t3,0xaaaa5555 /* put a's and 5's in t3 */
|
||||
mtc1 t3,fp0 /* try to write them into fp0 */
|
||||
mtc1 zero,fp1 /* try to write zero in fp */
|
||||
mfc1 t0,fp0
|
||||
mfc1 t1,fp1
|
||||
nop
|
||||
bne t0,t3,1f /* branch if no match */
|
||||
nop
|
||||
bne t1,zero,1f /* double check for positive id */
|
||||
nop
|
||||
/* We have a FPU. clear fcsr */
|
||||
ctc1 zero, fcr31
|
||||
j 2f /* status register already correct */
|
||||
nop
|
||||
1:
|
||||
#ifdef _R3000
|
||||
li v0, SR_PE /* reset parity error/NO cp1 usable */
|
||||
#endif
|
||||
|
||||
#ifdef _R4000
|
||||
li v0,SR_DE /* clear ERL and disable FPA */
|
||||
#endif
|
||||
|
||||
mtc0 v0, C0_SR /* reset status register */
|
||||
2:
|
||||
la gp, _gp
|
||||
|
||||
la v0,_fbss /* clear bss before using it */
|
||||
la v1,end /* end of bss */
|
||||
3: sw zero,0(v0)
|
||||
bltu v0,v1,3b
|
||||
add v0,4
|
||||
|
||||
|
||||
/************************************************************************
|
||||
**
|
||||
** Temporary Stack - needed to handle stack saves until
|
||||
** memory size is determined and permanent stack set
|
||||
**
|
||||
** MUST be uncached to avoid confusion at cache
|
||||
** switching during memory sizing
|
||||
**
|
||||
*************************************************************************/
|
||||
#if __mips==3
|
||||
/* For MIPS 3, we need to be sure that the stack is aligned on a
|
||||
* double word boundary.
|
||||
*/
|
||||
andi t0, v0, 0x7
|
||||
beqz t0, 11f /* Last three bits Zero, already aligned */
|
||||
nop
|
||||
add v0, 4
|
||||
11:
|
||||
#endif
|
||||
|
||||
or v0, K1BASE /* switch to uncached */
|
||||
add v1, v0, TMP_STKSIZE /* end of bss + length of tmp stack */
|
||||
sub v1, v1, (4*4) /* overhead */
|
||||
move sp, v1 /* set sp to top of stack */
|
||||
4: sw zero, 0(v0)
|
||||
bltu v0, v1, 4b /* clear out temp stack */
|
||||
add v0, 4
|
||||
|
||||
jal init_exc_vecs /* install exception handlers */
|
||||
nop /* MUST do before memory probes */
|
||||
|
||||
la v0, 5f
|
||||
li v1, K1BASE /* force into uncached space */
|
||||
or v0, v1 /* during memory/cache probes */
|
||||
j v0
|
||||
nop
|
||||
5:
|
||||
la a0, sim_mem_cfg_struct
|
||||
jal sim_mem_cfg /* Make SIM call to get mem size */
|
||||
nop
|
||||
la a0, sim_mem_cfg_struct
|
||||
lw a0, 0(a0) /* Get memory size from struct */
|
||||
#ifdef _R3000
|
||||
jal config_Icache
|
||||
nop
|
||||
jal config_Dcache /* determine size of D & I caches */
|
||||
nop
|
||||
#endif
|
||||
#ifdef _R4000
|
||||
jal config_cache /* determine size of D & I caches */
|
||||
nop
|
||||
#endif
|
||||
|
||||
move v0, a0 /* mem_size */
|
||||
|
||||
#if __mips==3
|
||||
/* For MIPS 3, we need to be sure that the stack (and hence v0
|
||||
* here) is aligned on a double word boundary.
|
||||
*/
|
||||
andi t0, v0, 0x7
|
||||
beqz t0, 12f /* Last three bits Zero, already aligned */
|
||||
nop
|
||||
subu v0, 4 /* mem_size was not aligned on doubleword bdry????*/
|
||||
12:
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
**
|
||||
** Permanent Stack - now know top of memory, put permanent stack there
|
||||
**
|
||||
***************************************************************************/
|
||||
|
||||
la t2, _fbss /* cache mode as linked */
|
||||
and t2, 0xF0000000 /* isolate segment */
|
||||
la t1, 6f
|
||||
j t1 /* back to original cache mode */
|
||||
nop
|
||||
6:
|
||||
or v0, t2 /* stack back to original cache mode */
|
||||
addiu v0,v0,-16 /* overhead */
|
||||
move sp, v0 /* now replace count w top of memory */
|
||||
move v1, v0
|
||||
subu v1, P_STACKSIZE /* clear requested stack size */
|
||||
|
||||
7: sw zero, 0(v1) /* clear P_STACKSIZE stack */
|
||||
bltu v1,v0,7b
|
||||
add v1, 4
|
||||
.set reorder
|
||||
|
||||
#ifdef _R3000
|
||||
jal flush_Icache
|
||||
jal flush_Dcache /* flush Data & Instruction caches */
|
||||
#endif
|
||||
#ifdef _R4000
|
||||
jal flush_cache_nowrite /* flush Data & Instruction caches */
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
**
|
||||
** If this chip supports a Translation Lookaside Buffer, clear it
|
||||
**
|
||||
***************************************************************************/
|
||||
|
||||
.set noreorder
|
||||
mfc0 t1, C0_SR /* look at Status Register */
|
||||
nop
|
||||
.set reorder
|
||||
#ifdef _R3000
|
||||
li t2, SR_TS /* TLB Shutdown bit */
|
||||
and t1,t2 /* TLB Shutdown if 1 */
|
||||
bnez t1, 8f /* skip clearing if no TLB */
|
||||
#endif
|
||||
|
||||
#ifndef R4650
|
||||
jal init_tlb /* clear the tlb */
|
||||
#endif
|
||||
|
||||
|
||||
/************************************************************************
|
||||
**
|
||||
** Initialization required if using IDT/c or libc.a, standard C Lib
|
||||
**
|
||||
** can SKIP if not necessary for application
|
||||
**
|
||||
************************************************************************/
|
||||
8:
|
||||
|
||||
jal idtsim_init_sbrk
|
||||
jal idtsim_init_file
|
||||
/*********************** END I/O initialization **********************/
|
||||
|
||||
|
||||
jal main
|
||||
|
||||
jal idtsim_promexit
|
||||
|
||||
ENDFRAME(start)
|
||||
|
||||
|
||||
.globl sim_mem_cfg
|
||||
sim_mem_cfg:
|
||||
.set noat
|
||||
.set noreorder
|
||||
li AT, (0xbfc00000+((55)*8))
|
||||
jr AT
|
||||
nop
|
||||
.set at
|
||||
.set reorder
|
||||
@@ -1,69 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
@SET_MAKE@
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
top_builddir = .
|
||||
|
||||
RTEMS_ROOT = @RTEMS_ROOT@
|
||||
PROJECT_ROOT = @PROJECT_ROOT@
|
||||
|
||||
VPATH = @srcdir@
|
||||
|
||||
PGMS = ${ARCH}/start.o
|
||||
|
||||
# C source names, if any, go here -- minus the .c
|
||||
C_PIECES =
|
||||
C_FILES = $(C_PIECES:%=%.c)
|
||||
C_O_FILES = $(C_PIECES:%=${ARCH}/%.o)
|
||||
|
||||
H_FILES =
|
||||
|
||||
# Assembly source names, if any, go here -- minus the .S
|
||||
S_PIECES = start
|
||||
S_FILES = $(S_PIECES:%=%.S)
|
||||
S_O_FILES = $(S_FILES:%.S=${ARCH}/%.o)
|
||||
|
||||
SRCS = $(C_FILES) $(H_FILES) $(S_FILES)
|
||||
OBJS = $(C_O_FILES) $(S_O_FILES)
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(RTEMS_ROOT)/make/leaf.cfg
|
||||
|
||||
INSTALL_CHANGE = @INSTALL_CHANGE@
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
DEFINES +=
|
||||
CPPFLAGS +=
|
||||
CFLAGS +=
|
||||
|
||||
LD_PATHS +=
|
||||
LD_LIBS +=
|
||||
LDFLAGS +=
|
||||
|
||||
# force optimization, unless start.o will not work
|
||||
# CFLAGS_PROFILE=
|
||||
# CFLAGS_DEBUG=-O3
|
||||
# CFLAGS_OPTIMIZE=-O3
|
||||
|
||||
#
|
||||
# Add your list of files to delete here. The config files
|
||||
# already know how to delete some stuff, so you may want
|
||||
# to just run 'make clean' first to see what gets missed.
|
||||
# 'make clobber' already includes 'make clean'
|
||||
#
|
||||
|
||||
CLEAN_ADDITIONS +=
|
||||
CLOBBER_ADDITIONS +=
|
||||
|
||||
all: ${ARCH} $(SRCS) $(OBJS) $(PGM)
|
||||
@$(INSTALL_VARIANT) -m 755 ${PGMS} $(PROJECT_RELEASE)/lib
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
@@ -1,35 +0,0 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
dnl
|
||||
dnl $Id$
|
||||
|
||||
AC_PREREQ(2.13)
|
||||
AC_INIT(start.S)
|
||||
RTEMS_TOP(../../../../..)
|
||||
AC_CONFIG_AUX_DIR(../../../../..)
|
||||
|
||||
RTEMS_CANONICAL_TARGET_CPU
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PROG_INSTALL
|
||||
# AM_INIT_AUTOMAKE(rtems-c-src-lib-start-sh,$RTEMS_VERSION,no)
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
RTEMS_ENABLE_LIBCDIR
|
||||
RTEMS_ENABLE_BARE
|
||||
|
||||
RTEMS_ENV_RTEMSBSP
|
||||
|
||||
RTEMS_CHECK_CPU
|
||||
RTEMS_CANONICAL_HOST
|
||||
|
||||
RTEMS_PROJECT_ROOT
|
||||
|
||||
dnl check target cc
|
||||
RTEMS_PROG_CC_FOR_TARGET
|
||||
RTEMS_CANONICALIZE_TOOLS
|
||||
|
||||
RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
|
||||
|
||||
# try to explicitly list a Makefile here
|
||||
AC_OUTPUT(
|
||||
Makefile
|
||||
)
|
||||
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Authors: Ralf Corsepius (corsepiu@faw.uni-ulm.de) and
|
||||
* Bernd Becker (becker@faw.uni-ulm.de)
|
||||
*
|
||||
* COPYRIGHT (c) 1997-1998, FAW Ulm, Germany
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*
|
||||
* COPYRIGHT (c) 1998.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
* Copyright assigned to U.S. Government, 1994.
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.OARcorp.com/rtems/license.html.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "asm.h"
|
||||
|
||||
BEGIN_CODE
|
||||
PUBLIC(start)
|
||||
SYM (start):
|
||||
! install the stack pointer
|
||||
mov.l stack_k,r15
|
||||
|
||||
! zero out bss
|
||||
mov.l edata_k,r0
|
||||
mov.l end_k,r1
|
||||
mov #0,r2
|
||||
0:
|
||||
mov.l r2,@r0
|
||||
add #4,r0
|
||||
cmp/ge r0,r1
|
||||
bt 0b
|
||||
|
||||
! copy the vector table from rom to ram
|
||||
mov.l vects_k,r0 ! vectab
|
||||
mov #0,r1 ! address of boot vector table
|
||||
mov #0,r2 ! number of bytes copied
|
||||
mov.w vects_size,r3 ! size of entries in vectab
|
||||
1:
|
||||
mov.l @r1+,r4
|
||||
mov.l r4,@r0
|
||||
add #4,r0
|
||||
add #1,r2
|
||||
cmp/hi r3,r2
|
||||
bf 1b
|
||||
|
||||
mov.l vects_k,r0 ! update vbr to point to vectab
|
||||
ldc r0,vbr
|
||||
|
||||
! call the mainline
|
||||
mov #0,r4 ! argc
|
||||
mov.l main_k,r0
|
||||
jsr @r0
|
||||
mov #0,r5 ! argv
|
||||
|
||||
! call exit
|
||||
mov r0,r4
|
||||
mov.l exit_k,r0
|
||||
jsr @r0
|
||||
or r0,r0
|
||||
|
||||
END_CODE
|
||||
|
||||
.align 2
|
||||
stack_k:
|
||||
.long SYM(stack)
|
||||
edata_k:
|
||||
.long SYM(edata)
|
||||
end_k:
|
||||
.long SYM(end)
|
||||
main_k:
|
||||
.long SYM(boot_card)
|
||||
exit_k:
|
||||
.long SYM(exit)
|
||||
|
||||
vects_k:
|
||||
.long SYM(vectab)
|
||||
vects_size:
|
||||
.word 255
|
||||
|
||||
#ifdef __ELF__
|
||||
.section .stack,"aw"
|
||||
#else
|
||||
.section .stack
|
||||
#endif
|
||||
SYM(stack):
|
||||
.long 0xdeaddead
|
||||
Reference in New Issue
Block a user