forked from Imagelibrary/rtems
2003-02-14 Joel Sherrill <joel@OARcorp.com>
AMD a29k port declared obsolete. * a29k/.cvsignore, a29k/ChangeLog, a29k/Makefile.am, a29k/acinclude.m4, a29k/configure.ac, a29k/portsw/.cvsignore, a29k/portsw/ChangeLog, a29k/portsw/Makefile.am, a29k/portsw/README, a29k/portsw/bsp_specs, a29k/portsw/configure.ac, a29k/portsw/times, a29k/portsw/console/.cvsignore, a29k/portsw/console/Makefile.am, a29k/portsw/console/concntl.h, a29k/portsw/console/console.c, a29k/portsw/console/serial.c, a29k/portsw/console/serial.h, a29k/portsw/include/.cvsignore, a29k/portsw/include/Makefile.am, a29k/portsw/include/bsp.h, a29k/portsw/start/.cvsignore, a29k/portsw/start/Makefile.am, a29k/portsw/start/amd.ah, a29k/portsw/start/pswmacro.ah, a29k/portsw/start/register.S, a29k/portsw/start/register.ah, a29k/portsw/start/start.S, a29k/portsw/startup/.cvsignore, a29k/portsw/startup/Makefile.am, a29k/portsw/startup/bspclean.c, a29k/portsw/startup/bspstart.c, a29k/portsw/startup/linkcmds, a29k/portsw/startup/main.c, a29k/portsw/startup/ramlink, a29k/portsw/startup/romlink, a29k/portsw/startup/setvec.c, a29k/portsw/wrapup/.cvsignore, a29k/portsw/wrapup/Makefile.am: Removed.
This commit is contained in:
@@ -1,3 +1,25 @@
|
||||
2003-02-14 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
AMD a29k port declared obsolete.
|
||||
* a29k/.cvsignore, a29k/ChangeLog, a29k/Makefile.am, a29k/acinclude.m4,
|
||||
a29k/configure.ac, a29k/portsw/.cvsignore, a29k/portsw/ChangeLog,
|
||||
a29k/portsw/Makefile.am, a29k/portsw/README, a29k/portsw/bsp_specs,
|
||||
a29k/portsw/configure.ac, a29k/portsw/times,
|
||||
a29k/portsw/console/.cvsignore, a29k/portsw/console/Makefile.am,
|
||||
a29k/portsw/console/concntl.h, a29k/portsw/console/console.c,
|
||||
a29k/portsw/console/serial.c, a29k/portsw/console/serial.h,
|
||||
a29k/portsw/include/.cvsignore, a29k/portsw/include/Makefile.am,
|
||||
a29k/portsw/include/bsp.h, a29k/portsw/start/.cvsignore,
|
||||
a29k/portsw/start/Makefile.am, a29k/portsw/start/amd.ah,
|
||||
a29k/portsw/start/pswmacro.ah, a29k/portsw/start/register.S,
|
||||
a29k/portsw/start/register.ah, a29k/portsw/start/start.S,
|
||||
a29k/portsw/startup/.cvsignore, a29k/portsw/startup/Makefile.am,
|
||||
a29k/portsw/startup/bspclean.c, a29k/portsw/startup/bspstart.c,
|
||||
a29k/portsw/startup/linkcmds, a29k/portsw/startup/main.c,
|
||||
a29k/portsw/startup/ramlink, a29k/portsw/startup/romlink,
|
||||
a29k/portsw/startup/setvec.c, a29k/portsw/wrapup/.cvsignore,
|
||||
a29k/portsw/wrapup/Makefile.am: Removed.
|
||||
|
||||
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: AM_INIT_AUTOMAKE([1.7.2]).
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
aclocal.m4
|
||||
autom4te*.cache
|
||||
config.cache
|
||||
config.guess
|
||||
config.log
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
depcomp
|
||||
install-sh
|
||||
Makefile
|
||||
Makefile.in
|
||||
missing
|
||||
mkinstalldirs
|
||||
@@ -1,60 +0,0 @@
|
||||
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: AM_INIT_AUTOMAKE([1.7.2]).
|
||||
|
||||
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: AC_PREREQ(2.57).
|
||||
|
||||
2002-12-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: Remove RTEMS_CHECK_BSP_CACHE.
|
||||
|
||||
2002-10-21 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* .cvsignore: Reformat.
|
||||
Add autom4te*cache.
|
||||
Remove autom4te.cache.
|
||||
|
||||
2002-03-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac:
|
||||
AC_INIT(package,_RTEMS_VERSION,_RTEMS_BUGS).
|
||||
AM_INIT_AUTOMAKE([no-define foreign 1.6]).
|
||||
* Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
|
||||
2001-10-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* .cvsignore: Add autom4te.cache for autoconf > 2.52.
|
||||
* configure.in: Remove.
|
||||
* configure.ac: New file, generated from configure.in by autoupdate.
|
||||
|
||||
2001-10-09 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* acinclude.m4: New file.
|
||||
* configure.in: Use RTEMS_BSP_SUBDIR.
|
||||
|
||||
2000-11-09 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: Use ... instead of RTEMS_TOPdir in ACLOCAL_AMFLAGS.
|
||||
|
||||
2000-11-02 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: Switch to ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal.
|
||||
|
||||
2000-11-01 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* ChangeLog: Removed incorrectly placed entry.
|
||||
|
||||
2000-10-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: ACLOCAL_AMFLAGS= -I $(RTEMS_TOPdir)/macros.
|
||||
Switch to GNU canonicalization.
|
||||
|
||||
2000-09-25 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* ChangeLog: Entry added to wrong file and moved.
|
||||
|
||||
2000-08-10 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* ChangeLog: New file.
|
||||
@@ -1,11 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
ACLOCAL_AMFLAGS = -I ../../../../../aclocal
|
||||
|
||||
# Descend into the $(RTEMS_BSP_FAMILY) directory
|
||||
SUBDIRS = $(RTEMS_BSP_FAMILY)
|
||||
|
||||
include $(top_srcdir)/../../../../../automake/subdirs.am
|
||||
include $(top_srcdir)/../../../../../automake/local.am
|
||||
@@ -1,11 +0,0 @@
|
||||
# RTEMS_CHECK_BSPDIR(RTEMS_BSP)
|
||||
AC_DEFUN([RTEMS_CHECK_BSPDIR],
|
||||
[
|
||||
RTEMS_BSP_ALIAS(ifelse([$1],,[${RTEMS_BSP}],[$1]),bspdir)
|
||||
case "$bspdir" in
|
||||
portsw )
|
||||
AC_CONFIG_SUBDIRS([portsw]);;
|
||||
*)
|
||||
AC_MSG_ERROR([Invalid BSP]);;
|
||||
esac
|
||||
])
|
||||
@@ -1,23 +0,0 @@
|
||||
## Process this file with autoconf to produce a configure script.
|
||||
##
|
||||
## $Id$
|
||||
|
||||
AC_PREREQ(2.57)
|
||||
AC_INIT([rtems-c-src-lib-libbsp-a29k],[_RTEMS_VERSION],[rtems-bugs@OARcorp.com])
|
||||
AC_CONFIG_SRCDIR([portsw])
|
||||
RTEMS_TOP(../../../../..)
|
||||
AC_CONFIG_AUX_DIR(../../../../..)
|
||||
|
||||
RTEMS_CANONICAL_TARGET_CPU
|
||||
AM_INIT_AUTOMAKE([no-define foreign 1.7.2])
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
RTEMS_ENV_RTEMSBSP
|
||||
RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
|
||||
RTEMS_PROJECT_ROOT
|
||||
|
||||
RTEMS_CHECK_BSPDIR([$RTEMS_BSP])
|
||||
|
||||
# Explicitly list all Makefiles here
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
AC_OUTPUT
|
||||
@@ -1,14 +0,0 @@
|
||||
aclocal.m4
|
||||
autom4te*.cache
|
||||
config.cache
|
||||
config.guess
|
||||
config.log
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
depcomp
|
||||
install-sh
|
||||
Makefile
|
||||
Makefile.in
|
||||
missing
|
||||
mkinstalldirs
|
||||
@@ -1,181 +0,0 @@
|
||||
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: AM_INIT_AUTOMAKE([1.7.2]).
|
||||
|
||||
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: AC_PREREQ(2.57).
|
||||
|
||||
2002-12-17 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* console/Makefile.am: Don't include @RTEMS_BSP@.cfg.
|
||||
* start/Makefile.am: Don't include @RTEMS_BSP@.cfg.
|
||||
* startup/Makefile.am: Don't include @RTEMS_BSP@.cfg.
|
||||
|
||||
2002-12-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* start/Makefile.am: Use install-data-local to install startfile.
|
||||
|
||||
2002-12-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* wrapup/Makefile.am: Don't include @RTEMS_BSP@.cfg.
|
||||
|
||||
2002-10-21 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* .cvsignore: Reformat.
|
||||
Add autom4te*cache.
|
||||
Remove autom4te.cache.
|
||||
|
||||
2002-08-21 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* bsp_specs: Added support for -nostdlibs.
|
||||
|
||||
2002-08-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* console/Makefile.am: Use .$(OBJEXT) instead of .o.
|
||||
* start/Makefile.am: Use .$(OBJEXT) instead of .o.
|
||||
* startup/Makefile.am: Use .$(OBJEXT) instead of .o.
|
||||
* wrapup/Makefile.am: Use .$(OBJEXT) instead of .o.
|
||||
|
||||
2002-07-21 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* startup/Makefile.am: Reformat.
|
||||
|
||||
2002-07-20 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* start/Makefile.am: Eliminate PGM.
|
||||
Add bsplib_DATA = $(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).o.
|
||||
|
||||
2002-07-19 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* startup/Makefile.am: Add bsplib_DATA = linkcmds ramlink romlink.
|
||||
|
||||
2002-07-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* wrapup/Makefile.am: Eliminate TMPINSTALL_FILES.
|
||||
Remove $(OBJS) from all-local.
|
||||
|
||||
2002-06-29 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* wrapup/Makefile.am: Remove preinstallation of libbsp.a,
|
||||
|
||||
2002-03-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac:
|
||||
AC_INIT(package,_RTEMS_VERSION,_RTEMS_BUGS).
|
||||
AM_INIT_AUTOMAKE([no-define foreign 1.6]).
|
||||
* console/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
* Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
* include/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
* start/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
* startup/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
* wrapup/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
||||
|
||||
2001-12-22 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* bsp_specs: Replace -lrtemsall with -lrtemsbsp -lrtemscpu,
|
||||
replace -lrtemsall_g with -lrtemsbsp_g -lrtemscpu_g.
|
||||
|
||||
2001-12-09 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: Add RTEMS_BSPOPTS_* for SERIAL_INPUT, HIF_INPUT,
|
||||
SERIAL_OUTPUT, HIF_OUTPUT.
|
||||
* console/console.c: Remove NO_BSP_INIT, SERIAL_INPUT, HIF_INPUT,
|
||||
SERIAL_OUTPUT, HIF_OUTPUT, add #include <bsp.h>.
|
||||
|
||||
2001-11-30 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: Introduce RTEMS_BSP_CONFIGURE.
|
||||
|
||||
2001-10-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* .cvsignore: Add autom4te.cache for autoconf > 2.52.
|
||||
* configure.in: Remove.
|
||||
* configure.ac: New file, generated from configure.in by autoupdate.
|
||||
|
||||
2001-09-27 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* include/bsp.h: Renamed delay() to rtems_bsp_delay().
|
||||
|
||||
2001-09-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* include/Makefile.am: Use 'CLEANFILES ='.
|
||||
* include/Makefile.am: Use 'TMPINSTALL_FILES ='.
|
||||
|
||||
2001-05-25 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* include/Makefile.am: Use *_HEADERS instead of *H_FILES, add
|
||||
bspopts.h.
|
||||
* include/.cvsignore: Add bspopts.h.
|
||||
* include/bsp.h: Add bspopts.h.
|
||||
* console/Makefile.am: Use *_HEADERS instead of H_FILES.
|
||||
* configure.in: Add bspopts.h.
|
||||
|
||||
2001-05-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.in: Use RTEMS_PROG_CC_FOR_TARGET([-ansi -fasm]).
|
||||
|
||||
2001-01-08 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* wrapup/Makefile.am: Remove warning missed in shmsupp removal.
|
||||
|
||||
2001-01-08 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* Shared memory support removed since it was non-functional.
|
||||
* shmsupp/.cvsignore, shmsupp/Makefile.am, shmsupp/addrconv.c,
|
||||
shmsupp/getcfg.c, shmsupp/lock.c, shmsupp/mpisr.c: Removed.
|
||||
* configure.in, Makefile.am, wrapup/Makefile.am: Modified to
|
||||
reflect above.
|
||||
|
||||
2000-11-09 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: Use ... instead of RTEMS_TOPdir in ACLOCAL_AMFLAGS.
|
||||
|
||||
2000-11-02 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: Switch to ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal.
|
||||
|
||||
2000-11-01 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* startup/bspstart.c: assoc.h, error.h, libio_.h, libio.h,
|
||||
and libcsupport.h moved from libc to lib/include/rtems and
|
||||
now must be referenced as <rtems/XXX.h>. Header file order
|
||||
was cleaned up while doing this.
|
||||
|
||||
2000-10-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: ACLOCAL_AMFLAGS= -I $(RTEMS_TOPdir)/macros.
|
||||
Switch to GNU canonicalization.
|
||||
|
||||
2000-09-25 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* ChangeLog: Entry added to wrong file and moved.
|
||||
|
||||
2000-09-25 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* bsp_specs: Formatting more like other bsp_specs.
|
||||
* include/bsp.h: CPU_CLOCK_RATE_MHZ not a real variable to
|
||||
elimate need for including bsp.h in libcpu.
|
||||
* startup/bspstart.c: Ditto.
|
||||
* wrapup/Makefile.am: Did not list shmdr.
|
||||
|
||||
2000-09-22 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* start/crt0.S: Renamed to start/start.S.
|
||||
* start/start.S: Formerly start/crt0.S.
|
||||
* startup/linkcmds: New file. GNU linker script that is not
|
||||
correct for the target board but links programs.
|
||||
* bsp_specs: Use linkcmds.
|
||||
* include/Makefile.am, start/Makefile.am startup/Makefile.am:
|
||||
Now work.
|
||||
* startup/bspstart.c, startup/setvec.c: "#if 0"'ed out references
|
||||
to reoutines in assembly that are in turn "#if 0"'ed out.
|
||||
|
||||
2000-09-04 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* console/Makefile.am, shmsupp/Makefile.am, start/Makefile.am,
|
||||
startup/Makefile.am, wrapup/Makefile.am: Include compile.am.
|
||||
|
||||
2000-08-10 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* ChangeLog: New file.
|
||||
@@ -1,16 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
ACLOCAL_AMFLAGS = -I ../../../../../../aclocal
|
||||
|
||||
# wrapup is the one that actually builds and installs the library
|
||||
# from the individual .rel files built in other directories
|
||||
SUBDIRS = include start startup console wrapup
|
||||
|
||||
include $(top_srcdir)/../../bsp.am
|
||||
|
||||
EXTRA_DIST = bsp_specs times
|
||||
|
||||
include $(top_srcdir)/../../../../../../automake/subdirs.am
|
||||
include $(top_srcdir)/../../../../../../automake/local.am
|
||||
@@ -1,71 +0,0 @@
|
||||
#
|
||||
# README,v 1.2 1995/05/31 16:56:03 joel Exp
|
||||
#
|
||||
# This is a sample hardware description file for a BSP. This comment
|
||||
# block does not have to appear in a real one. The intention of this
|
||||
# file is to provide a central place to look when searching for
|
||||
# information about a board when starting a new BSP. For example,
|
||||
# you may want to find an existing timer driver for the chip you are
|
||||
# using on your board. It is easier to grep for the chip name in
|
||||
# all of the HARDWARE files than to peruse the source tree. Hopefully,
|
||||
# making the HARDDWARE files accurate will also alleviate the common
|
||||
# problem of not knowing anything about a board based on its BSP
|
||||
# name.
|
||||
#
|
||||
# NOTE: If you have a class of peripheral chip on board which
|
||||
# is not in this list please add it to this file so
|
||||
# others will also use the same name.
|
||||
#
|
||||
# Timer resolution is the way it is configured in this BSP.
|
||||
# On a counting timer, this is the length of time which
|
||||
# corresponds to 1 count.
|
||||
#
|
||||
# $Id$
|
||||
|
||||
|
||||
BSP NAME: fastsbc1
|
||||
BOARD: Fasssst Computers, Fast SBC-1
|
||||
BUS: SchoolBus
|
||||
CPU FAMILY: i386
|
||||
CPU: Intel Hexium
|
||||
COPROCESSORS: Witch Hex87
|
||||
MODE: 32 bit mode
|
||||
|
||||
DEBUG MONITOR: HexBug
|
||||
|
||||
PERIPHERALS
|
||||
===========
|
||||
TIMERS: Intel i8254
|
||||
RESOLUTION: .0001 microseconds
|
||||
SERIAL PORTS: Zilog Z8530 (with 2 ports)
|
||||
REAL-TIME CLOCK: RTC-4
|
||||
DMA: Intel i8259
|
||||
VIDEO: none
|
||||
SCSI: none
|
||||
NETWORKING: none
|
||||
|
||||
DRIVER INFORMATION
|
||||
==================
|
||||
CLOCK DRIVER: RTC-4
|
||||
IOSUPP DRIVER: Zilog Z8530 port A
|
||||
SHMSUPP: polled and interrupts
|
||||
TIMER DRIVER: Intel i8254
|
||||
TTY DRIVER: stub only
|
||||
|
||||
STDIO
|
||||
=====
|
||||
PORT: Console port 0
|
||||
ELECTRICAL: RS-232
|
||||
BAUD: 9600
|
||||
BITS PER CHARACTER: 8
|
||||
PARITY: None
|
||||
STOP BITS: 1
|
||||
|
||||
NOTES
|
||||
=====
|
||||
|
||||
(1) 900 Mhz and 950 Mhz versions.
|
||||
|
||||
(2) 1 Gb or 2 Gb RAM.
|
||||
|
||||
(3) PC compatible if HexBug not enabled.
|
||||
@@ -1,24 +0,0 @@
|
||||
# This is an untested dummy
|
||||
%rename cpp old_cpp
|
||||
%rename lib old_lib
|
||||
%rename endfile old_endfile
|
||||
%rename startfile old_startfile
|
||||
%rename link old_link
|
||||
|
||||
*cpp:
|
||||
%(old_cpp) %{qrtems: -D__embedded__} -Asystem(embedded)
|
||||
|
||||
*lib:
|
||||
%{!qrtems: %(old_lib)} \
|
||||
%{!nostdlib: %{qrtems: --start-group %{!qrtems_debug: -lrtemsbsp -lrtemscpu } %{qrtems_debug: -lrtemsbsp_g -lrtemscpu_g} \
|
||||
-lc -lgcc --end-group \
|
||||
%{!qnolinkcmds: -T linkcmds%s}}}
|
||||
|
||||
*startfile:
|
||||
%{!qrtems: %(old_startfile)} %{!nostdlib: %{qrtems: \
|
||||
%{!qrtems_debug: start.o%s} \
|
||||
%{qrtems_debug: start_g.o%s}}}
|
||||
|
||||
*link:
|
||||
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e _start}
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
## Process this file with autoconf to produce a configure script.
|
||||
##
|
||||
## $Id$
|
||||
|
||||
AC_PREREQ(2.57)
|
||||
AC_INIT([rtems-c-src-lib-libbsp-a29k-portsw],[_RTEMS_VERSION],[rtems-bugs@OARcorp.com])
|
||||
AC_CONFIG_SRCDIR([bsp_specs])
|
||||
RTEMS_TOP(../../../../../..)
|
||||
AC_CONFIG_AUX_DIR(../../../../../..)
|
||||
|
||||
RTEMS_CANONICAL_TARGET_CPU
|
||||
AM_INIT_AUTOMAKE([no-define foreign 1.7.2])
|
||||
RTEMS_BSP_CONFIGURE
|
||||
|
||||
RTEMS_PROG_CC_FOR_TARGET([-ansi -fasm])
|
||||
RTEMS_CANONICALIZE_TOOLS
|
||||
|
||||
/* only one of the "INPUT"-defines can be defined */
|
||||
RTEMS_BSPOPTS_SET([SERIAL_INPUT],[*],[1])
|
||||
RTEMS_BSPOPTS_HELP([SERIAL_INPUT],[use serial input])
|
||||
|
||||
RTEMS_BSPOPTS_SET([HIF_INPUT],[*],[])
|
||||
RTEMS_BSPOPTS_HELP([HIF_INPUT],[use HIF input])
|
||||
|
||||
/* both of the following can be defined */
|
||||
RTEMS_BSPOPTS_SET([SERIAL_OUTPUT],[*],[1])
|
||||
RTEMS_BSPOPTS_HELP([SERIAL_OUTPUT],
|
||||
[use serial console output])
|
||||
|
||||
RTEMS_BSPOPTS_SET([HIF_OUTPUT],[*],[])
|
||||
RTEMS_BSPOPTS_HELP([HIF_OUTPUT],
|
||||
[use HIF console output])
|
||||
|
||||
# Explicitly list all Makefiles here
|
||||
AC_CONFIG_FILES([Makefile
|
||||
console/Makefile
|
||||
include/Makefile
|
||||
start/Makefile
|
||||
startup/Makefile
|
||||
wrapup/Makefile])
|
||||
AC_OUTPUT
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,41 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
|
||||
PGM = $(ARCH)/console.rel
|
||||
|
||||
C_FILES = console.c serial.c
|
||||
C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.$(OBJEXT))
|
||||
|
||||
include_HEADERS = concntl.h
|
||||
noinst_HEADERS = serial.h
|
||||
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
include $(top_srcdir)/../../../../../../automake/compile.am
|
||||
include $(top_srcdir)/../../../../../../automake/lib.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
$(PGM): $(OBJS)
|
||||
$(make-rel)
|
||||
|
||||
$(PROJECT_INCLUDE):
|
||||
$(mkinstalldirs) $@
|
||||
|
||||
$(PROJECT_INCLUDE)/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
# the .rel file built here will be put into libbsp.a by ../wrapup/Makefile
|
||||
TMPINSTALL_FILES += $(PROJECT_INCLUDE) $(include_HEADERS:%=$(PROJECT_INCLUDE)/%)
|
||||
|
||||
all-local: $(ARCH) $(OBJS) $(PGM) $(TMPINSTALL_FILES)
|
||||
|
||||
.PRECIOUS: $(PGM)
|
||||
|
||||
EXTRA_DIST = concntl.h console.c serial.c serial.h
|
||||
|
||||
include $(top_srcdir)/../../../../../../automake/local.am
|
||||
@@ -1,16 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CON_KBHIT,
|
||||
CON_GET_RAW_BYTE,
|
||||
CON_SEND_RAW_BYTE
|
||||
} console_ioctl_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
console_ioctl_t ioctl_type;
|
||||
unsigned32 param;
|
||||
} console_ioctl_request_t;
|
||||
@@ -1,290 +0,0 @@
|
||||
/*
|
||||
* This file contains the template for a console IO package.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* 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 <bsp.h>
|
||||
|
||||
#if defined(SERIAL_INPUT) && defined(HIF_INPUT)
|
||||
#error SERIAL_INPUT and HIF_INPUT cannot both be defined!!!
|
||||
#endif
|
||||
|
||||
#include <rtems/libio.h>
|
||||
#include "serial.h"
|
||||
#include "concntl.h"
|
||||
|
||||
#ifndef lint
|
||||
static char _sccsid[] = "@(#)console.c 09/12/96 1.13\n";
|
||||
#endif
|
||||
|
||||
/* console_initialize
|
||||
*
|
||||
* This routine initializes the console IO driver.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* Return values:
|
||||
*/
|
||||
|
||||
rtems_device_driver console_initialize(
|
||||
rtems_device_major_number major,
|
||||
rtems_device_minor_number minor,
|
||||
void *arg
|
||||
)
|
||||
{
|
||||
rtems_status_code status;
|
||||
|
||||
if ( arg )
|
||||
{
|
||||
if ( console_duartinit(minor,*(unsigned32*)arg) )
|
||||
return RTEMS_INVALID_NUMBER;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( console_duartinit(1,9600) || console_duartinit(0,9600) )
|
||||
{
|
||||
return RTEMS_INVALID_NUMBER;
|
||||
}
|
||||
}
|
||||
|
||||
status = rtems_io_register_name(
|
||||
"/dev/console",
|
||||
major,
|
||||
(rtems_device_minor_number) 0
|
||||
);
|
||||
|
||||
if (status != RTEMS_SUCCESSFUL)
|
||||
rtems_fatal_error_occurred(status);
|
||||
|
||||
return RTEMS_SUCCESSFUL;
|
||||
}
|
||||
|
||||
|
||||
/* is_character_ready
|
||||
*
|
||||
* This routine returns TRUE if a character is available.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* Return values:
|
||||
*/
|
||||
|
||||
rtems_boolean is_character_ready(
|
||||
char *ch
|
||||
)
|
||||
{
|
||||
*ch = '\0'; /* return NULL for no particular reason */
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
/* inbyte
|
||||
*
|
||||
* This routine reads a character from the SOURCE.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* Return values:
|
||||
* character read from SOURCE
|
||||
*/
|
||||
|
||||
char inbyte( unsigned int minor )
|
||||
{
|
||||
/*
|
||||
* If polling, wait until a character is available.
|
||||
*/
|
||||
#ifdef HIF_INPUT
|
||||
char retch;
|
||||
_read( 1, &retch, 1 );
|
||||
return retch;
|
||||
#endif
|
||||
#ifdef SERIAL_INPUT
|
||||
return console_sps_getc( minor );
|
||||
#endif
|
||||
}
|
||||
|
||||
/* outbyte
|
||||
*
|
||||
* This routine transmits a character out the SOURCE. It may support
|
||||
* XON/XOFF flow control.
|
||||
*
|
||||
* Input parameters:
|
||||
* ch - character to be transmitted
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*/
|
||||
|
||||
void outbyte( unsigned int minor,
|
||||
char ch
|
||||
)
|
||||
{
|
||||
/*
|
||||
* If polling, wait for the transmitter to be ready.
|
||||
* Check for flow control requests and process.
|
||||
* Then output the character.
|
||||
*/
|
||||
|
||||
#ifdef SERIAL_OUTPUT
|
||||
console_sps_putc( minor, ch );
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Carriage Return/New line translation.
|
||||
*/
|
||||
|
||||
if ( ch == '\n' )
|
||||
outbyte( minor, '\r' );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Open entry point
|
||||
*/
|
||||
|
||||
rtems_device_driver console_open(
|
||||
rtems_device_major_number major,
|
||||
rtems_device_minor_number minor,
|
||||
void * arg
|
||||
)
|
||||
{
|
||||
return RTEMS_SUCCESSFUL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Close entry point
|
||||
*/
|
||||
|
||||
rtems_device_driver console_close(
|
||||
rtems_device_major_number major,
|
||||
rtems_device_minor_number minor,
|
||||
void * arg
|
||||
)
|
||||
{
|
||||
return RTEMS_SUCCESSFUL;
|
||||
}
|
||||
|
||||
/*
|
||||
* read bytes from the serial port. We only have stdin.
|
||||
*/
|
||||
|
||||
rtems_device_driver console_read(
|
||||
rtems_device_major_number major,
|
||||
rtems_device_minor_number minor,
|
||||
void * arg
|
||||
)
|
||||
{
|
||||
rtems_libio_rw_args_t *rw_args;
|
||||
unsigned8 *buffer;
|
||||
unsigned32 maximum;
|
||||
unsigned32 count = 0;
|
||||
|
||||
rw_args = (rtems_libio_rw_args_t *) arg;
|
||||
|
||||
buffer = rw_args->buffer;
|
||||
maximum = rw_args->count;
|
||||
|
||||
for (count = 0; count < maximum; count++) {
|
||||
buffer[ count ] = inbyte(minor);
|
||||
if (buffer[ count ] == '\n' || buffer[ count ] == '\r') {
|
||||
buffer[ count++ ] = '\n';
|
||||
outbyte( minor, '\n' ); /* newline */
|
||||
break;
|
||||
}
|
||||
else if (buffer[ count ] == '\b' && count > 0 )
|
||||
{
|
||||
outbyte( minor, '\b' ); /* move back one space */
|
||||
outbyte( minor, ' ' ); /* erase the character */
|
||||
outbyte( minor, '\b' ); /* move back one space */
|
||||
count-=2;
|
||||
}
|
||||
else
|
||||
outbyte( minor, buffer[ count ] ); /* echo the character */
|
||||
}
|
||||
|
||||
rw_args->bytes_moved = count;
|
||||
return (count > 0) ? RTEMS_SUCCESSFUL : RTEMS_UNSATISFIED;
|
||||
}
|
||||
|
||||
/*
|
||||
* write bytes to the serial port. Stdout and stderr are the same.
|
||||
*/
|
||||
|
||||
rtems_device_driver console_write(
|
||||
rtems_device_major_number major,
|
||||
rtems_device_minor_number minor,
|
||||
void * arg
|
||||
)
|
||||
{
|
||||
int count;
|
||||
int maximum;
|
||||
rtems_libio_rw_args_t *rw_args;
|
||||
unsigned8 *buffer;
|
||||
|
||||
rw_args = (rtems_libio_rw_args_t *) arg;
|
||||
|
||||
buffer = rw_args->buffer;
|
||||
maximum = rw_args->count;
|
||||
|
||||
#ifdef HIF_OUTPUT
|
||||
_write( 0, buffer, maximum );
|
||||
#endif
|
||||
#ifdef SERIAL_OUTPUT
|
||||
for (count = 0; count < maximum; count++) {
|
||||
if ( buffer[ count ] == '\n') {
|
||||
outbyte(minor,'\r');
|
||||
}
|
||||
outbyte( minor,buffer[ count ] );
|
||||
}
|
||||
#endif
|
||||
|
||||
rw_args->bytes_moved = maximum;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* IO Control entry point
|
||||
*/
|
||||
|
||||
rtems_device_driver console_control(
|
||||
rtems_device_major_number major,
|
||||
rtems_device_minor_number minor,
|
||||
void * arg
|
||||
)
|
||||
{
|
||||
if (!arg)
|
||||
return RTEMS_INVALID_ADDRESS;
|
||||
|
||||
switch( ((console_ioctl_request_t *)arg)->ioctl_type )
|
||||
{
|
||||
case CON_KBHIT:
|
||||
/* check if keyboard was hit */
|
||||
((console_ioctl_request_t *)arg)->param = console_sps_kbhit(minor);
|
||||
break;
|
||||
|
||||
case CON_GET_RAW_BYTE:
|
||||
((console_ioctl_request_t *)arg)->param = inbyte(minor);
|
||||
break;
|
||||
|
||||
case CON_SEND_RAW_BYTE:
|
||||
outbyte(minor, ((console_ioctl_request_t *)arg)->param);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return RTEMS_SUCCESSFUL;
|
||||
}
|
||||
@@ -1,217 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "serial.h"
|
||||
#include "rtems.h"
|
||||
|
||||
|
||||
typedef unsigned char uchar ; /* Abbreviations */
|
||||
typedef unsigned short ushort ;
|
||||
typedef unsigned long ulong ;
|
||||
|
||||
#if 0
|
||||
#define BAUDRate 9600 /* Fixed Uart baud rate */
|
||||
#endif
|
||||
|
||||
#define SEND_WAIT 0x0100 /* Waiting to send character */
|
||||
|
||||
#define TDR(i)
|
||||
|
||||
|
||||
/********************************************************************
|
||||
*** 16552 specific DUART definitions.
|
||||
*******************************************************************/
|
||||
|
||||
|
||||
typedef struct uart_16552 DUART ;
|
||||
|
||||
#ifndef notdef
|
||||
struct uart_16552
|
||||
{
|
||||
short u_short[8*2] ;
|
||||
} ;
|
||||
#define u_reg(n) u_short[2*(n)]
|
||||
|
||||
#else
|
||||
|
||||
struct uart_16552
|
||||
{
|
||||
int u_int[8] ;
|
||||
} ;
|
||||
|
||||
#define u_reg(n) u_int[(n)]
|
||||
#endif
|
||||
|
||||
#define u_tdr u_reg(0) /* Transmit Data Register (write) */
|
||||
#define u_rdr u_reg(0) /* Receive Data Register (read) */
|
||||
#define u_dlr0 u_reg(0) /* Divisor Latch Register (lsb) */
|
||||
|
||||
#define u_ier u_reg(1) /* Interrupt Enable Register */
|
||||
#define u_dlr1 u_reg(1) /* Divisor Latch Register (msb) */
|
||||
|
||||
#define u_iir u_reg(2) /* Interrupt ID Register (read) */
|
||||
#define u_fcr u_reg(2) /* FIFO Control Register (write) */
|
||||
#define u_afr u_reg(2) /* Alternate Funct Reg (read/write) */
|
||||
|
||||
#define u_lcr u_reg(3) /* Line Control Register */
|
||||
|
||||
#define u_mcr u_reg(4) /* Modem Control Register */
|
||||
|
||||
#define u_lsr u_reg(5) /* Line Status Register */
|
||||
|
||||
#define u_msr u_reg(6) /* Modem Status Register */
|
||||
|
||||
#define u_spr u_reg(7) /* Scratch Pad Register */
|
||||
|
||||
#define uart1 ((volatile DUART *)0x90000380)
|
||||
#define uart2 ((volatile DUART *)0x90000300)
|
||||
|
||||
#define NUM_UARTS 2
|
||||
static volatile DUART * duart[NUM_UARTS] = { uart1, uart2 };
|
||||
|
||||
|
||||
extern void display_msg(void);
|
||||
/*extern int sprintf();*/
|
||||
|
||||
|
||||
#define board_rev_reg ((volatile short *)0x90000080)
|
||||
|
||||
static unsigned int shift_val = 0;
|
||||
|
||||
/***********************************************************************
|
||||
*** 16552 DUART initialization routine.
|
||||
***********************************************************************/
|
||||
|
||||
int
|
||||
console_duartinit(unsigned int uart_num, unsigned int BAUDRate)
|
||||
{
|
||||
register uchar tmp;
|
||||
unsigned int board_rev = *board_rev_reg & 0xff;
|
||||
|
||||
switch( BAUDRate )
|
||||
{
|
||||
case 1200:
|
||||
case 2400:
|
||||
case 9600:
|
||||
case 19200:
|
||||
case 38400:
|
||||
case 57600:
|
||||
break;
|
||||
default:
|
||||
/* unknown baud rate */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* the board rev register should never be 0xff.
|
||||
if it equals 0xff, assume that we're on old hardware
|
||||
that needs all values shifted by 8. */
|
||||
if ( board_rev == 0xff )
|
||||
shift_val = 8;
|
||||
else
|
||||
shift_val = 0;
|
||||
|
||||
if ( uart_num >= NUM_UARTS )
|
||||
return -1;
|
||||
|
||||
duart[uart_num]->u_lcr = 0x80<<shift_val ; /* Set DLAB bit to 1 */
|
||||
|
||||
duart[uart_num]->u_dlr0 = ((115200 / BAUDRate) >> 0)<<shift_val ; /* Set baud */
|
||||
duart[uart_num]->u_dlr1 = ((115200 / BAUDRate) >> 8)<<shift_val ; /* rate */
|
||||
|
||||
duart[uart_num]->u_lcr = 0x03<<shift_val ; /* 8 bits, no parity, 1 stop */
|
||||
|
||||
duart[uart_num]->u_mcr = 0x0b<<shift_val ; /* Assert RTS, DTR & OUT2 */
|
||||
|
||||
duart[uart_num]->u_fcr = 0x00<<shift_val ; /* Clear 16552 FIFOs */
|
||||
/* Is the following write of 0x01 needed? */
|
||||
/* Let's try it without... */
|
||||
duart[uart_num]->u_fcr = 0xc7<<shift_val ; /* Enable 16552 FIFOs */
|
||||
|
||||
duart[uart_num]->u_ier = 0x07<<shift_val ; /* Enable transmit/receive ints */
|
||||
|
||||
tmp = duart[uart_num]->u_lsr ; /* Re-arm interrupts */
|
||||
tmp = duart[uart_num]->u_rdr ;
|
||||
tmp = duart[uart_num]->u_msr ;
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
/*------------ end of duartinit function ----------------*/
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
*** Transmit character to host.
|
||||
***********************************************************************/
|
||||
|
||||
int console_sps_putc(unsigned int uart_num, int ch)
|
||||
{
|
||||
register unsigned short stat;
|
||||
|
||||
if ( uart_num >= NUM_UARTS )
|
||||
return -1;
|
||||
|
||||
/*
|
||||
* Pause until there is room in the UART transmit
|
||||
* buffer.
|
||||
*/
|
||||
|
||||
do {
|
||||
stat = duart[uart_num]->u_lsr>>shift_val;
|
||||
} while (!(stat & 0x40));
|
||||
|
||||
/*
|
||||
* Transmit data. (Junk)
|
||||
*/
|
||||
|
||||
TDR(ch)
|
||||
|
||||
duart[uart_num]->u_tdr = ch<<shift_val ;
|
||||
|
||||
return ch;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
*** Read character from host.
|
||||
***********************************************************************/
|
||||
|
||||
int console_sps_getc(unsigned int uart_num)
|
||||
{
|
||||
register unsigned short stat;
|
||||
register int ch;
|
||||
|
||||
if ( uart_num >= NUM_UARTS )
|
||||
return -1;
|
||||
|
||||
stat = duart[uart_num]->u_lsr>>shift_val;
|
||||
while (!(stat & 0x01))
|
||||
{
|
||||
rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
|
||||
stat = duart[uart_num]->u_lsr>>shift_val;
|
||||
}
|
||||
|
||||
ch = duart[uart_num]->u_rdr>>shift_val;
|
||||
|
||||
return ch;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
*** check character from host.
|
||||
***********************************************************************/
|
||||
|
||||
int console_sps_kbhit(unsigned int uart_num)
|
||||
{
|
||||
register unsigned short stat;
|
||||
|
||||
if ( uart_num >= NUM_UARTS )
|
||||
return -1;
|
||||
|
||||
stat = duart[uart_num]->u_lsr>>shift_val;
|
||||
return ((stat & 0x01));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
int console_duartinit(unsigned int uart_num, unsigned int BAUDRate);
|
||||
int console_sps_putc(unsigned int uart_num, int ch);
|
||||
int console_sps_getc(unsigned int uart_num);
|
||||
int console_sps_kbhit(unsigned int uart_num);
|
||||
@@ -1,7 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
bspopts.h
|
||||
bspopts.h.in
|
||||
coverhd.h
|
||||
stamp-h
|
||||
stamp-h.in
|
||||
@@ -1,22 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
|
||||
include_HEADERS = bsp.h coverhd.h bspopts.h
|
||||
|
||||
$(PROJECT_INCLUDE):
|
||||
$(mkinstalldirs) $@
|
||||
|
||||
$(PROJECT_INCLUDE)/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
coverhd.h: $(top_srcdir)/../../shared/include/coverhd.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
CLEANFILES = coverhd.h
|
||||
|
||||
TMPINSTALL_FILES = $(PROJECT_INCLUDE) $(include_HEADERS:%=$(PROJECT_INCLUDE)/%)
|
||||
|
||||
all-local: $(TMPINSTALL_FILES)
|
||||
|
||||
include $(top_srcdir)/../../../../../../automake/local.am
|
||||
@@ -1,110 +0,0 @@
|
||||
/* bsp.h
|
||||
*
|
||||
* This include file contains all board IO definitions.
|
||||
*
|
||||
* XXX : put yours in here
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* 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$
|
||||
*/
|
||||
|
||||
#ifndef __PORTSW_h
|
||||
#define __PORTSW_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <bspopts.h>
|
||||
|
||||
#include <rtems.h>
|
||||
#include <console.h>
|
||||
#include <clockdrv.h>
|
||||
|
||||
/*
|
||||
* confdefs.h overrides for this BSP:
|
||||
* - number of termios serial ports (defaults to 1)
|
||||
* - Interrupt stack space is not minimum if defined.
|
||||
*/
|
||||
|
||||
/* #define CONFIGURE_NUMBER_OF_TERMIOS_PORTS 2 */
|
||||
#define CONFIGURE_INTERRUPT_STACK_MEMORY (4 * 1024)
|
||||
|
||||
/*
|
||||
* Define the time limits for RTEMS Test Suite test durations.
|
||||
* Long test and short test duration limits are provided. These
|
||||
* values are in seconds and need to be converted to ticks for the
|
||||
* application.
|
||||
*
|
||||
*/
|
||||
|
||||
#define MAX_LONG_TEST_DURATION 300 /* 5 minutes = 300 seconds */
|
||||
#define MAX_SHORT_TEST_DURATION 3 /* 3 seconds */
|
||||
|
||||
/*
|
||||
* Stuff for Time Test 27
|
||||
*/
|
||||
|
||||
#define MUST_WAIT_FOR_INTERRUPT 0
|
||||
|
||||
#define Install_tm27_vector( handler ) set_vector( (handler), 0, 1 )
|
||||
|
||||
#define Cause_tm27_intr()
|
||||
|
||||
#define Clear_tm27_intr()
|
||||
|
||||
#define Lower_tm27_intr()
|
||||
|
||||
/*
|
||||
* Simple spin delay in microsecond units for device drivers.
|
||||
* This is very dependent on the clock speed of the target.
|
||||
*/
|
||||
|
||||
#define rtems_bsp_delay( microseconds ) \
|
||||
{ \
|
||||
}
|
||||
|
||||
/* Constants */
|
||||
/* #define CPU_CLOCK_RATE_MHZ 25*/
|
||||
|
||||
#define RAM_START 0
|
||||
#define RAM_END 0x100000
|
||||
|
||||
/* miscellaneous stuff assumed to exist */
|
||||
|
||||
extern rtems_configuration_table BSP_Configuration;
|
||||
|
||||
/*
|
||||
* Device Driver Table Entries
|
||||
*/
|
||||
|
||||
/*
|
||||
* NOTE: Use the standard Console driver entry
|
||||
*/
|
||||
|
||||
/*
|
||||
* NOTE: Use the standard Clock driver entry
|
||||
*/
|
||||
|
||||
/* functions */
|
||||
|
||||
void bsp_cleanup( void );
|
||||
|
||||
no_cpu_isr_entry set_vector( /* returns old vector */
|
||||
rtems_isr_entry handler, /* isr routine */
|
||||
rtems_vector_number vector, /* vector number */
|
||||
int type /* RTEMS or RAW intr */
|
||||
);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,32 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
S_FILES = start.S register.S
|
||||
S_O_FILES = $(S_FILES:%.S=$(ARCH)/%.$(OBJEXT))
|
||||
|
||||
OBJS = $(S_O_FILES)
|
||||
|
||||
include $(top_srcdir)/../../../../../../automake/compile.am
|
||||
include $(top_srcdir)/../../../../../../automake/lib.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
install-data-local: $(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).$(OBJEXT)
|
||||
@$(mkinstalldirs) $(DESTDIR)$(bsplibdir)
|
||||
$(INSTALL_DATA) $< $(DESTDIR)$(bsplibdir)
|
||||
|
||||
$(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).$(OBJEXT): $(ARCH)/start.$(OBJEXT)
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
TMPINSTALL_FILES += $(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).$(OBJEXT)
|
||||
|
||||
all-local: $(ARCH) $(OBJS) $(ARCH)/start.$(OBJEXT) $(TMPINSTALL_FILES)
|
||||
|
||||
.PRECIOUS: $(ARCH)/start.$(OBJEXT)
|
||||
|
||||
EXTRA_DIST = amd.ah start.S pswmacro.ah register.S register.ah
|
||||
|
||||
include $(top_srcdir)/../../../../../../automake/local.am
|
||||
@@ -1,517 +0,0 @@
|
||||
; /* @(#)amd.ah 1.1 96/05/23 08:56:58, TEI */
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Initialization values for registers after RESET
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; /* $Id$ */
|
||||
;
|
||||
;* File information and includes.
|
||||
|
||||
.file "amd.ah"
|
||||
.ident "@(#)amd.ah 1.1 96/05/23 08:56:58, TEI"
|
||||
|
||||
|
||||
|
||||
;
|
||||
;* AMD PROCESSOR SPECIFIC VALUES...
|
||||
;
|
||||
|
||||
;
|
||||
;* Processor revision levels...
|
||||
;
|
||||
|
||||
; PRL values: 31-28 27-24
|
||||
; Am29000 0 x
|
||||
; Am29005 1 x
|
||||
; Am29050 2 x
|
||||
; Am29035 3 x
|
||||
; Am29030 4 x
|
||||
; Am29200 5 x
|
||||
; Am29205 5 1x
|
||||
; Am29240 6 0
|
||||
; Manx 7 0
|
||||
; Cougar 8 0
|
||||
|
||||
|
||||
.equ AM29000_PRL, 0x00
|
||||
|
||||
.equ AM29005_PRL, 0x10
|
||||
|
||||
.equ AM29050_PRL, 0x20
|
||||
|
||||
.equ AM29035_PRL, 0x30
|
||||
|
||||
.equ AM29030_PRL, 0x40
|
||||
|
||||
.equ AM29200_PRL, 0x50
|
||||
|
||||
.equ AM29205_PRL, 0x58
|
||||
|
||||
.equ AM29240_PRL, 0x60
|
||||
|
||||
.equ AM29040_PRL, 0x70
|
||||
|
||||
.equ MANX_PRL, 0x70
|
||||
|
||||
.equ COUGAR_PRL, 0x80
|
||||
|
||||
;
|
||||
;* data structures sizes.
|
||||
;
|
||||
.equ CFGINFO_SIZE, 16*4
|
||||
|
||||
.equ PGMINFO_SIZE, 16*4
|
||||
|
||||
.equ VARARGS_SPACE, 16*4
|
||||
|
||||
.equ WINDOWSIZE, 0x80
|
||||
;
|
||||
;* Am29027 Mode registers
|
||||
;
|
||||
|
||||
.equ Am29027Mode1, 0x0fc00820
|
||||
|
||||
.equ Am29027Mode2, 0x00001375
|
||||
|
||||
|
||||
|
||||
;* Processor Based Equates and Defines
|
||||
|
||||
.equ SIG_SYNC, -1
|
||||
|
||||
.equ ENABLE, (SM)
|
||||
|
||||
.equ DISABLE, (ENABLE | DI | DA)
|
||||
|
||||
.equ DISABLE_FZ, (FZ | ENABLE | DI | DA)
|
||||
|
||||
.equ CLR_TRAP, (FZ | DA)
|
||||
|
||||
.equ InitOPS, (TD | SM | (3<<IMShift) | DI | DA)
|
||||
|
||||
.equ InitCPS, (TD | SM | (0<<IMShift) | DI | DA)
|
||||
|
||||
.equ InitCPS1, (TD | SM | (0<<IMShift) | DI )
|
||||
|
||||
.equ CPS_TMR, (SM | (0<<IMShift) | DI)
|
||||
|
||||
.equ CPS_INT0, (TD | SM | (0<<IMShift))
|
||||
|
||||
.equ CPS_TMRINT0, (SM | (0<<IMShift))
|
||||
|
||||
.equ InitCFG, 0x0
|
||||
|
||||
.equ InitRBP, (B0|B1|B2|B3|B4|B5)
|
||||
|
||||
.equ TMC_VALUE, 0xFFFFFF
|
||||
|
||||
.equ TMR_VALUE, (IE | TMC_VALUE)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;* 29205 specific (internal) peripheral initialization constants.
|
||||
|
||||
; Current Processor Status (CPS) Register.
|
||||
; Old Processor Status Register (OPS).
|
||||
|
||||
.equ DA, 0x00001
|
||||
.equ DI, 0x00002
|
||||
.equ IMShift,0x2
|
||||
.equ SM, 0x00010
|
||||
.equ PI, 0x00020
|
||||
.equ PD, 0x00040
|
||||
.equ WM, 0x00080
|
||||
.equ RE, 0x00100
|
||||
.equ LK, 0x00200
|
||||
.equ FZ, 0x00400
|
||||
.equ TU, 0x00800
|
||||
.equ TP, 0x01000
|
||||
.equ TE, 0x02000
|
||||
.equ IP, 0x04000
|
||||
.equ CA, 0x08000
|
||||
.equ MM, 0x10000
|
||||
.equ TD, 0x20000
|
||||
|
||||
; Configuration Register (CFG)
|
||||
|
||||
.equ CD, 0x01
|
||||
.equ CP, 0x02
|
||||
.equ BO, 0x04
|
||||
.equ RV, 0x08
|
||||
.equ VF, 0x10
|
||||
.equ DW, 0x20
|
||||
.equ CO, 0x40
|
||||
.equ EE, 0x80
|
||||
.equ IDShift, 8
|
||||
.equ CFG_ID, 0x100
|
||||
.equ ILShift, 9
|
||||
.equ CFG_ILMask, 0x600
|
||||
.equ DDShift, 11
|
||||
.equ CFG_DD, 0x800
|
||||
.equ DLShift, 12
|
||||
.equ CFG_DLMask, 0x3000
|
||||
.equ PCEShift, 14
|
||||
.equ CFG_PCE, 0x4000
|
||||
.equ PMBShift, 16
|
||||
.equ D16, 0x8000
|
||||
.equ TBOShift, 23
|
||||
.equ PRLShift, 24
|
||||
|
||||
; Channel Control Register (CHC)
|
||||
|
||||
.equ CV, 0x1
|
||||
.equ NN, 0x2
|
||||
.equ TRShift, 2
|
||||
.equ TF, 0x400
|
||||
.equ PER, 0x800
|
||||
.equ LA, 0x1000
|
||||
.equ ST, 0x2000
|
||||
.equ ML, 0x4000
|
||||
.equ LS, 0x8000
|
||||
.equ CRShift, 16
|
||||
.equ CNTLShift, 24
|
||||
.equ CEShift, 31
|
||||
.equ WBERShift, 31
|
||||
|
||||
; Register Bank Protect (RBP)
|
||||
.equ B0, 0x1
|
||||
.equ B1, 0x2
|
||||
.equ B2, 0x4
|
||||
.equ B3, 0x8
|
||||
.equ B4, 0x10
|
||||
.equ B5, 0x20
|
||||
.equ B6, 0x40
|
||||
.equ B7, 0x80
|
||||
.equ B8, 0x100
|
||||
.equ B9, 0x200
|
||||
.equ B10, 0x400
|
||||
.equ B11, 0x800
|
||||
.equ B12, 0x1000
|
||||
.equ B13, 0x2000
|
||||
.equ B14, 0x4000
|
||||
.equ B15, 0x8000
|
||||
|
||||
; Timer Counter
|
||||
|
||||
.equ TCVMask, 0xffffff
|
||||
|
||||
; Timer Reload Register
|
||||
|
||||
.equ IE, 0x1000000
|
||||
.equ IN, 0x2000000
|
||||
.equ OV, 0x4000000
|
||||
.equ TRVMAsk, 0xffffff
|
||||
|
||||
; MMU Configuration
|
||||
|
||||
.equ PSShift, 8
|
||||
.equ PS0Shift, 8
|
||||
.equ PS1Shift, 12
|
||||
|
||||
; LRU Recommendation (LRU)
|
||||
.equ LRUMask, 0xff
|
||||
|
||||
; Reason Vector (RSN)
|
||||
.equ RSNMask, 0xff
|
||||
|
||||
; Region Mapping Address (RMA0 | RMA1)
|
||||
.equ PBAMask,0xffff
|
||||
.equ VBAShift, 16
|
||||
|
||||
; Region Mapping Control (RMC0 | RMC1)
|
||||
.equ TIDMask, 0xff
|
||||
.equ RMC_UE, 0x100
|
||||
.equ RMC_UW, 0x200
|
||||
.equ RMC_UR, 0x400
|
||||
.equ RMC_SE, 0x800
|
||||
.equ RMC_SW, 0x1000
|
||||
.equ RMC_SR, 0x2000
|
||||
.equ RMC_VE, 0x4000
|
||||
.equ RMC_IO, 0x10000
|
||||
.equ RGSShift, 17
|
||||
.equ RMC_PGMShift, 22
|
||||
|
||||
; Instruction breakpoint Control (IBC0 | IBC1)
|
||||
.equ BPIDMask, 0xff
|
||||
.equ BTE, 0x100
|
||||
.equ BRM, 0x200
|
||||
.equ IBC_BSY, 0x400
|
||||
.equ BEN, 0x800
|
||||
.equ BHO, 0x1000
|
||||
|
||||
; Cache Data Register (CDR)
|
||||
.equ CDR_US, 0x1
|
||||
.equ P, 0x2
|
||||
.equ CDR_V, 0x4
|
||||
.equ IATAGShift, 20
|
||||
|
||||
; Cache Interface Register (CIR)
|
||||
.equ CPTRShift, 2
|
||||
.equ CIR_RW, 0x1000000
|
||||
.equ FSELShift, 28
|
||||
|
||||
; Indirect Pointer A, B, C (IPA, IPB, IPC)
|
||||
.equ IPShift, 2
|
||||
|
||||
; ALU Status (ALU)
|
||||
.equ FCMask, 0x1F
|
||||
.equ BPShift, 5
|
||||
.equ C, 0x80
|
||||
.equ Z, 0x100
|
||||
.equ N, 0x200
|
||||
.equ ALU_V, 0x400
|
||||
.equ DF, 0x800
|
||||
|
||||
; Byte Pointer
|
||||
.equ BPMask, 0x3
|
||||
|
||||
; Load/Store Count Remaining (CR)
|
||||
.equ CRMask, 0xff
|
||||
|
||||
; Floating Point Environment (FPE)
|
||||
.equ NM, 0x1
|
||||
.equ RM, 0x2
|
||||
.equ VM, 0x4
|
||||
.equ UM, 0x8
|
||||
.equ XM, 0x10
|
||||
.equ DM, 0x20
|
||||
.equ FRMShift, 6
|
||||
.equ FF, 0x100
|
||||
.equ ACFShift, 9
|
||||
|
||||
; Integer Environment (INTE)
|
||||
.equ MO, 0x1
|
||||
.equ DO, 0x2
|
||||
|
||||
; Floating Point Status (FPS)
|
||||
.equ NS, 0x1
|
||||
.equ RS, 0x2
|
||||
.equ VS, 0x4
|
||||
.equ FPS_US, 0x8
|
||||
.equ XS, 0x10
|
||||
.equ DS, 0x20
|
||||
.equ NT, 0x100
|
||||
.equ RT, 0x200
|
||||
.equ VT, 0x400
|
||||
.equ UT, 0x800
|
||||
.equ XT, 0x1000
|
||||
.equ DT, 0x2000
|
||||
|
||||
; Exception Opcode (EXOP)
|
||||
.equ IOPMask, 0xff
|
||||
|
||||
; TLB Entry Word 0
|
||||
; .equ TIDMask, 0xff already defined above
|
||||
.equ TLB_UE, 0x100
|
||||
.equ TLB_UW, 0x200
|
||||
.equ TLB_UR, 0x400
|
||||
.equ TLB_SE, 0x800
|
||||
.equ TLB_SW, 0x1000
|
||||
.equ TLB_SR, 0x2000
|
||||
.equ TLB_VE, 0x4000
|
||||
.equ VTAGShift, 15
|
||||
|
||||
; TLB Entry Word 1
|
||||
.equ TLB_IO, 0x1
|
||||
.equ U, 0x2
|
||||
.equ TLB_PGMShift, 6
|
||||
.equ RPNShift, 10
|
||||
|
||||
; Am29200 ROM Control bits.
|
||||
.equ RMCT_DW0Shift, 29
|
||||
.equ RMCT_DW1Shift, 21
|
||||
.equ RMCT_DW2Shift, 13
|
||||
.equ RMCT_DW3Shift, 5
|
||||
|
||||
; Am29200 DRAM Control bits.
|
||||
.equ DW3, (1<<18)
|
||||
.equ DW2, (1<<22)
|
||||
.equ DW1, (1<<26)
|
||||
.equ DW0, (1<<30)
|
||||
|
||||
; Internal peripheral address assignments.
|
||||
.equ RMCT, 0x80000000
|
||||
.equ RMCF, 0x80000004
|
||||
.equ DRCT, 0x80000008
|
||||
.equ DRCF, 0x8000000C
|
||||
.equ DRM0, 0x80000010
|
||||
.equ DRM1, 0x80000014
|
||||
.equ DRM2, 0x80000018
|
||||
.equ DRM3, 0x8000001C
|
||||
.equ PIACT0, 0x80000020
|
||||
.equ PIACT1, 0x80000020
|
||||
.equ ICT, 0x80000028
|
||||
.equ DMCT0, 0x80000030
|
||||
.equ DMAD0, 0x80000034
|
||||
.ifdef revA
|
||||
.equ TAD0, 0x80000036
|
||||
.equ TCN0, 0x8000003A
|
||||
.else
|
||||
.equ TAD0, 0x80000070 ; default
|
||||
.equ TCN0, 0x8000003C ; default
|
||||
.endif
|
||||
.equ DMCN0, 0x80000038
|
||||
.equ DMCT1, 0x80000040
|
||||
.equ DMAD1, 0x80000044
|
||||
.equ DMCN1, 0x80000048
|
||||
.equ SPCT, 0x80000080
|
||||
.equ SPST, 0x80000084
|
||||
.equ SPTH, 0x80000088
|
||||
.equ SPRB, 0x8000008C
|
||||
.equ BAUD, 0x80000090
|
||||
.equ PPCT, 0x800000C0
|
||||
.equ PPST, 0x800000C1
|
||||
.equ PPDT, 0x800000C4
|
||||
.equ POCT, 0x800000D0
|
||||
.equ PIN, 0x800000D4
|
||||
.equ POUT, 0x800000D8
|
||||
.equ POEN, 0x800000DC
|
||||
.equ VCT, 0x800000E0
|
||||
.equ TOP, 0x800000E4
|
||||
.equ SIDE, 0x800000E8
|
||||
.equ VDT, 0x800000EC
|
||||
|
||||
; Interrupt Controller Register bits.
|
||||
.equ TXDI, (1<<5)
|
||||
.equ RXDI, (1<<6)
|
||||
.equ RXSI, (1<<7)
|
||||
.equ PPI, (1<<11)
|
||||
.equ DMA1I, (1<<13)
|
||||
.equ DMA0I, (1<<14)
|
||||
.equ IOPIMask, (0xFF<<16)
|
||||
.equ VDI, (1<<27)
|
||||
.equ ICT200_I, (TXDI|RXDI|RXSI|PPI|DMA1I|DMA0I|IOPIMask|VDI)
|
||||
.equ ICT205_I, (TXDI|RXDI|RXSI|PPI|DMA1I|DMA0I|IOPIMask|VDI)
|
||||
|
||||
; Serial port Initialization bits
|
||||
.equ NO_PARITY, 0
|
||||
|
||||
|
||||
; SPST bits
|
||||
.equ THREShift, 22
|
||||
|
||||
;* REGISTER Addresses
|
||||
|
||||
.equ ROMCntlRegAddr, 0x80000000
|
||||
|
||||
.equ ROMCfgRegAddr, 0x80000004
|
||||
|
||||
.equ DRAMCntlRegAddr, 0x80000008
|
||||
|
||||
.equ DRAMCfgRegAddr, 0x8000000C
|
||||
|
||||
.equ DRAMMap0RegAddr, 0x80000010
|
||||
|
||||
.equ DRAMMap1RegAddr, 0x80000014
|
||||
|
||||
.equ DRAMMap2RegAddr, 0x80000018
|
||||
|
||||
.equ DRAMMap3RegAddr, 0x8000001C
|
||||
|
||||
.equ PIACntl0RegAddr, 0x80000020
|
||||
|
||||
.equ PIACntl1RegAddr, 0x80000024
|
||||
|
||||
.equ INTRCntlRegAddr, 0x80000028
|
||||
|
||||
.equ DMACntl0RegAddr, 0x80000030
|
||||
|
||||
.equ DMACntl1RegAddr, 0x80000040
|
||||
|
||||
.equ SERPortCntlRegAddr, 0x80000080
|
||||
|
||||
.equ SERPortStatRegAddr, 0x80000084
|
||||
|
||||
.equ SERPortTHLDRegAddr, 0x80000088
|
||||
|
||||
.equ SERPortRbufRegAddr, 0x8000008C
|
||||
|
||||
.equ SERPortBaudRegAddr, 0x80000090
|
||||
|
||||
.equ PARPortCntlRegAddr, 0x800000C0
|
||||
|
||||
.equ PIOCntlRegAddr, 0x800000D0
|
||||
|
||||
.equ PIOInpRegAddr, 0x800000D4
|
||||
|
||||
.equ PIOOutRegAddr, 0x800000D8
|
||||
|
||||
.equ PIOOutEnaRegAddr, 0x800000DC
|
||||
|
||||
.equ VCTCntlRegAddr, 0x800000E0
|
||||
|
||||
;
|
||||
;* Control constants
|
||||
;
|
||||
|
||||
;* AM29030 Timer related constants.
|
||||
|
||||
.equ TMR_IE, 0x01000000
|
||||
|
||||
.equ TMR_IN, 0x02000000
|
||||
|
||||
.equ TMR_OV, 0x04000000
|
||||
|
||||
.equ TMC_INITCNT, 1613
|
||||
|
||||
;
|
||||
;* System initialization values.
|
||||
;
|
||||
|
||||
.equ __os_version, 0x0001 ;
|
||||
|
||||
.equ STACKSize, 0x8000 ;
|
||||
|
||||
.equ PGMExecMode, 0x0000 ;
|
||||
|
||||
.equ TSTCK_OFST, 28 * 4
|
||||
|
||||
.equ CSTCK_OFST, 29 * 4
|
||||
|
||||
.equ TMSTCK_OFST, 30 * 4
|
||||
|
||||
.equ CMSTCK_OFST, 31 * 4
|
||||
|
||||
.equ CTXSW_OK, 0xA55A ; ctx switch ok
|
||||
|
||||
.set NV_STARTOFST, 0x20 ; 32 bytes
|
||||
|
||||
.set NV_BAUDOFST, 0x00 ; 00 bytes
|
||||
|
||||
.set reg_cir, 29
|
||||
|
||||
.set reg_cdr, 30
|
||||
|
||||
.equ MSG_BUFSIZE, 0x1000 ; serial buffer size
|
||||
|
||||
.equ ILLOPTRAP, 0
|
||||
|
||||
.equ UATRAP, 1
|
||||
|
||||
.equ PVTRAP, 5
|
||||
|
||||
.equ UITLBMISSTRAP, 8
|
||||
|
||||
.equ UDTLBMISSTRAP, 9
|
||||
|
||||
.equ TIMERTRAP, 14
|
||||
|
||||
.equ TRACETRAP, 15
|
||||
|
||||
.equ XLINXTRAP, 16
|
||||
|
||||
.equ SERIALTRAP, 17
|
||||
|
||||
.equ SLOWTMRTRAP, 18
|
||||
|
||||
.equ PORTTRAP, 19
|
||||
|
||||
.equ SVSCTRAP, 80
|
||||
|
||||
.equ SVSCTRAP1, 81
|
||||
|
||||
.equ V_CACHETRAP, 66 ;
|
||||
|
||||
.equ V_SETSERVICE, 67 ;
|
||||
@@ -1,442 +0,0 @@
|
||||
; /* @(#)pswmacro.ah 1.1 96/05/23 08:56:58, TEI */
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; macros: Do_install and init_TLB
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; /* $Id$ */
|
||||
|
||||
;* File information and includes.
|
||||
|
||||
.file "macro.ah"
|
||||
.ident "@(#)pswmacro.ah 1.1 96/05/23 08:56:58, TEI"
|
||||
|
||||
|
||||
.macro CONST32, RegName, RegValue
|
||||
const RegName, RegValue
|
||||
consth RegName, RegValue
|
||||
.endm
|
||||
|
||||
.macro CONSTX, RegName, RegValue
|
||||
.if (RegValue) <= 0x0000ffff
|
||||
const RegName, RegValue
|
||||
.else
|
||||
const RegName, RegValue
|
||||
consth RegName, RegValue
|
||||
.endif
|
||||
.endm
|
||||
|
||||
.macro PRODEV, RegName
|
||||
srl RegName, RegName, 24
|
||||
.endm
|
||||
|
||||
;
|
||||
;* MACRO TO INSTALL VECTOR TABLE ENTRIES
|
||||
;
|
||||
|
||||
;* Assumes vector table address in v0
|
||||
|
||||
.macro _setvec, trapnum, trapaddr
|
||||
mfsr v0, vab ;
|
||||
const v2, trapnum ;
|
||||
sll v1, v2, 2 ;
|
||||
add v1, v1, v0 ; v0 has location of vector tab
|
||||
|
||||
const v2, trapaddr ;
|
||||
consth v2, trapaddr ;
|
||||
store 0, 0, v2, v1 ;
|
||||
nop ;
|
||||
.endm
|
||||
|
||||
.macro syscall, name
|
||||
const tav, HIF_@name ;
|
||||
asneq V_SYSCALL, gr1, gr1 ;
|
||||
nop ;
|
||||
nop ;
|
||||
.endm
|
||||
|
||||
|
||||
|
||||
;* MACRO TO INSTALL VECTOR TABLE ENTRIES
|
||||
|
||||
.macro Do_Install, V_Number, V_Address
|
||||
const lr4, V_Address
|
||||
consth lr4, V_Address
|
||||
const lr3, V_Number * 4
|
||||
consth lr3, V_Number * 4
|
||||
call lr0, V_Install
|
||||
nop
|
||||
.endm
|
||||
|
||||
.macro Do_InstallX, V_Number, V_Address
|
||||
const lr4, V_Address
|
||||
consth lr4, V_Address
|
||||
const lr3, V_Number * 4
|
||||
consth lr3, V_Number * 4
|
||||
call lr0, V_InstallX
|
||||
nop
|
||||
.endm
|
||||
|
||||
|
||||
|
||||
; push a register onto the stack
|
||||
.macro pushreg, reg, sp
|
||||
sub sp, sp, 4 ; adjust stack pointer
|
||||
store 0, 0, reg, sp ; push register
|
||||
.endm
|
||||
|
||||
.macro push, sp, reg
|
||||
sub sp, sp, 4
|
||||
store 0, 0, reg, sp
|
||||
.endm
|
||||
|
||||
; pop the register from stack
|
||||
.macro popreg, reg, sp
|
||||
load 0, 0, reg, sp ; pop register
|
||||
add sp, sp, 4 ; adjust stack pointer
|
||||
.endm
|
||||
.macro pop, reg, sp
|
||||
load 0, 0, reg, sp
|
||||
add sp, sp, 4
|
||||
.endm
|
||||
|
||||
; push a special register onto stack
|
||||
.macro pushspcl, spcl, tmpreg, sp
|
||||
sub sp, sp, 4 ; adjust stack pointer
|
||||
mfsr tmpreg, spcl ; get spcl reg
|
||||
store 0, 0, tmpreg, sp ; push onto stack
|
||||
.endm
|
||||
|
||||
.macro pushsr, sp, reg, sreg
|
||||
mfsr reg, sreg
|
||||
sub sp, sp, 4
|
||||
store 0, 0, reg, sp
|
||||
.endm
|
||||
|
||||
; pop a special register from stack
|
||||
.macro popspcl, spcl, tmpreg, sp
|
||||
load 0, 0, tmpreg, sp ; pop from stack
|
||||
add sp, sp, 4 ; adjust stack pointer
|
||||
mtsr spcl, tmpreg ; set spcl reg
|
||||
.endm
|
||||
|
||||
.macro popsr, sreg, reg, sp
|
||||
load 0, 0, reg, sp
|
||||
add sp, sp, 4
|
||||
mtsr sreg, reg
|
||||
.endm
|
||||
|
||||
;
|
||||
; save freeze mode registers on memory stack.
|
||||
;
|
||||
|
||||
.macro SaveFZState, tmp1, tmp2
|
||||
|
||||
; save freeze mode registers.
|
||||
|
||||
pushspcl pc0, tmp1, msp
|
||||
pushspcl pc1, tmp1, msp
|
||||
pushspcl alu, tmp1, msp
|
||||
|
||||
pushspcl cha, tmp1, msp
|
||||
pushspcl chd, tmp1, msp
|
||||
pushspcl chc, tmp1, msp
|
||||
|
||||
pushspcl ops, tmp1, msp
|
||||
|
||||
; turn freeze off
|
||||
|
||||
const tmp2, FZ
|
||||
mfsr tmp1, cps
|
||||
andn tmp1, tmp1, tmp2
|
||||
mtsr cps, tmp1
|
||||
.endm
|
||||
|
||||
; restore freeze mode registers from memory stack.
|
||||
|
||||
.macro RestoreFZState, tmp1, tmp2
|
||||
|
||||
; turn freeze on
|
||||
|
||||
const tmp2, (FZ|DI|DA)
|
||||
mfsr tmp1, cps
|
||||
or tmp1, tmp1, tmp2
|
||||
mtsr cps, tmp1
|
||||
|
||||
; restore freeze mode registers.
|
||||
|
||||
popspcl ops, tmp1, msp
|
||||
popspcl chc, tmp1, msp
|
||||
popspcl chd, tmp1, msp
|
||||
popspcl cha, tmp1, msp
|
||||
popspcl alu, tmp1, msp
|
||||
popspcl pc1, tmp1, msp
|
||||
popspcl pc0, tmp1, msp
|
||||
.endm
|
||||
|
||||
;
|
||||
;*
|
||||
;
|
||||
.equ WS, 512 ; window size
|
||||
.equ RALLOC, 4 * 4 ; stack alloc for C
|
||||
.equ SIGCTX_UM_SIZE, 40 * 4 ;
|
||||
.equ SIGCTX_RFB, (38) * 4 ; user mode saved
|
||||
.equ SIGCTX_SM_SIZE, 12 * 4 ;
|
||||
.equ SIGCTX_SIG, (11)*4 + SIGCTX_UM_SIZE ;
|
||||
.equ SIGCTX_GR1, (10)*4 + SIGCTX_UM_SIZE ;
|
||||
.equ SIGCTX_RAB, (9)*4 + SIGCTX_UM_SIZE ;
|
||||
.equ SIGCTX_PC0, (8)*4 + SIGCTX_UM_SIZE ;
|
||||
.equ SIGCTX_PC1, (7)*4 + SIGCTX_UM_SIZE ;
|
||||
.equ SIGCTX_PC2, (6)*4 + SIGCTX_UM_SIZE ;
|
||||
.equ SIGCTX_CHC, (3)*4 + SIGCTX_UM_SIZE ;
|
||||
.equ SIGCTX_OPS, (1)*4 + SIGCTX_UM_SIZE ;
|
||||
.equ SIGCTX_TAV, (0)*4 + SIGCTX_UM_SIZE ;
|
||||
|
||||
.macro sup_sv
|
||||
add it2, trapreg, 0 ; transfer signal #
|
||||
sub msp, msp, 4 ;
|
||||
store 0, 0, it2, msp ; save signal number
|
||||
sub msp, msp, 4 ; push gr1
|
||||
|
||||
store 0, 0, gr1, msp ;
|
||||
sub msp, msp, 4 ; push rab
|
||||
store 0, 0, rab, msp ;
|
||||
const it0, WS ; Window size
|
||||
|
||||
sub rab, rfb, it0 ; set rab = rfb-512
|
||||
pushsr msp, it0, PC0 ; save program counter0
|
||||
pushsr msp, it0, PC1 ; save program counter1
|
||||
pushsr msp, it0, PC2 ; save program counter2
|
||||
|
||||
pushsr msp, it0, CHA ; save channel address
|
||||
pushsr msp, it0, CHD ; save channel data
|
||||
pushsr msp, it0, CHC ; save channel control
|
||||
pushsr msp, it0, ALU ; save alu
|
||||
|
||||
pushsr msp, it0, OPS ; save ops
|
||||
sub msp, msp, 4 ;
|
||||
store 0, 0, tav, msp ; push tav
|
||||
mtsrim chc, 0 ; no loadm/storem
|
||||
|
||||
mfsr it0, ops ; get ops value
|
||||
const it1, (TD | DI) ; disable interrupts
|
||||
consth it1, (TD | DI) ; disable interrupts
|
||||
or it0, it0, it1 ; set bits
|
||||
|
||||
mtsr ops, it0 ; set new ops
|
||||
const it0, sigcode ; signal handler
|
||||
consth it0, sigcode ; signal handler
|
||||
mtsr pc1, it0 ; store pc1
|
||||
|
||||
add it1, it0, 4 ; next addr
|
||||
mtsr pc0, it1 ; store pc1 location
|
||||
iret ; return
|
||||
nop ; ALIGN
|
||||
.endm
|
||||
|
||||
.macro sig_return
|
||||
mfsr it0, cps ; get processor status
|
||||
const it1, FZ|DA ; Freeze + traps disable
|
||||
or it0, it0, it1 ; to set FZ+DA
|
||||
mtsr cps, it0 ; in freeze mode
|
||||
|
||||
load 0, 0, tav, msp ; restore tav
|
||||
add msp, msp, 4 ;
|
||||
|
||||
popsr OPS,it0, msp ;
|
||||
popsr ALU,it0, msp ;
|
||||
popsr CHC,it0, msp ;
|
||||
popsr CHD,it0, msp ;
|
||||
|
||||
popsr CHA,it0, msp ;
|
||||
popsr PC2,it0, msp ;
|
||||
popsr PC1,it0, msp ;
|
||||
popsr PC0,it0, msp ;
|
||||
|
||||
load 0, 0, rab, msp ;
|
||||
add msp, msp, 4 ;
|
||||
load 0, 0, it0, msp ;
|
||||
add gr1, it0, 0 ; pop rsp
|
||||
|
||||
add msp, msp, 8 ; discount signal #
|
||||
iret
|
||||
.endm
|
||||
|
||||
.macro repair_R_stack
|
||||
add v0, msp, SIGCTX_GR1 ; interrupted gr1
|
||||
load 0, 0, v2, v0 ;
|
||||
add v0, msp, SIGCTX_RFB ;
|
||||
load 0, 0, v3, v0 ; interupted rfb
|
||||
|
||||
const v1, WS ;
|
||||
sub v1, v3, v1 ; rfb-512
|
||||
cpltu v0, v2, v1 ; test gr1 < rfb-512
|
||||
jmpf v0, $1 ;
|
||||
|
||||
add gr1, rab, 0 ;
|
||||
add v2, v1, 0 ; set LB = rfb-512
|
||||
$1:
|
||||
;* if gr1 < rfb-512 yes LB = rfb-512 signalled during spill
|
||||
;* if no, LB=gr1 interrupted cache < 126 registers
|
||||
cpleu v0, v2, rfb ; test LB<=rfb
|
||||
jmpf v0, $2 ;
|
||||
nop ;
|
||||
add v2, rfb, 0 ;
|
||||
$2:
|
||||
cpeq v0, v3, rfb ; fill rfb->'rfb
|
||||
jmpt v0, $3 ; if rfb==rfb'
|
||||
const tav, (0x80<<2) ; prepare for fill
|
||||
or tav, tav, v2 ;
|
||||
|
||||
mtsr IPA, tav ; IPA=LA<<2
|
||||
sub tav, v3, gr98 ; cache fill LA->rfb
|
||||
srl tav, tav, 2 ; convert to words
|
||||
sub tav, tav, 1 ;
|
||||
|
||||
mtsr cr, tav ;
|
||||
loadm 0, 0, gr0, v2 ; fill from LA->rfb
|
||||
$3:
|
||||
add rfb, v3, 0 ; move rfb upto 'rfb
|
||||
sub rab, v1, 0 ; assign rab to rfb-512
|
||||
|
||||
add v0, msp, SIGCTX_GR1 ;
|
||||
load 0, 0, v2, v0 ; v0 = interrupted gr1
|
||||
add gr1, v2, 0 ; move gr1 upto 'gr1
|
||||
nop ;
|
||||
.endm
|
||||
|
||||
.macro repair_regs
|
||||
mtsrim cr, 29 - 1 ; to restore locals
|
||||
loadm 0, 0, v0, msp ;
|
||||
add msp, msp, 29*4 ;
|
||||
popsr Q, tav, msp ;
|
||||
|
||||
popsr IPC, tav, msp ;
|
||||
popsr IPB, tav, msp ;
|
||||
popsr IPA, tav, msp ;
|
||||
pop FPStat3, msp ; floating point regs
|
||||
|
||||
pop FPStat2, msp ; floating point regs
|
||||
pop FPStat1, msp ; floating point regs
|
||||
pop FPStat0, msp ; floating point regs
|
||||
|
||||
add msp, msp, 3*4 ; R-stack repaired
|
||||
.endm
|
||||
|
||||
;
|
||||
;*HIF related...
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
; send the message in bufaddr to Montip.
|
||||
.macro SendMessageToMontip, bufaddr
|
||||
const lr2, bufaddr
|
||||
$1:
|
||||
call lr0, _msg_send
|
||||
consth lr2, bufaddr
|
||||
cpeq gr96, gr96, 0
|
||||
jmpf gr96, $1
|
||||
const lr2, bufaddr
|
||||
.endm
|
||||
|
||||
; build a HIF_CALL message in bufaddr to send to montip.
|
||||
.macro BuildHIFCALLMsg, bufaddr, tmp1, tmp2
|
||||
const tmp1, bufaddr
|
||||
consth tmp1, bufaddr
|
||||
const tmp2, HIF_CALL_MSGCODE
|
||||
store 0, 0, tmp2, tmp1 ; msg code
|
||||
add tmp1, tmp1, 4
|
||||
const tmp2, HIF_CALL_MSGLEN
|
||||
store 0, 0, tmp2, tmp1 ; msg len
|
||||
add tmp1, tmp1, 4
|
||||
store 0, 0, gr121, tmp1 ; service number
|
||||
add tmp1, tmp1, 4
|
||||
store 0, 0, lr2, tmp1 ; lr2
|
||||
add tmp1, tmp1, 4
|
||||
store 0, 0, lr3, tmp1 ; lr3
|
||||
add tmp1, tmp1, 4
|
||||
store 0, 0, lr4, tmp1 ; lr4
|
||||
.endm
|
||||
|
||||
;
|
||||
;*
|
||||
;* All the funky AMD style macros go in here...simply for
|
||||
;* compatility
|
||||
;
|
||||
;
|
||||
.macro IMPORT, symbol
|
||||
.extern symbol
|
||||
.endm
|
||||
|
||||
.macro GLOBAL, symbol
|
||||
.global symbol
|
||||
.endm
|
||||
|
||||
.macro USESECT, name, type
|
||||
.sect name, type
|
||||
.use name
|
||||
.endm
|
||||
|
||||
.macro SECTION, name, type
|
||||
.sect name, type
|
||||
.endm
|
||||
|
||||
.macro FUNC, fname, lineno
|
||||
.global fname
|
||||
fname:
|
||||
.endm
|
||||
|
||||
.macro ENDFUNC, fname, lineno
|
||||
.endm
|
||||
|
||||
;*************************************LONG
|
||||
.macro LONG, varname
|
||||
varname:
|
||||
.block 4
|
||||
.endm
|
||||
|
||||
;*************************************UNSIGNED LONG
|
||||
.macro ULONG, varname
|
||||
varname:
|
||||
.block 4
|
||||
.endm
|
||||
|
||||
;*************************************SHORT
|
||||
.macro SHORT, varname
|
||||
varname:
|
||||
.block 2
|
||||
.endm
|
||||
|
||||
;*************************************CHAR
|
||||
.macro CHAR, varname
|
||||
varname:
|
||||
.block 1
|
||||
.endm
|
||||
|
||||
;*************************************LONGARRAY
|
||||
.macro LONGARRAY, name, count
|
||||
name:
|
||||
.block count*4
|
||||
.endm
|
||||
|
||||
;*************************************SHORTARRAY
|
||||
|
||||
.macro SHORTARRAY, name, count
|
||||
name:
|
||||
.block count*2
|
||||
.endm
|
||||
|
||||
;*************************************CHARARRAY
|
||||
|
||||
.macro CHARARRAY, name, count
|
||||
name:
|
||||
.block count
|
||||
.endm
|
||||
|
||||
|
||||
;*************************************VOID_FPTR
|
||||
|
||||
.macro VOID_FPTR, name
|
||||
name:
|
||||
.block 4
|
||||
.endm
|
||||
@@ -1,393 +0,0 @@
|
||||
; /* @(#)register.s 1.1 96/05/23 08:57:34, TEI */
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Register Definitions and Usage Conventions
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; /* $Id$ */
|
||||
;
|
||||
|
||||
;* File information and includes.
|
||||
|
||||
.file "c_register.s"
|
||||
.ident "@(#)register.s 1.1 96/05/23 08:57:34, TEI\n"
|
||||
|
||||
; Basic guidelines for register distribution and usage are derived from
|
||||
; the AMD application notes. It would be best to stick with the conventions
|
||||
; laid out by AMD.
|
||||
; Application Note: Context Switching with 29000 Processor By Daniel Mann.
|
||||
|
||||
;
|
||||
;*************************************************************************
|
||||
;
|
||||
|
||||
;
|
||||
; Rule 1:
|
||||
; Gr1 is used as a pointer to the register stack
|
||||
; Lr1 is used as frame pointer
|
||||
;
|
||||
|
||||
.reg regsp, gr1 ; Register Stack Pointer
|
||||
.reg fp, lr1 ; frame pointer
|
||||
|
||||
.equ Rrsp, ®sp
|
||||
.equ Rfp, &fp
|
||||
|
||||
.global Rrsp, Rfp
|
||||
|
||||
;
|
||||
;*************************************************************************
|
||||
;
|
||||
|
||||
;
|
||||
; Gr2-Gr63 are not implemented in silicon
|
||||
;
|
||||
|
||||
;
|
||||
;*************************************************************************
|
||||
;
|
||||
|
||||
;
|
||||
; Rule 2:
|
||||
; The registers GR64-GR95 are dedicated for operating system use.
|
||||
;
|
||||
|
||||
; The register range GR64-GR95 i.e 32 Registers is furthur sub-divided as
|
||||
; follows...
|
||||
; gr64-gr67 interrupt handlers.
|
||||
; gr68-gr71 OS temporaries I
|
||||
; gr72-gr79 OS temporaries II
|
||||
; gr80-gr95 OS statics. Dedicated throughout the operation of a program.
|
||||
|
||||
|
||||
;
|
||||
; 32 Registers for Operating System Use.
|
||||
;
|
||||
|
||||
;
|
||||
; Assigning Names to Interrupt Handlers Registers.
|
||||
;
|
||||
|
||||
.reg OSint0, gr64
|
||||
.reg OSint1, gr65
|
||||
.reg OSint2, gr66
|
||||
.reg OSint3, gr67
|
||||
|
||||
.equ ROSint0, &OSint0
|
||||
.equ ROSint1, &OSint1
|
||||
.equ ROSint2, &OSint2
|
||||
.equ ROSint3, &OSint3
|
||||
|
||||
.global ROSint0, ROSint1, ROSint2, ROSint3
|
||||
|
||||
.reg TrapReg, gr64 ; trap register
|
||||
.reg trapreg, gr64 ; trapreg
|
||||
|
||||
.equ RTrapReg, &TrapReg
|
||||
.equ Rtrapreg, &trapreg
|
||||
|
||||
.global RTrapReg, Rtrapreg
|
||||
|
||||
|
||||
;
|
||||
; Assigning Names to Scratch/Temporary Registers.
|
||||
;
|
||||
|
||||
.reg OStmp0, gr68
|
||||
.reg OStmp1, gr69
|
||||
.reg OStmp2, gr70
|
||||
.reg OStmp3, gr71
|
||||
|
||||
.reg OStmp4, gr72
|
||||
.reg OStmp5, gr73
|
||||
.reg OStmp6, gr74
|
||||
.reg OStmp7, gr75
|
||||
|
||||
.reg OStmp8, gr76
|
||||
.reg OStmp9, gr77
|
||||
.reg OStmp10, gr78
|
||||
.reg OStmp11, gr79
|
||||
|
||||
.equ ROStmp0, &OStmp0
|
||||
.equ ROStmp1, &OStmp1
|
||||
.equ ROStmp2, &OStmp2
|
||||
.equ ROStmp3, &OStmp3
|
||||
|
||||
.equ ROStmp4, &OStmp4
|
||||
.equ ROStmp5, &OStmp5
|
||||
.equ ROStmp6, &OStmp6
|
||||
.equ ROStmp7, &OStmp7
|
||||
|
||||
.equ ROStmp8, &OStmp8
|
||||
.equ ROStmp9, &OStmp9
|
||||
.equ ROStmp10, &OStmp10
|
||||
.equ ROStmp11, &OStmp11
|
||||
|
||||
.global ROStmp0, ROStmp1, ROStmp2, ROStmp3
|
||||
.global ROStmp4, ROStmp5, ROStmp6, ROStmp7
|
||||
.global ROStmp8, ROStmp9, ROStmp10, ROStmp11
|
||||
|
||||
;
|
||||
; Assigning Names to Statics/Permanent Registers.
|
||||
;
|
||||
|
||||
.reg OSsta0, gr80 ; Spill Address Register
|
||||
.reg OSsta1, gr81 ; Fill Address Register
|
||||
.reg OSsta2, gr82 ; Signal Address Register
|
||||
.reg OSsta3, gr83 ; pcb Register
|
||||
|
||||
.reg OSsta4, gr84 ;
|
||||
.reg OSsta5, gr85 ;
|
||||
.reg OSsta6, gr86 ;
|
||||
.reg OSsta7, gr87 ;
|
||||
|
||||
.reg OSsta8, gr88 ;
|
||||
.reg OSsta9, gr89 ;
|
||||
.reg OSsta10, gr90 ;
|
||||
.reg OSsta11, gr91 ;
|
||||
|
||||
.reg OSsta12, gr92 ;
|
||||
.reg OSsta13, gr93 ;
|
||||
.reg OSsta14, gr94 ;
|
||||
.reg OSsta15, gr95 ;
|
||||
|
||||
;
|
||||
; Round 2 of Name Assignments
|
||||
;
|
||||
|
||||
;
|
||||
; Assignment of Specific Use oriented names to statics.
|
||||
;
|
||||
.reg SpillAddrReg, gr80
|
||||
.reg FillAddrReg, gr81
|
||||
.reg SignalAddrReg, gr82
|
||||
.reg pcb, gr83
|
||||
|
||||
.reg etx, gr80
|
||||
.reg ety, gr81
|
||||
.reg etz, gr82
|
||||
.reg etc, gr83
|
||||
|
||||
;*
|
||||
|
||||
.reg TimerExt, gr84
|
||||
.reg TimerUtil, gr85
|
||||
|
||||
;*
|
||||
|
||||
.reg LEDReg, gr86
|
||||
.reg ERRReg, gr87
|
||||
|
||||
.reg eta, gr86
|
||||
.reg etb, gr87
|
||||
|
||||
;*
|
||||
|
||||
|
||||
;* The following registers are used by switching code
|
||||
|
||||
.reg et0, gr88
|
||||
.reg et1, gr89
|
||||
.reg et2, gr90
|
||||
.reg et3, gr91
|
||||
|
||||
.reg et4, gr92
|
||||
.reg et5, gr93
|
||||
.reg et6, gr94
|
||||
.reg et7, gr95
|
||||
|
||||
|
||||
; The floating point trap handlers need a few static registers
|
||||
|
||||
.reg FPStat0, gr88
|
||||
.reg FPStat1, gr89
|
||||
.reg FPStat2, gr90
|
||||
.reg FPStat3, gr91
|
||||
|
||||
; The following registers are used temporarily during diagnostics.
|
||||
|
||||
.reg XLINXReg, gr92
|
||||
.reg VMBCReg, gr93
|
||||
.reg UARTReg, gr94
|
||||
.reg ETHERReg, gr95
|
||||
|
||||
;*
|
||||
|
||||
;;*
|
||||
.reg heapptr, gr90
|
||||
.reg ArgvPtr, gr91
|
||||
;;*
|
||||
|
||||
|
||||
|
||||
;
|
||||
;* Preparing to export Register Names for the Linkers benefit.
|
||||
;
|
||||
|
||||
.equ RSpillAddrReg, &SpillAddrReg
|
||||
.equ RFillAddrReg, &FillAddrReg
|
||||
.equ RSignalAddrReg, &SignalAddrReg
|
||||
.equ Rpcb, &pcb
|
||||
|
||||
.equ Retx, &etx
|
||||
.equ Rety, &ety
|
||||
.equ Retz, &etz
|
||||
.equ Reta, &eta
|
||||
|
||||
.equ Retb, &etb
|
||||
.equ Retc, &etc
|
||||
.equ RTimerExt, &TimerExt
|
||||
.equ RTimerUtil, &TimerUtil
|
||||
|
||||
.equ RLEDReg, &LEDReg
|
||||
.equ RERRReg, &ERRReg
|
||||
|
||||
.equ Ret0, &et0
|
||||
.equ Ret1, &et1
|
||||
.equ Ret2, &et2
|
||||
.equ Ret3, &et3
|
||||
|
||||
.equ RFPStat0, &FPStat0
|
||||
.equ RFPStat1, &FPStat1
|
||||
.equ RFPStat2, &FPStat2
|
||||
.equ RFPStat3, &FPStat3
|
||||
|
||||
.equ Rheapptr, &heapptr
|
||||
.equ RHeapPtr, &heapptr
|
||||
.equ RArgvPtr, &ArgvPtr
|
||||
|
||||
.equ Ret4, &et4
|
||||
.equ Ret5, &et5
|
||||
.equ Ret6, &et6
|
||||
.equ Ret7, &et7
|
||||
|
||||
.equ RXLINXReg, &XLINXReg
|
||||
.equ RVMBCReg, &VMBCReg
|
||||
.equ RUARTReg, &UARTReg
|
||||
.equ RETHERReg, ÐERReg
|
||||
|
||||
.global RSpillAddrReg, RFillAddrReg, RSignalAddrReg
|
||||
.global Rpcb, Retc
|
||||
.global RTimerExt, RTimerUtil, RLEDReg, RERRReg
|
||||
.global Ret0, Ret1, Ret2, Ret3, Ret4, Ret5, Ret6, Ret7, Reta, Retb
|
||||
.global Retx, Rety, Retz
|
||||
.global RFPStat0, RFPStat1, RFPStat2, RFPStat3
|
||||
.global Rheapptr, RHeapPtr, RArgvPtr
|
||||
.global RXLINXReg, RVMBCReg, RUARTReg, RETHERReg
|
||||
|
||||
;
|
||||
;*************************************************************************
|
||||
;
|
||||
|
||||
|
||||
;
|
||||
; Rule 3:
|
||||
; Gr96-Gr127 Compiler & Programmer use registers.
|
||||
; 32 Registers for Compiler & Programmer use
|
||||
|
||||
;
|
||||
; 16 Registers for Compiler Use.
|
||||
;
|
||||
|
||||
;
|
||||
; Compiler Temporaries and Function Return Values
|
||||
;
|
||||
|
||||
.reg v0, gr96 ; First word of Return Value
|
||||
.reg v1, gr97
|
||||
.reg v2, gr98
|
||||
.reg v3, gr99
|
||||
|
||||
.reg v4, gr100
|
||||
.reg v5, gr101
|
||||
.reg v6, gr102
|
||||
.reg v7, gr103
|
||||
|
||||
.reg v8, gr104
|
||||
.reg v9, gr105
|
||||
.reg v10, gr106
|
||||
.reg v11, gr107
|
||||
|
||||
.reg v12, gr108
|
||||
.reg v13, gr109
|
||||
.reg v14, gr110
|
||||
.reg v15, gr111
|
||||
|
||||
.equ Rv0, &v0
|
||||
.equ Rv1, &v1
|
||||
.equ Rv2, &v2
|
||||
.equ Rv3, &v3
|
||||
|
||||
.equ Rv4, &v4
|
||||
.equ Rv5, &v5
|
||||
.equ Rv6, &v6
|
||||
.equ Rv7, &v7
|
||||
|
||||
.equ Rv8, &v8
|
||||
.equ Rv9, &v9
|
||||
.equ Rv10, &v10
|
||||
.equ Rv11, &v11
|
||||
|
||||
.equ Rv12, &v12
|
||||
.equ Rv13, &v13
|
||||
.equ Rv14, &v14
|
||||
.equ Rv15, &v15
|
||||
|
||||
.global Rv0, Rv1, Rv2, Rv3, Rv4, Rv5, Rv6, Rv7, Rv8, Rv9
|
||||
.global Rv10, Rv11, Rv12, Rv13, Rv14, Rv15
|
||||
|
||||
|
||||
;
|
||||
; User Process Statics Registers
|
||||
;
|
||||
|
||||
.reg rp0, gr112 ; Reserved for Programmer, #0
|
||||
.reg rp1, gr113 ; Reserved for Programmer, #1
|
||||
.reg rp2, gr114 ; Reserved for Programmer, #2
|
||||
.reg rp3, gr115 ; Reserved for Programmer, #3
|
||||
|
||||
.equ Rrp0, &rp0
|
||||
.equ Rrp1, &rp1
|
||||
.equ Rrp2, &rp2
|
||||
.equ Rrp3, &rp3
|
||||
|
||||
.global Rrp0, Rrp1, Rrp2, Rrp3
|
||||
|
||||
;
|
||||
; Compiler Temporaries II
|
||||
;
|
||||
|
||||
.reg tv0, gr116 ;
|
||||
.reg tv1, gr117 ;
|
||||
.reg tv2, gr118 ;
|
||||
.reg tv3, gr119 ;
|
||||
.reg tv4, gr120 ;
|
||||
|
||||
.equ Rtv0, &tv0 ;
|
||||
.equ Rtv1, &tv1 ;
|
||||
.equ Rtv2, &tv2 ;
|
||||
.equ Rtv3, &tv3 ;
|
||||
.equ Rtv4, &tv4 ;
|
||||
|
||||
.global Rtv0, Rtv1, Rtv2, Rtv3, Rtv4
|
||||
|
||||
;
|
||||
; Special pointers and registers for handlers and stack operations.
|
||||
;
|
||||
|
||||
.reg tav, gr121 ; Temp, Arg for Trap Handlers
|
||||
.reg tpc, gr122 ; Temp, Ret PC for Trap Handlers
|
||||
.reg lrp, gr123 ; Large Return Pointer
|
||||
.reg slp, gr124 ; Static Link Pointer
|
||||
|
||||
.reg msp, gr125 ; Memory Stack Pointer
|
||||
.reg rab, gr126 ; Register Allocate Bound
|
||||
.reg rfb, gr127 ; Register Free Bound
|
||||
|
||||
.equ Rtav, &tav
|
||||
.equ Rtpc, &tpc
|
||||
.equ Rlrp, &lrp
|
||||
.equ Rslp, &slp
|
||||
.equ Rmsp, &msp
|
||||
.equ Rrab, &rab
|
||||
.equ Rrfb, &rfb
|
||||
|
||||
.global Rtav, Rtpc, Rlrp, Rslp, Rmsp, Rrab, Rrfb
|
||||
@@ -1,214 +0,0 @@
|
||||
; /* @(#)register.ah 1.1 96/05/23 08:56:57, TEI */
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; naming of various registers
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; /* $Id$ */
|
||||
|
||||
;* File information and includes.
|
||||
|
||||
.file "register.ah"
|
||||
.ident "@(#)register.ah 1.1 96/05/23 08:56:57, TEI\n"
|
||||
|
||||
;* Register Stack pointer and frame pointer registers.
|
||||
|
||||
.extern Rrsp, Rfp
|
||||
|
||||
.reg regsp, %%Rrsp
|
||||
.reg fp, %%Rfp
|
||||
|
||||
|
||||
.extern RTrapReg
|
||||
.extern Rtrapreg
|
||||
|
||||
.reg TrapReg, %%RTrapReg
|
||||
.reg trapreg, %%Rtrapreg
|
||||
|
||||
|
||||
;* Operating system Interrupt handler registers (gr64-gr67)
|
||||
|
||||
.extern ROSint0, ROSint1, ROSint2, ROSint3
|
||||
|
||||
.reg OSint0, %%ROSint0
|
||||
.reg OSint1, %%ROSint1
|
||||
.reg OSint2, %%ROSint2
|
||||
.reg OSint3, %%ROSint3
|
||||
|
||||
.reg it0, %%ROSint0
|
||||
.reg it1, %%ROSint1
|
||||
.reg it2, %%ROSint2
|
||||
.reg it3, %%ROSint3
|
||||
|
||||
|
||||
|
||||
;* Operating system temporary (or scratch) registers (gr68-gr79)
|
||||
|
||||
.extern ROStmp0, ROStmp1, ROStmp2, ROStmp3
|
||||
.extern ROStmp4, ROStmp5, ROStmp6, ROStmp7
|
||||
.extern ROStmp8, ROStmp9, ROStmp10, ROStmp11
|
||||
|
||||
.reg OStmp0, %%ROStmp0
|
||||
.reg OStmp1, %%ROStmp1
|
||||
.reg OStmp2, %%ROStmp2
|
||||
.reg OStmp3, %%ROStmp3
|
||||
|
||||
.reg OStmp4, %%ROStmp4
|
||||
.reg OStmp5, %%ROStmp5
|
||||
.reg OStmp6, %%ROStmp6
|
||||
.reg OStmp7, %%ROStmp7
|
||||
|
||||
.reg OStmp8, %%ROStmp8
|
||||
.reg OStmp9, %%ROStmp9
|
||||
.reg OStmp10, %%ROStmp10
|
||||
.reg OStmp11, %%ROStmp11
|
||||
|
||||
|
||||
.reg kt0, %%ROStmp0
|
||||
.reg kt1, %%ROStmp1
|
||||
.reg kt2, %%ROStmp2
|
||||
.reg kt3, %%ROStmp3
|
||||
|
||||
.reg kt4, %%ROStmp4
|
||||
.reg kt5, %%ROStmp5
|
||||
.reg kt6, %%ROStmp6
|
||||
.reg kt7, %%ROStmp7
|
||||
|
||||
.reg kt8, %%ROStmp8
|
||||
.reg kt9, %%ROStmp9
|
||||
.reg kt10, %%ROStmp10
|
||||
.reg kt11, %%ROStmp11
|
||||
|
||||
|
||||
.reg TempReg0, %%ROSint0
|
||||
.reg TempReg1, %%ROSint1
|
||||
.reg TempReg2, %%ROSint2
|
||||
.reg TempReg3, %%ROSint3
|
||||
|
||||
.reg TempReg4, %%ROStmp0
|
||||
.reg TempReg5, %%ROStmp1
|
||||
.reg TempReg6, %%ROStmp2
|
||||
.reg TempReg7, %%ROStmp3
|
||||
|
||||
.reg TempReg8, %%ROStmp4
|
||||
.reg TempReg9, %%ROStmp5
|
||||
.reg TempReg10, %%ROStmp6
|
||||
.reg TempReg11, %%ROStmp7
|
||||
|
||||
.reg TempReg12, %%ROStmp8
|
||||
.reg TempReg13, %%ROStmp9
|
||||
.reg TempReg14, %%ROStmp10
|
||||
.reg TempReg15, %%ROStmp11
|
||||
|
||||
|
||||
;* Assigned static registers
|
||||
|
||||
.extern RSpillAddrReg, RFillAddrReg, RSignalAddrReg
|
||||
.extern Rpcb, Retc
|
||||
.extern RTimerExt, RTimerUtil, RLEDReg, RERRReg
|
||||
.extern Ret0, Ret1, Ret2, Ret3, Ret4, Ret5, Ret6, Ret7, Reta, Retb
|
||||
.extern Retx, Rety, Retz
|
||||
|
||||
|
||||
.reg SpillAddrReg, %%RSpillAddrReg
|
||||
.reg FillAddrReg, %%RFillAddrReg
|
||||
.reg SignalAddrReg, %%RSignalAddrReg
|
||||
.reg pcb, %%Rpcb
|
||||
|
||||
.reg etx, %%Retx
|
||||
.reg ety, %%Rety
|
||||
.reg etz, %%Retz
|
||||
.reg eta, %%Reta
|
||||
|
||||
.reg etb, %%Retb
|
||||
.reg etc, %%Retc
|
||||
.reg TimerExt, %%RTimerExt
|
||||
.reg TimerUtil, %%RTimerUtil
|
||||
|
||||
.reg LEDReg, %%RLEDReg
|
||||
.reg ERRReg, %%RERRReg
|
||||
|
||||
|
||||
.reg et0, %%Ret0
|
||||
.reg et1, %%Ret1
|
||||
.reg et2, %%Ret2
|
||||
.reg et3, %%Ret3
|
||||
|
||||
.reg et4, %%Ret4
|
||||
.reg et5, %%Ret5
|
||||
.reg et6, %%Ret6
|
||||
.reg et7, %%Ret7
|
||||
|
||||
;
|
||||
.equ SCB1REG_NUM, 88
|
||||
.reg SCB1REG_PTR, %%Ret0
|
||||
|
||||
; The floating point trap handlers need a few static registers
|
||||
|
||||
.extern RFPStat0, RFPStat1, RFPStat2, RFPStat3
|
||||
.extern Rheapptr, RHeapPtr, RArgvPtr
|
||||
|
||||
.reg FPStat0, %%RFPStat0
|
||||
.reg FPStat1, %%RFPStat1
|
||||
.reg FPStat2, %%RFPStat2
|
||||
.reg FPStat3, %%RFPStat3
|
||||
|
||||
.reg heapptr, %%Rheapptr
|
||||
.reg HeapPtr, %%RHeapPtr
|
||||
.reg ArgvPtr, %%RArgvPtr
|
||||
|
||||
.extern RXLINXReg, RVMBCReg, RUARTReg, RETHERReg
|
||||
|
||||
.reg XLINXReg, %%RXLINXReg
|
||||
.reg VMBCReg, %%RVMBCReg
|
||||
.reg UARTReg, %%RUARTReg
|
||||
.reg ETHERReg, %%RXLINXReg
|
||||
|
||||
;* Compiler and programmer registers. (gr96-gr127)
|
||||
|
||||
.extern Rv0, Rv1, Rv2, Rv3, Rv4, Rv5, Rv6, Rv7, Rv8, Rv9
|
||||
.extern Rv10, Rv11, Rv12, Rv13, Rv14, Rv15
|
||||
|
||||
.reg v0, %%Rv0
|
||||
.reg v1, %%Rv1
|
||||
.reg v2, %%Rv2
|
||||
.reg v3, %%Rv3
|
||||
|
||||
.reg v4, %%Rv4
|
||||
.reg v5, %%Rv5
|
||||
.reg v6, %%Rv6
|
||||
.reg v7, %%Rv7
|
||||
|
||||
.reg v8, %%Rv8
|
||||
.reg v9, %%Rv9
|
||||
.reg v10, %%Rv10
|
||||
.reg v11, %%Rv11
|
||||
|
||||
.reg v12, %%Rv12
|
||||
.reg v13, %%Rv13
|
||||
.reg v14, %%Rv14
|
||||
.reg v15, %%Rv15
|
||||
|
||||
.extern Rtv0, Rtv1, Rtv2, Rtv3, Rtv4
|
||||
|
||||
.reg tv0, %%Rtv0
|
||||
.reg tv1, %%Rtv1
|
||||
.reg tv2, %%Rtv2
|
||||
.reg tv3, %%Rtv3
|
||||
.reg tv4, %%Rtv4
|
||||
|
||||
; ****************************************************************************
|
||||
; For uatrap
|
||||
; register definitions -- since this trap handler must allow for
|
||||
; nested traps and interrupts such as TLB miss, protection violation,
|
||||
; or Data Access Exception, and these trap handlers use the shared
|
||||
; Temp registers, we must maintain our own that are safe over user-
|
||||
; mode loads and stores. The following must be assigned global
|
||||
; registers which are not used in INTR[0-3], TRAP[0-1], TLB miss,
|
||||
; TLB protection violation, or data exception trap handlers.
|
||||
|
||||
; .reg cha_cpy, OStmp4 ; copy of CHA
|
||||
; .reg chd_cpy, OStmp5 ; copy of CHD
|
||||
; .reg chc_cpy, OStmp6 ; copy of CHC
|
||||
; .reg LTemp0, OStmp7 ; local temp 0
|
||||
; .reg LTemp1, OStmp8 ; local temp 1
|
||||
|
||||
; ****************************************************************************
|
||||
@@ -1,292 +0,0 @@
|
||||
; @(#)crt0.s 1.3 96/05/31 14:40:27, AMD
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Copyright 1988, 1989, 1990 Advanced Micro Devices, Inc.
|
||||
;
|
||||
; This software is the property of Advanced Micro Devices, Inc (AMD) which
|
||||
; specifically grants the user the right to modify, use and distribute this
|
||||
; software provided this notice is not removed or altered. All other rights
|
||||
; are reserved by AMD.
|
||||
;
|
||||
; AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS
|
||||
; SOFTWARE. IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL
|
||||
; DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR
|
||||
; USE OF THIS SOFTWARE.
|
||||
;
|
||||
; So that all may benefit from your experience, please report any problems
|
||||
; or suggestions about this software to the 29K Technical Support Center at
|
||||
; 800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131 in the UK, or
|
||||
; 0031-11-1129 in Japan, toll free. The direct dial number is 512-462-4118.
|
||||
;
|
||||
; Advanced Micro Devices, Inc.
|
||||
; 29K Support Products
|
||||
; Mail Stop 573
|
||||
; 5900 E. Ben White Blvd.
|
||||
; Austin, TX 78741
|
||||
; 800-292-9263
|
||||
;
|
||||
; /* $Id$ */
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
.file "crt0.s"
|
||||
|
||||
; crt0.s version 3.3-0
|
||||
;
|
||||
; This module gets control from the OS.
|
||||
; It saves away the Am29027 Mode register settings and
|
||||
; then sets up the pointers to the resident spill and fill
|
||||
; trap handlers. It then establishes argv and argc for passing
|
||||
; to main. It then calls _main. If main returns, it calls _exit.
|
||||
;
|
||||
; void = start( );
|
||||
; NOTE - not C callable (no lead underscore)
|
||||
;
|
||||
#if 0
|
||||
#include <sysmac.h>
|
||||
#endif
|
||||
;
|
||||
;
|
||||
.extern V_SPILL, V_FILL
|
||||
; .comm __29027Mode, 8 ; A shadow of the mode register
|
||||
.comm __LibInit, 4
|
||||
|
||||
.text
|
||||
.extern _main, _exit, _atexit
|
||||
|
||||
.word 0 ; Terminating tag word
|
||||
.global start
|
||||
start:
|
||||
#if 0
|
||||
sub gr1, gr1, 6 * 4
|
||||
asgeu V_SPILL, gr1, rab ; better not ever happen
|
||||
add lr1, gr1, 6 * 4
|
||||
|
||||
;
|
||||
; Save the initial value of the Am29027 Mode register
|
||||
;
|
||||
; If your system does not enter crt0 with value for Am29027 Mode
|
||||
; register in gr96 and gr97, and also the coprocessor is active
|
||||
; uncomment the next 4 instructions.
|
||||
;
|
||||
; const gr96, 0xfc00820
|
||||
; consth gr96, 0xfc00820
|
||||
; const gr97, 0x1375
|
||||
; store 1, 3, gr96, gr97
|
||||
;
|
||||
; const gr98, __29027Mode
|
||||
; consth gr98, __29027Mode
|
||||
; store 0, 0, gr96, gr98
|
||||
; add gr98, gr98, 4
|
||||
; store 0, 0, gr97, gr98
|
||||
;
|
||||
; Now call the system to setup the spill and fill trap handlers
|
||||
;
|
||||
const lr3, spill
|
||||
consth lr3, spill
|
||||
const lr2, V_SPILL
|
||||
syscall setvec
|
||||
const lr3, fill
|
||||
consth lr3, fill
|
||||
const lr2, V_FILL
|
||||
syscall setvec
|
||||
|
||||
;
|
||||
; atexit(_fini)
|
||||
;
|
||||
; const lr0, _atexit
|
||||
; consth lr0, _atexit
|
||||
; const lr2,__fini
|
||||
; calli lr0,lr0
|
||||
; consth lr2,__fini
|
||||
;
|
||||
; Now call _init
|
||||
;
|
||||
; const lr0, __init
|
||||
; consth lr0, __init
|
||||
; calli lr0,lr0
|
||||
; nop
|
||||
|
||||
;
|
||||
; Get the argv base address and calculate argc.
|
||||
;
|
||||
syscall getargs
|
||||
add lr3, v0, 0 ; argv
|
||||
add lr4, v0, 0
|
||||
constn lr2, -1
|
||||
argcloop: ; scan for NULL terminator
|
||||
load 0, 0, gr97, lr4
|
||||
add lr4, lr4, 4
|
||||
cpeq gr97, gr97, 0
|
||||
jmpf gr97, argcloop
|
||||
add lr2, lr2, 1
|
||||
;
|
||||
; Now call LibInit, if there is one. To aid runtime libraries
|
||||
; that need to do some startup initialization, we have created
|
||||
; a bss variable called LibInit. If the library does not need
|
||||
; any run-time initialization, the variable is still 0. If the
|
||||
; library does need run-time initialization, the library will
|
||||
; contain a definition like
|
||||
; void (*_LibInit)(void) = LibInitFunction;
|
||||
; The linker will match up our bss LibInit with this data LibInit
|
||||
; and the variable will not be 0. This results in the LibInit routine
|
||||
; being called via the calli instruction below.
|
||||
;
|
||||
const lr0, __LibInit
|
||||
consth lr0, __LibInit
|
||||
load 0, 0, lr0, lr0
|
||||
cpeq gr96, lr0, 0
|
||||
jmpt gr96, NoLibInit
|
||||
nop
|
||||
calli lr0, lr0
|
||||
nop
|
||||
NoLibInit:
|
||||
|
||||
;
|
||||
; Call RAMInit to initialize the data memory.
|
||||
;
|
||||
; The following code segment was used to create the two flavors of the
|
||||
; run-time initialization routines (crt0_1.o, and crt0_2.o) as described
|
||||
; in the Users Manual. If osboot is used to create a stand-alone
|
||||
; application, or the call to RAMInit is made in the start-up routine,
|
||||
; then the following is not needed.
|
||||
;
|
||||
; .ifdef ROM_LOAD
|
||||
; .extern RAMInit
|
||||
;
|
||||
; const lr0, RAMInit
|
||||
; consth lr0, RAMInit
|
||||
; calli gr96, lr0
|
||||
; nop
|
||||
; .else
|
||||
; nop
|
||||
; nop
|
||||
; nop
|
||||
; nop
|
||||
; .endif
|
||||
|
||||
;
|
||||
; Uncomment the following .comm, if you ARE NOT using osboot as released
|
||||
; with the High C 29K product, AND plan to use the romcoff utility to
|
||||
; move code and/or data sections to ROM.
|
||||
;
|
||||
; .comm RAMInit, 4
|
||||
;
|
||||
; Furthermore, if the above is uncommented, then use the following logic
|
||||
; to call the RAMInit function, if needed.
|
||||
;
|
||||
; const lr0, RAMInit
|
||||
; consth lr0, RAMInit
|
||||
; load 0, 0, gr96, lr0
|
||||
; cpeq gr96, gr96, 0 ; nothing there?
|
||||
; jmpt gr96, endRAMInit ; yes, nothing to init
|
||||
; nop
|
||||
; calli gr96, lr0 ; no, then instruction found
|
||||
; nop ; execute function.
|
||||
;
|
||||
|
||||
|
||||
;
|
||||
; call main, passing it 2 arguments. main( argc, argv )
|
||||
;
|
||||
const lr0, _main
|
||||
consth lr0, _main
|
||||
calli lr0, lr0
|
||||
nop
|
||||
;
|
||||
; call exit
|
||||
;
|
||||
const lr0, _exit
|
||||
consth lr0, _exit
|
||||
calli lr0, lr0
|
||||
add lr2, gr96, 0
|
||||
;
|
||||
; Should never get here, but just in case
|
||||
;
|
||||
loop:
|
||||
syscall exit
|
||||
jmp loop
|
||||
nop
|
||||
.sbttl "Spill and Fill trap handlers"
|
||||
.eject
|
||||
;
|
||||
; SPILL, FILL trap handlers
|
||||
;
|
||||
; Note that these Spill and Fill trap handlers allow the OS to
|
||||
; assume that the only registers of use are between gr1 and rfb.
|
||||
; Therefore, if the OS desires to, it may simply preserve from
|
||||
; lr0 for (rfb-gr1)/4 registers when doing a context save.
|
||||
;
|
||||
;
|
||||
; Here is the spill handler
|
||||
;
|
||||
; spill registers from [*gr1..*rab)
|
||||
; and move rab downto where gr1 points
|
||||
;
|
||||
; rab must change before rfb for signals to work
|
||||
;
|
||||
; On entry: rfb - rab = windowsize, gr1 < rab
|
||||
; Near the end: rfb - rab > windowsize, gr1 == rab
|
||||
; On exit: rfb - rab = windowsize, gr1 == rab
|
||||
;
|
||||
.global spill
|
||||
spill:
|
||||
sub tav, rab, gr1 ; tav = number of bytes to spill
|
||||
srl tav, tav, 2 ; change byte count to word count
|
||||
sub tav, tav, 1 ; make count zero based
|
||||
mtsr CR, tav ; set Count Remaining register
|
||||
sub tav, rab, gr1
|
||||
sub tav, rfb, tav ; pull down free bound and save it in rab
|
||||
add rab, gr1, 0 ; first pull down allocate bound
|
||||
storem 0, 0, lr0, tav ; store lr0..lr(tav) into rfb
|
||||
jmpi tpc ; return...
|
||||
add rfb, tav, 0
|
||||
;
|
||||
; Here is the fill handler
|
||||
;
|
||||
; fill registers from [*rfb..*lr1)
|
||||
; and move rfb upto where lr1 points.
|
||||
;
|
||||
; rab must change before rfb for signals to work
|
||||
;
|
||||
; On entry: rfb - rab = windowsize, lr1 > rfb
|
||||
; Near the end: rfb - rab < windowsize, lr1 == rab + windowsize
|
||||
; On exit: rfb - rab = windowsize, lr1 == rfb
|
||||
;
|
||||
.global fill
|
||||
fill:
|
||||
const tav, 0x80 << 2
|
||||
or tav, tav, rfb ; tav = ((rfb>>2) | 0x80)<<2 == [rfb]<<2
|
||||
mtsr IPA, tav ; ipa = [rfb]<<2 == 1st reg to fill
|
||||
; gr0 is now the first reg to fill
|
||||
sub tav, lr1, rfb ; tav = number of bytes to fill
|
||||
add rab, rab, tav ; push up allocate bound
|
||||
srl tav, tav, 2 ; change byte count to word count
|
||||
sub tav, tav, 1 ; make count zero based
|
||||
mtsr CR, tav ; set Count Remaining register
|
||||
loadm 0, 0, gr0, rfb ; load registers
|
||||
jmpi tpc ; return...
|
||||
add rfb, lr1, 0 ; ... first pushing up free bound
|
||||
|
||||
;
|
||||
; The __init function
|
||||
;
|
||||
; .sect .init,text
|
||||
; .use .init
|
||||
; .global __init
|
||||
;__init:
|
||||
; sub gr1,gr1,16
|
||||
; asgeu V_SPILL,gr1,gr126
|
||||
; add lr1,gr1,24
|
||||
;
|
||||
;
|
||||
; The __fini function
|
||||
;
|
||||
; .sect .fini,text
|
||||
; .use .fini
|
||||
; .global __fini
|
||||
;__fini:
|
||||
; sub gr1,gr1,16
|
||||
; asgeu V_SPILL,gr1,gr126
|
||||
; add lr1,gr1,24
|
||||
;
|
||||
#endif
|
||||
.end
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,47 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
VPATH = @srcdir@:@srcdir@/../../../shared
|
||||
|
||||
PGM = $(ARCH)/startup.rel
|
||||
|
||||
C_FILES = bspclean.c bsplibc.c bsppost.c bspstart.c bootcard.c main.c sbrk.c \
|
||||
setvec.c gnatinstallhandler.c
|
||||
C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.$(OBJEXT))
|
||||
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
include $(top_srcdir)/../../../../../../automake/compile.am
|
||||
include $(top_srcdir)/../../../../../../automake/lib.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
$(PGM): $(OBJS)
|
||||
$(make-rel)
|
||||
|
||||
bsplib_DATA = linkcmds ramlink romlink
|
||||
|
||||
$(PROJECT_RELEASE)/lib/linkcmds: linkcmds
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
$(PROJECT_RELEASE)/lib/ramlink: ramlink
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
$(PROJECT_RELEASE)/lib/romlink: romlink
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
# the .rel file built here will be put into libbsp.a by ../wrapup/Makefile
|
||||
TMPINSTALL_FILES += $(PROJECT_RELEASE)/lib/ramlink
|
||||
TMPINSTALL_FILES += $(PROJECT_RELEASE)/lib/linkcmds
|
||||
TMPINSTALL_FILES += $(PROJECT_RELEASE)/lib/romlink
|
||||
|
||||
all-local: $(ARCH) $(OBJS) $(PGM) $(TMPINSTALL_FILES)
|
||||
|
||||
.PRECIOUS: $(PGM)
|
||||
|
||||
EXTRA_DIST = bspclean.c bspstart.c main.c ramlink romlink setvec.c
|
||||
|
||||
include $(top_srcdir)/../../../../../../automake/local.am
|
||||
@@ -1,29 +0,0 @@
|
||||
/* bsp_cleanup()
|
||||
*
|
||||
* This routine normally is part of start.s and usually returns
|
||||
* control to a monitor.
|
||||
*
|
||||
* INPUT: NONE
|
||||
*
|
||||
* OUTPUT: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* 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 <rtems.h>
|
||||
#include <bsp.h>
|
||||
|
||||
#ifndef lint
|
||||
static char _sccsid[] = "@(#)bspclean.c 04/08/96 1.1\n";
|
||||
#endif
|
||||
|
||||
void bsp_cleanup( void )
|
||||
{
|
||||
}
|
||||
@@ -1,177 +0,0 @@
|
||||
/*
|
||||
* This routine starts the application. It includes application,
|
||||
* board, and monitor specific initialization and configuration.
|
||||
* The generic CPU dependent initialization has been performed
|
||||
* before this routine is invoked.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* 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 <string.h>
|
||||
|
||||
#include <bsp.h>
|
||||
#include <rtems/libio.h>
|
||||
#include <rtems/libcsupport.h>
|
||||
|
||||
#ifndef lint
|
||||
static char _sccsid[] = "@(#)bspstart.c 09/11/96 1.15\n";
|
||||
#endif
|
||||
|
||||
int CPU_CLOCK_RATE_MHZ = 25;
|
||||
|
||||
/*
|
||||
* The original table from the application and our copy of it with
|
||||
* some changes.
|
||||
*/
|
||||
|
||||
extern rtems_configuration_table Configuration;
|
||||
|
||||
rtems_configuration_table BSP_Configuration;
|
||||
|
||||
rtems_cpu_table Cpu_table;
|
||||
|
||||
char *rtems_progname;
|
||||
|
||||
/* Initialize whatever libc we are using
|
||||
* called from postdriver hook
|
||||
*/
|
||||
|
||||
#define HEAP_BLOCK_SIZE (16 * 1024)
|
||||
|
||||
rtems_unsigned32 heap_size = 0;
|
||||
rtems_unsigned32 heap_start;
|
||||
|
||||
/*
|
||||
* Use the shared implementations of the following routines
|
||||
*/
|
||||
|
||||
void bsp_postdriver_hook(void);
|
||||
void bsp_libc_init( void *, unsigned32, int );
|
||||
|
||||
/*
|
||||
* Function: bsp_pretasking_hook
|
||||
* Created: 95/03/10
|
||||
*
|
||||
* Description:
|
||||
* BSP pretasking hook. Called just before drivers are initialized.
|
||||
* Used to setup libc and install any BSP extensions.
|
||||
*
|
||||
* NOTES:
|
||||
* Must not use libc (to do io) from here, since drivers are
|
||||
* not yet initialized.
|
||||
*
|
||||
*/
|
||||
|
||||
void bsp_pretasking_hook(void)
|
||||
{
|
||||
/* allocate a maximum of 2 megabytes for the heap */
|
||||
heap_size = 2 * 1024 * 1024;
|
||||
|
||||
/* allocate all remaining memory to the heap */
|
||||
do {
|
||||
heap_size -= HEAP_BLOCK_SIZE;
|
||||
/* JRS just to link 9/22/2000 */
|
||||
#if 0
|
||||
heap_start = _sysalloc( heap_size );
|
||||
#else
|
||||
heap_start = 0;
|
||||
#endif
|
||||
} while ( !heap_start );
|
||||
|
||||
if (!heap_start)
|
||||
rtems_fatal_error_occurred( heap_size );
|
||||
|
||||
if (heap_start & (CPU_ALIGNMENT-1))
|
||||
heap_start = (heap_start + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1);
|
||||
|
||||
|
||||
bsp_libc_init((void *) heap_start, heap_size, 0);
|
||||
|
||||
|
||||
#ifdef RTEMS_DEBUG
|
||||
rtems_debug_enable( RTEMS_DEBUG_ALL_MASK );
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* bsp_start
|
||||
*
|
||||
* This routine does the bulk of the system initialization.
|
||||
*/
|
||||
|
||||
int bsp_start(
|
||||
int argc,
|
||||
char **argv,
|
||||
char **environp
|
||||
)
|
||||
{
|
||||
if ((argc > 0) && argv && argv[0])
|
||||
rtems_progname = argv[0];
|
||||
else
|
||||
rtems_progname = "RTEMS";
|
||||
|
||||
/* set the PIA0 register wait states */
|
||||
*(volatile unsigned32 *)0x80000020 = 0x04080000;
|
||||
|
||||
/*
|
||||
* Allocate the memory for the RTEMS Work Space. This can come from
|
||||
* a variety of places: hard coded address, malloc'ed from outside
|
||||
* RTEMS world (e.g. simulator or primitive memory manager), or (as
|
||||
* typically done by stock BSPs) by subtracting the required amount
|
||||
* of work space from the last physical address on the CPU board.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Need to "allocate" the memory for the RTEMS Workspace and
|
||||
* tell the RTEMS configuration where it is. This memory is
|
||||
* not malloc'ed. It is just "pulled from the air".
|
||||
*/
|
||||
|
||||
/* JRS just to link 9/22/2000 */
|
||||
#if 0
|
||||
BSP_Configuration.work_space_start = _sysalloc( BSP_Configuration.work_space_size + 512 );
|
||||
#else
|
||||
BSP_Configuration.work_space_start = 0;
|
||||
#endif
|
||||
if (!BSP_Configuration.work_space_start)
|
||||
rtems_fatal_error_occurred( BSP_Configuration.work_space_size );
|
||||
|
||||
BSP_Configuration.work_space_start = (void *) ((unsigned int)((char *)BSP_Configuration.work_space_start + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1));
|
||||
|
||||
/*
|
||||
* initialize the CPU table for this BSP
|
||||
*/
|
||||
|
||||
Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */
|
||||
Cpu_table.postdriver_hook = bsp_postdriver_hook;
|
||||
Cpu_table.interrupt_stack_size = CONFIGURE_INTERRUPT_STACK_MEMORY;
|
||||
|
||||
/* JRS just to link 9/22/2000 */
|
||||
#if 0
|
||||
_settrap( 109,&a29k_enable_sup);
|
||||
_settrap( 110,&a29k_disable_sup);
|
||||
_settrap( 111,&a29k_enable_all_sup);
|
||||
_settrap( 112,&a29k_disable_all_sup);
|
||||
_settrap( 106,&a29k_context_switch_sup);
|
||||
_settrap( 107,&a29k_context_restore_sup);
|
||||
_settrap( 108,&a29k_context_save_sup);
|
||||
_settrap( 105,&a29k_sigdfl_sup);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Start RTEMS
|
||||
*/
|
||||
|
||||
rtems_initialize_executive( &BSP_Configuration, &Cpu_table );
|
||||
|
||||
bsp_cleanup();
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
OUTPUT_FORMAT("coff-a29k-big")
|
||||
SEARCH_DIR(/opt/a29k-rtems/a29k-rtems/lib);
|
||||
SECTIONS
|
||||
{
|
||||
.text : {
|
||||
*(.text)
|
||||
__etext = .;
|
||||
__CTOR_LIST__ = .;
|
||||
LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
|
||||
*(.ctors)
|
||||
LONG(0)
|
||||
__CTOR_END__ = .;
|
||||
__DTOR_LIST__ = .;
|
||||
LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
|
||||
*(.dtors)
|
||||
LONG(0)
|
||||
__DTOR_END__ = .;
|
||||
*(.lit)
|
||||
*(.shdata)
|
||||
}
|
||||
.shbss SIZEOF(.text) + ADDR(.text) : {
|
||||
*(.shbss)
|
||||
}
|
||||
.data : {
|
||||
*(.data)
|
||||
__edata = .;
|
||||
}
|
||||
.bss SIZEOF(.data) + ADDR(.data) :
|
||||
{
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
__end = ALIGN(0x8);
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
/* main()
|
||||
*
|
||||
* This is the entry point for the application. It calls
|
||||
* the bsp_start routine to the actual dirty work.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* 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 <rtems.h>
|
||||
#include <bsp.h>
|
||||
|
||||
#ifndef lint
|
||||
static char _sccsid[] = "@(#)main.c 06/30/96 1.2\n";
|
||||
#endif
|
||||
|
||||
int main(
|
||||
int argc,
|
||||
char **argv,
|
||||
char **environp
|
||||
)
|
||||
{
|
||||
bsp_start( argc, argv, environp );
|
||||
|
||||
/*
|
||||
* May be able to return to the "crt/start.s" code but also
|
||||
* may not be able to. Do something here which is board dependent.
|
||||
*/
|
||||
|
||||
_exit(0);
|
||||
rtems_fatal_error_occurred( 0 );
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
;@(#)ez030.cmd 1.1 93/04/06 20:00:10, Copyright 1993 AMD.
|
||||
;Linker command file header for EZ-030 evaluation board.
|
||||
;Usage: ld29 -c .../29k/lib/ez030.cmd -o ...
|
||||
; -or-
|
||||
; hc29 -cmdez030.cmd ...
|
||||
;
|
||||
; $Id$
|
||||
;
|
||||
ALIGN .text=8192
|
||||
ALIGN .data=8192
|
||||
ORDER .text=0x40005000,!text,!data,!lit,!bss
|
||||
@@ -1,146 +0,0 @@
|
||||
;
|
||||
; $Id$
|
||||
;
|
||||
;#{
|
||||
;# SCCS INFORMATION:
|
||||
;# SID = @(#)sa29200.lnk 4.1; DLU=95/09/14-11:05:57
|
||||
;# Q = @(#) Copyright (C) 1995 Advanced Micro Devices, Inc.
|
||||
;# Module Type = @(#) OSBOOT/DBG_CORE absolute liker file (AMD-EPD-29K, AMIR)
|
||||
;# SCCS Path = %P\%
|
||||
;# SCCS File = %F\%
|
||||
;# FileName = sa29200.lnk
|
||||
;# SCCS ID = 4.1
|
||||
;# Date Update = 14 Sep 1995, (DLU=95/09/14-11:05:57)
|
||||
;# Date Extract = 12 Oct 1995, (DLE=95/10/12-16:27:31)
|
||||
;#}
|
||||
; @(#)sa29200.lnk 3.6 94/08/22 11:58:54, Srini, AMD.
|
||||
; This is the linker command file used to bind the inrementally linked
|
||||
; osboot.o module to a memory map. This also defines some link-time constants
|
||||
; used in the code. These constants are genral for all 29K family members.
|
||||
; You only need to customize, if necessary, the definitions that affect
|
||||
; your target processor, and leave the rest alone.
|
||||
; The default values in this file are for binding osboot.o for use with
|
||||
; SA29200 stand-alone board with the -29200/-29205 option.
|
||||
;
|
||||
; Order the code segments according to the memory map structure.
|
||||
; The defaul OSBOOT has only .text and .bss sections. You need to ORDER
|
||||
; other sections of your applications that are not included below.
|
||||
; We use separate ORDER statements below to distinguish the two memory
|
||||
; regions used. The text section is bound to ROM memory region, and the
|
||||
; data region to RAM memory space.
|
||||
; MAKE SURE to order the BSS section at the very end. This is because the
|
||||
; BSS section size could get adjusted after linking with raminit.o (produced
|
||||
; by romcoff utility) or other initialization routines. This change in size
|
||||
; could affect the offsets used by the program to refer to the remaining data
|
||||
; sections that follow BSS.
|
||||
ALIGN ProcInit=16
|
||||
ORDER Reset=0x0
|
||||
ORDER ProcInit,OsbText,.text,!text
|
||||
ORDER .lit,!lit
|
||||
ORDER vectable=0x40000000
|
||||
ORDER msg_data=0x40000400
|
||||
ORDER .data,!data
|
||||
ORDER OsbBss,dbg_030,dbg_bss,cfg_bss,.bss,!bss
|
||||
ORDER HeapBase
|
||||
ORDER .comment
|
||||
; For Stand-Alone application out of ROM use the ORDER statements below:
|
||||
; For Stand-Alone application out of RAM use the ORDER statement below:
|
||||
;ORDER Reset=0x40010000,ProcInit,OsbText,.text,!text,.lit,!lit,.data,!data,msg_data,dbg_dat,.bss,!bss,HeapBase,.comment
|
||||
;
|
||||
; definitions of link time constants used in code.
|
||||
;
|
||||
; Definition of the initial value of CPS register.
|
||||
; The value below is for an Am29200 processor. It sets TU, SM,DI, DA,IM fields
|
||||
; bits in the register. You may modify it to suit your target environment.
|
||||
; Like, changing the IM field for instance. IM is 0x11 by default enabling
|
||||
; all INTR[0-3] lines.
|
||||
;public _init_CPS=0x87F
|
||||
public _init_CPS=0x20813
|
||||
;public _init_CPS=0x2081F
|
||||
;public _init_CPS=0x081F
|
||||
; Define the memory map in general values. The code - except for simulators -
|
||||
; configures the external RAM at run-time and updates the DMemSize value.
|
||||
; DMemStart and DMemSize are the most important values below. DMemStart is
|
||||
; used to initialize the vector base address register (VAB). And DMemSize
|
||||
; is used to find the highest addressable data memory to place the register
|
||||
; and memory stacks. Remember, DMemSize is configured at run-time for hardware
|
||||
; targets and updated.
|
||||
public VectorBaseAddress=0x40000000
|
||||
public IMemStart=0x0000000
|
||||
public IMemSize=0xfffff
|
||||
public DMemStart=0x40000000
|
||||
#public DMemStart=0x100000
|
||||
public DMemSize=0xfffff
|
||||
#public DMemSize=0x17ffff
|
||||
#public DMemSize=0x3fffffff
|
||||
public RMemStart=0x0
|
||||
public RMemSize=0xfffff
|
||||
public EnableDRAMSizing=1
|
||||
;
|
||||
; For the 29K Microcontrollers, you need to define the ROM Control register
|
||||
; value (RMCT_VALUE), the ROM Configuration register value (RMCF_VALUE), and
|
||||
; the DRAM Control register value (DRCT_VALUE) based on DMemSize specified
|
||||
; above. This could be overwritten in software targets such as the simulator.
|
||||
; ROM and RAM Control registers. ROM COnfiguration. (not valid for Am2900X,
|
||||
; Am29050, and Am2903X processors)
|
||||
; The DRAM REFRATE value (in DRCT) must be specified here. To disable
|
||||
; DRAM refreshing (on a system with no DRAM), set REFRATE field in DRCT
|
||||
; to zero. Otherwise, set it to the desired frequency. The default is 0xFF
|
||||
; The default values in this file are for Am2920X processors.
|
||||
;public RMCT_VALUE=0x03030303
|
||||
;public DRCT_VALUE=0x888800FF
|
||||
;public RMCF_VALUE=0x00f8f8f8
|
||||
;
|
||||
public RMCT_VALUE=0x4a424300
|
||||
public DRCT_VALUE=0xccc000f0
|
||||
public RMCF_VALUE=0x011121ff
|
||||
;
|
||||
;
|
||||
; Execute trap handlers from ROM? If your trap handlers are in ROM space,
|
||||
; then set _TRAPINROM to TWO (0x2). It is used to modify the tarp vector
|
||||
; address installed to set the R bit when fetched. If the trap handlers in
|
||||
; ROM or if there is no ROM-space (no RE bit in CPS), set _TRAPINROM to ZERO.
|
||||
; The default in this file is for SA29200 board and _TRAPINROM is set to ZERO.
|
||||
public _TRAPINROM=0
|
||||
;
|
||||
; Define the processor clock frequencies. These values are used by the HIF
|
||||
; kernel to provide some HIF services.
|
||||
public TicksPerMillisecond=16000
|
||||
public ClockFrequency=16000000
|
||||
;
|
||||
; There are some C functions which are not leaf functions. However, they are
|
||||
; no expected to spill or fill registers. We ensure that by setting up a
|
||||
; pseudo register stack before calling those functions. The code generated
|
||||
; for those functions however do have the prologue and epilogue which refer
|
||||
; to the symbols V_SPILL and V_FILL. The linker does not know about these
|
||||
; symbols. So we define it here so that it does not complain.
|
||||
; If you use the hc29 compiler driver to link the objects it will warn that
|
||||
; the definitions here are already internally defined. You
|
||||
; can use hc29 with -nocrt0 option to do the linking for linear memory spaces.
|
||||
; public V_SPILL=64
|
||||
; public V_FILL=65
|
||||
;
|
||||
; Set the UART debug/monitor port serial communications baud rate.
|
||||
;
|
||||
public UCLK=32000000
|
||||
; INITBAUD defines the cold start baud rate. This is the baud rate
|
||||
; the monitor would use when powered up. This can be overridden by
|
||||
; defining BAUDRATE on the assembler/compiler command line.
|
||||
public INITBAUD=9600
|
||||
;
|
||||
; Is there a SCC 8530 on the target?
|
||||
; If there is an 8530 SC on target, define the symbols below appropriately.
|
||||
; The routines in scc8530.s use these values to access the registers of
|
||||
; SCC and program it. The default values are for EZ030 target.
|
||||
; Baudrate can be specified on the command-line to override the default
|
||||
; baud rate defined in scc8530.s.
|
||||
; scc channel A control
|
||||
;public SCC8530_CHA_CONTROL=0xC0000007
|
||||
; scc channel B control
|
||||
;public SCC8530_CHB_CONTROL=0xC0000003
|
||||
; scc channel A data
|
||||
;public SCC8530_CHA_DATA=0xC000000F
|
||||
; scc channel B data
|
||||
;public SCC8530_CHB_DATA=0xC000000B
|
||||
; scc baud clock generator
|
||||
;public SCC8530_BAUD_CLK_ENBL=3
|
||||
@@ -1,53 +0,0 @@
|
||||
/* set_vector
|
||||
*
|
||||
* This routine installs an interrupt vector on the target Board/CPU.
|
||||
* This routine is allowed to be as board dependent as necessary.
|
||||
*
|
||||
* INPUT:
|
||||
* handler - interrupt handler entry point
|
||||
* vector - vector number
|
||||
* type - 0 indicates raw hardware connect
|
||||
* 1 indicates RTEMS interrupt connect
|
||||
*
|
||||
* RETURNS:
|
||||
* address of previous interrupt handler
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* 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 <rtems.h>
|
||||
#include <bsp.h>
|
||||
|
||||
#ifndef lint
|
||||
static char _sccsid[] = "@(#)setvec.c 06/30/96 1.2\n";
|
||||
#endif
|
||||
|
||||
no_cpu_isr_entry set_vector( /* returns old vector */
|
||||
rtems_isr_entry handler, /* isr routine */
|
||||
rtems_vector_number vector, /* vector number */
|
||||
int type /* RTEMS or RAW intr */
|
||||
)
|
||||
{
|
||||
no_cpu_isr_entry previous_isr;
|
||||
|
||||
if ( type )
|
||||
rtems_interrupt_catch( handler, vector, (rtems_isr_entry *) &previous_isr );
|
||||
else {
|
||||
/* XXX: install non-RTEMS ISR as "raw" interupt */
|
||||
/* JRS just to link 9/22/2000 */
|
||||
#if 0
|
||||
_settrap( vector, handler );
|
||||
#else
|
||||
;
|
||||
#endif
|
||||
}
|
||||
return previous_isr;
|
||||
}
|
||||
|
||||
@@ -1,195 +0,0 @@
|
||||
#
|
||||
# Timing Test Suite Results for the NO_BSP
|
||||
#
|
||||
# NOTE: This is just a template. The times are irrelevant since this BSP
|
||||
# can only be compiled -- not executed.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
|
||||
Board:
|
||||
CPU: include coprocessor if applicable
|
||||
Clock Speed:
|
||||
Memory Configuration: SRAM, DRAM, cache, etc
|
||||
Wait States:
|
||||
|
||||
Times Reported in: cycles, microseconds, etc
|
||||
Timer Source: Count Down Timer, on-CPU cycle counter, etc
|
||||
|
||||
Column X:
|
||||
Column Y:
|
||||
|
||||
# DESCRIPTION A B
|
||||
== ================================================================= ==== ====
|
||||
1 rtems_semaphore_create 20
|
||||
rtems_semaphore_delete 21
|
||||
rtems_semaphore_obtain: available 15
|
||||
rtems_semaphore_obtain: not available -- NO_WAIT 15
|
||||
rtems_semaphore_release: no waiting tasks 16
|
||||
|
||||
2 rtems_semaphore_obtain: not available -- caller blocks 62
|
||||
|
||||
3 rtems_semaphore_release: task readied -- preempts caller 55
|
||||
|
||||
4 rtems_task_restart: blocked task -- preempts caller 77
|
||||
rtems_task_restart: ready task -- preempts caller 70
|
||||
rtems_semaphore_release: task readied -- returns to caller 25
|
||||
rtems_task_create 57
|
||||
rtems_task_start 31
|
||||
rtems_task_restart: suspended task -- returns to caller 36
|
||||
rtems_task_delete: suspended task 47
|
||||
rtems_task_restart: ready task -- returns to caller 37
|
||||
rtems_task_restart: blocked task -- returns to caller 46
|
||||
rtems_task_delete: blocked task 50
|
||||
|
||||
5 rtems_task_suspend: calling task 51
|
||||
rtems_task_resume: task readied -- preempts caller 49
|
||||
|
||||
6 rtems_task_restart: calling task 59
|
||||
rtems_task_suspend: returns to caller 18
|
||||
rtems_task_resume: task readied -- returns to caller 19
|
||||
rtems_task_delete: ready task 50
|
||||
|
||||
7 rtems_task_restart: suspended task -- preempts caller 70
|
||||
|
||||
8 rtems_task_set_priority: obtain current priority 12
|
||||
rtems_task_set_priority: returns to caller 27
|
||||
rtems_task_mode: obtain current mode 5
|
||||
rtems_task_mode: no reschedule 5
|
||||
rtems_task_mode: reschedule -- returns to caller 8
|
||||
rtems_task_mode: reschedule -- preempts caller 39
|
||||
rtems_task_set_note 13
|
||||
rtems_task_get_note 13
|
||||
rtems_clock_set 33
|
||||
rtems_clock_get 3
|
||||
|
||||
9 rtems_message_queue_create 110
|
||||
rtems_message_queue_send: no waiting tasks 37
|
||||
rtems_message_queue_urgent: no waiting tasks 37
|
||||
rtems_message_queue_receive: available 31
|
||||
rtems_message_queue_flush: no messages flushed 12
|
||||
rtems_message_queue_flush: messages flushed 16
|
||||
rtems_message_queue_delete 26
|
||||
|
||||
10 rtems_message_queue_receive: not available -- NO_WAIT 15
|
||||
rtems_message_queue_receive: not available -- caller blocks 62
|
||||
|
||||
11 rtems_message_queue_send: task readied -- preempts caller 72
|
||||
|
||||
12 rtems_message_queue_send: task readied -- returns to caller 39
|
||||
|
||||
13 rtems_message_queue_urgent: task readied -- preempts caller 72
|
||||
|
||||
14 rtems_message_queue_urgent: task readied -- returns to caller 39
|
||||
|
||||
15 rtems_event_receive: obtain current events 1
|
||||
rtems_event_receive: not available -- NO_WAIT 12
|
||||
rtems_event_receive: not available -- caller blocks 56
|
||||
rtems_event_send: no task readied 12
|
||||
rtems_event_receive: available 12
|
||||
rtems_event_send: task readied -- returns to caller 24
|
||||
|
||||
16 rtems_event_send: task readied -- preempts caller 55
|
||||
|
||||
17 rtems_task_set_priority: preempts caller 62
|
||||
|
||||
18 rtems_task_delete: calling task 83
|
||||
|
||||
19 rtems_signal_catch 9
|
||||
rtems_signal_send: returns to caller 15
|
||||
rtems_signal_send: signal to self 18
|
||||
exit ASR overhead: returns to calling task 22
|
||||
exit ASR overhead: returns to preempting task 49
|
||||
|
||||
20 rtems_partition_create 35
|
||||
rtems_region_create 23
|
||||
rtems_partition_get_buffer: available 15
|
||||
rtems_partition_get_buffer: not available 13
|
||||
rtems_partition_return_buffer 18
|
||||
rtems_partition_delete 16
|
||||
rtems_region_get_segment: available 22
|
||||
rtems_region_get_segment: not available -- NO_WAIT 21
|
||||
rtems_region_return_segment: no waiting tasks 19
|
||||
rtems_region_get_segment: not available -- caller blocks 64
|
||||
rtems_region_return_segment: task readied -- preempts caller 74
|
||||
rtems_region_return_segment: task readied -- returns to caller 44
|
||||
rtems_region_delete 16
|
||||
rtems_io_initialize 2
|
||||
rtems_io_open 1
|
||||
rtems_io_close 1
|
||||
rtems_io_read 1
|
||||
rtems_io_write 1
|
||||
rtems_io_control 1
|
||||
|
||||
21 rtems_task_ident 149
|
||||
rtems_message_queue_ident 145
|
||||
rtems_semaphore_ident 156
|
||||
rtems_partition_ident 145
|
||||
rtems_region_ident 148
|
||||
rtems_port_ident 145
|
||||
rtems_timer_ident 145
|
||||
rtems_rate_monotonic_ident 145
|
||||
|
||||
22 rtems_message_queue_broadcast: task readied -- returns to caller 42
|
||||
rtems_message_queue_broadcast: no waiting tasks 17
|
||||
rtems_message_queue_broadcast: task readied -- preempts caller 78
|
||||
|
||||
23 rtems_timer_create 14
|
||||
rtems_timer_fire_after: inactive 22
|
||||
rtems_timer_fire_after: active 24
|
||||
rtems_timer_cancel: active 15
|
||||
rtems_timer_cancel: inactive 13
|
||||
rtems_timer_reset: inactive 21
|
||||
rtems_timer_reset: active 23
|
||||
rtems_timer_fire_when: inactive 34
|
||||
rtems_timer_fire_when: active 34
|
||||
rtems_timer_delete: active 19
|
||||
rtems_timer_delete: inactive 17
|
||||
rtems_task_wake_when 69
|
||||
|
||||
24 rtems_task_wake_after: yield -- returns to caller 9
|
||||
rtems_task_wake_after: yields -- preempts caller 45
|
||||
|
||||
25 rtems_clock_tick 4
|
||||
|
||||
26 _ISR_Disable 0
|
||||
_ISR_Flash 1
|
||||
_ISR_Enable 1
|
||||
_Thread_Disable_dispatch 0
|
||||
_Thread_Enable_dispatch 7
|
||||
_Thread_Set_state 11
|
||||
_Thread_Disptach (NO FP) 31
|
||||
context switch: no floating point contexts 21
|
||||
context switch: self 10
|
||||
context switch: to another task 10
|
||||
context switch: restore 1st FP task 25
|
||||
fp context switch: save idle, restore idle 31
|
||||
fp context switch: save idle, restore initialized 19
|
||||
fp context switch: save initialized, restore initialized 20
|
||||
_Thread_Resume 7
|
||||
_Thread_Unblock 7
|
||||
_Thread_Ready 9
|
||||
_Thread_Get 4
|
||||
_Semaphore_Get 2
|
||||
_Thread_Get: invalid id 0
|
||||
|
||||
27 interrupt entry overhead: returns to interrupted task 6
|
||||
interrupt exit overhead: returns to interrupted task 6
|
||||
interrupt entry overhead: returns to nested interrupt 6
|
||||
interrupt exit overhead: returns to nested interrupt 5
|
||||
interrupt entry overhead: returns to preempting task 7
|
||||
interrupt exit overhead: returns to preempting task 36
|
||||
|
||||
28 rtems_port_create 16
|
||||
rtems_port_external_to_internal 11
|
||||
rtems_port_internal_to_external 11
|
||||
rtems_port_delete 16
|
||||
|
||||
29 rtems_rate_monotonic_create 15
|
||||
rtems_rate_monotonic_period: initiate period -- returns to caller 21
|
||||
rtems_rate_monotonic_period: obtain status 13
|
||||
rtems_rate_monotonic_cancel 16
|
||||
rtems_rate_monotonic_delete: inactive 18
|
||||
rtems_rate_monotonic_delete: active 20
|
||||
rtems_rate_monotonic_period: conclude periods -- caller blocks 53
|
||||
@@ -1,2 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,25 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
BSP_FILES = startup console iic ethernet flash nvram
|
||||
CPU_FILES = clock timer
|
||||
|
||||
# bummer; have to use $foreach since % pattern subst rules only replace 1x
|
||||
OBJS = $(foreach piece, $(BSP_FILES), $(wildcard ../$(piece)/$(ARCH)/*.$(OBJEXT))) \
|
||||
$(foreach piece, $(CPU_FILES), ../../../../libcpu/$(RTEMS_CPU)/$(piece)/$(ARCH)/$(piece).rel)
|
||||
LIB = $(ARCH)/libbsp.a
|
||||
|
||||
include $(top_srcdir)/../../../../../../automake/compile.am
|
||||
include $(top_srcdir)/../../../../../../automake/lib.am
|
||||
|
||||
#
|
||||
# (OPTIONAL) Add local stuff here using +=
|
||||
#
|
||||
|
||||
$(LIB): $(OBJS)
|
||||
$(make-library)
|
||||
|
||||
all-local: $(ARCH) $(LIB)
|
||||
|
||||
include $(top_srcdir)/../../../../../../automake/local.am
|
||||
Reference in New Issue
Block a user