summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/mips
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2000-12-19 16:53:13 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2000-12-19 16:53:13 +0000
commit2ba9d3bdcc7a4407706cb3860706cc3d82794c38 (patch)
tree33b5f42e0bc73b118738c9ae72819e3c9364669c /c/src/lib/libbsp/mips
parent2000-12-19 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-2ba9d3bdcc7a4407706cb3860706cc3d82794c38.tar.bz2
2000-12-19 Joel Sherrill <joel@OARcorp.com>
* Makefile.am: Added tools subdirectory and removed commented out line. * configure.in: Added tools subdirectory. * tools: New subdirectory. * tools/.cvsignore, tools/Makefile.am, tools/configure.in, tools/runtest: New files -- based on powerpc/psim. * clock/clockdrv.c: Guessed new value for clock tick. Need to add fast idle support. * include/bsp.h: tm27 support initiated. * start/start.S: Fixed frame/endframe problems on _sys_exit. * startup/bspstart.c: Increased Workspace size to 4 MBYTES! * linkcmds: Increased Workspace size to 4 MBYTES! * Most tests appear to run correctly!
Diffstat (limited to 'c/src/lib/libbsp/mips')
-rw-r--r--c/src/lib/libbsp/mips/jmr3904/ChangeLog12
-rw-r--r--c/src/lib/libbsp/mips/jmr3904/Makefile.am3
-rw-r--r--c/src/lib/libbsp/mips/jmr3904/clock/clockdrv.c2
-rw-r--r--c/src/lib/libbsp/mips/jmr3904/configure.in5
-rw-r--r--c/src/lib/libbsp/mips/jmr3904/console/console-io.c3
-rw-r--r--c/src/lib/libbsp/mips/jmr3904/include/bsp.h5
-rw-r--r--c/src/lib/libbsp/mips/jmr3904/start/start.S20
-rw-r--r--c/src/lib/libbsp/mips/jmr3904/startup/bspstart.c3
-rw-r--r--c/src/lib/libbsp/mips/jmr3904/startup/linkcmds3
-rw-r--r--c/src/lib/libbsp/mips/jmr3904/tools/.cvsignore13
-rw-r--r--c/src/lib/libbsp/mips/jmr3904/tools/Makefile.am22
-rw-r--r--c/src/lib/libbsp/mips/jmr3904/tools/configure.in19
-rwxr-xr-xc/src/lib/libbsp/mips/jmr3904/tools/runtest261
13 files changed, 351 insertions, 20 deletions
diff --git a/c/src/lib/libbsp/mips/jmr3904/ChangeLog b/c/src/lib/libbsp/mips/jmr3904/ChangeLog
index 0354a4354e..5b438e2466 100644
--- a/c/src/lib/libbsp/mips/jmr3904/ChangeLog
+++ b/c/src/lib/libbsp/mips/jmr3904/ChangeLog
@@ -1,3 +1,15 @@
+2000-12-19 Joel Sherrill <joel@OARcorp.com>
+
+ * Makefile.am: Added tools subdirectory and removed commented out line.
+ * configure.in: Added tools subdirectory.
+ * tools: New subdirectory.
+ * tools/.cvsignore, tools/Makefile.am, tools/configure.in,
+ tools/runtest: New files -- based on powerpc/psim.
+ * clock/clockdrv.c: Guessed new value for clock tick. Need to
+ add fast idle support.
+ * include/bsp.h: tm27 support initiated.
+ * Most tests appear to run correctly!
+
2000-12-13 Joel Sherrill <joel@OARcorp.com>
* README: Updated. We are now vectoring a clock tick ISR handler.
diff --git a/c/src/lib/libbsp/mips/jmr3904/Makefile.am b/c/src/lib/libbsp/mips/jmr3904/Makefile.am
index a0320f099b..1d64a7b5eb 100644
--- a/c/src/lib/libbsp/mips/jmr3904/Makefile.am
+++ b/c/src/lib/libbsp/mips/jmr3904/Makefile.am
@@ -7,8 +7,7 @@ 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 clock console timer wrapup
-SUBDIRS = include start startup clock console wrapup
+SUBDIRS = include start startup clock console timer wrapup tools
include $(top_srcdir)/../../bsp.am
diff --git a/c/src/lib/libbsp/mips/jmr3904/clock/clockdrv.c b/c/src/lib/libbsp/mips/jmr3904/clock/clockdrv.c
index 7436f1676a..d77db955cc 100644
--- a/c/src/lib/libbsp/mips/jmr3904/clock/clockdrv.c
+++ b/c/src/lib/libbsp/mips/jmr3904/clock/clockdrv.c
@@ -15,7 +15,7 @@
#define Clock_driver_support_at_tick()
/* XXX */
-#define CLICKS 10000
+#define CLICKS 5000
#define Clock_driver_support_install_isr( _new, _old ) \
do { \
unsigned32 _clicks = CLICKS; \
diff --git a/c/src/lib/libbsp/mips/jmr3904/configure.in b/c/src/lib/libbsp/mips/jmr3904/configure.in
index ec0929329e..c1fa321cac 100644
--- a/c/src/lib/libbsp/mips/jmr3904/configure.in
+++ b/c/src/lib/libbsp/mips/jmr3904/configure.in
@@ -19,6 +19,8 @@ RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
RTEMS_CHECK_BSP_CACHE(RTEMS_BSP)
RTEMS_CANONICAL_HOST
+RTEMS_CONFIG_BUILD_SUBDIRS(tools)
+
RTEMS_PROJECT_ROOT
# Explicitly list all Makefiles here
@@ -29,4 +31,7 @@ console/Makefile
include/Makefile
start/Makefile
startup/Makefile
+timer/Makefile
wrapup/Makefile)
+
+RTEMS_OUTPUT_BUILD_SUBDIRS(RTEMS_BUILD_SUBDIRS)
diff --git a/c/src/lib/libbsp/mips/jmr3904/console/console-io.c b/c/src/lib/libbsp/mips/jmr3904/console/console-io.c
index 1ad3d9af29..75c8b45d17 100644
--- a/c/src/lib/libbsp/mips/jmr3904/console/console-io.c
+++ b/c/src/lib/libbsp/mips/jmr3904/console/console-io.c
@@ -21,9 +21,6 @@
/* external prototypes for monitor interface routines */
-void outbyte( char );
-char inbyte( void );
-
#define READ_UINT8( _register_, _value_ ) \
((_value_) = *((volatile unsigned char *)(_register_)))
diff --git a/c/src/lib/libbsp/mips/jmr3904/include/bsp.h b/c/src/lib/libbsp/mips/jmr3904/include/bsp.h
index b66a5c5cc1..77dc594cab 100644
--- a/c/src/lib/libbsp/mips/jmr3904/include/bsp.h
+++ b/c/src/lib/libbsp/mips/jmr3904/include/bsp.h
@@ -46,9 +46,10 @@ extern "C" {
#define MUST_WAIT_FOR_INTERRUPT 0
-#define Install_tm27_vector( handler )
+#define Install_tm27_vector( handler ) \
+ (void) set_vector( handler, TX3904_IRQ_SOFTWARE_1, 1 ); \
-#define Cause_tm27_intr()
+#define Cause_tm27_intr() \
#define Clear_tm27_intr()
diff --git a/c/src/lib/libbsp/mips/jmr3904/start/start.S b/c/src/lib/libbsp/mips/jmr3904/start/start.S
index befe8b8b7a..c484b7b0bd 100644
--- a/c/src/lib/libbsp/mips/jmr3904/start/start.S
+++ b/c/src/lib/libbsp/mips/jmr3904/start/start.S
@@ -22,6 +22,7 @@
.set nomips16
#endif
+#include <asm.h>
#include "regs.S"
/*
@@ -206,16 +207,15 @@ init:
.end init
/*
- * _exit -- Exit from the application. Normally we cause a user trap
- * to return to the ROM monitor for another run. NOTE: This is
- * the only other routine we provide in the crt0.o object, since
- * it may be tied to the "_start" routine. It also allows
- * executables that contain a complete world to be linked with
- * just the crt0.o object.
+ * Exit from the application. Normally we cause a user trap
+ * to return to the ROM monitor for another run. NOTE: This is
+ * the only other routine we provide in the crt0.o object, since
+ * it may be tied to the "_start" routine. It also allows
+ * executables that contain a complete world to be linked with
+ * just the crt0.o object.
*/
- .globl _sys_exit
- .ent _sys_exit
-_sys_exit:
+
+FRAME(_sys_exit,sp,0,ra)
7:
#ifdef GCRT0
jal _mcleanup
@@ -226,6 +226,6 @@ _sys_exit:
nop
b 7b # but loop back just in-case
nop
- .end _exit
+ENDFRAME(_sys_exit)
/* EOF crt0.S */
diff --git a/c/src/lib/libbsp/mips/jmr3904/startup/bspstart.c b/c/src/lib/libbsp/mips/jmr3904/startup/bspstart.c
index 2a5bc13e91..0868e824ee 100644
--- a/c/src/lib/libbsp/mips/jmr3904/startup/bspstart.c
+++ b/c/src/lib/libbsp/mips/jmr3904/startup/bspstart.c
@@ -86,7 +86,8 @@ void bsp_start( void )
Cpu_table.postdriver_hook = bsp_postdriver_hook;
Cpu_table.interrupt_stack_size = 4096;
- if ( BSP_Configuration.work_space_size >(512*1024) )
+ /* HACK -- tied to value linkcmds */
+ if ( BSP_Configuration.work_space_size >(4096*1024) )
_sys_exit( 1 );
BSP_Configuration.work_space_start = (void *) &WorkspaceBase;
diff --git a/c/src/lib/libbsp/mips/jmr3904/startup/linkcmds b/c/src/lib/libbsp/mips/jmr3904/startup/linkcmds
index 4543f01ff0..17836e5319 100644
--- a/c/src/lib/libbsp/mips/jmr3904/startup/linkcmds
+++ b/c/src/lib/libbsp/mips/jmr3904/startup/linkcmds
@@ -110,7 +110,8 @@ SECTIONS
_stack_init = .;
_clear_end = .;
WorkspaceBase = .;
- . += 512K; /* reserve some memory for workspace */
+ /* HACK -- tied to value bspstart */
+ . += 4096K; /* reserve some memory for workspace */
HeapBase = .;
. += HeapSize; /* reserve some memory for heap */
}
diff --git a/c/src/lib/libbsp/mips/jmr3904/tools/.cvsignore b/c/src/lib/libbsp/mips/jmr3904/tools/.cvsignore
new file mode 100644
index 0000000000..525275c115
--- /dev/null
+++ b/c/src/lib/libbsp/mips/jmr3904/tools/.cvsignore
@@ -0,0 +1,13 @@
+Makefile
+Makefile.in
+aclocal.m4
+config.cache
+config.guess
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+missing
+mkinstalldirs
diff --git a/c/src/lib/libbsp/mips/jmr3904/tools/Makefile.am b/c/src/lib/libbsp/mips/jmr3904/tools/Makefile.am
new file mode 100644
index 0000000000..54fbedf22c
--- /dev/null
+++ b/c/src/lib/libbsp/mips/jmr3904/tools/Makefile.am
@@ -0,0 +1,22 @@
+##
+## $Id$
+##
+
+AUTOMAKE_OPTIONS = foreign 1.4
+ACLOCAL_AMFLAGS = -I ../../../../../../../aclocal
+
+noinst_SCRIPTS = runtest
+
+TMPINSTALL_FILES += $(PROJECT_ROOT)/jmr3904/tests \
+ $(PROJECT_ROOT)/jmr3904/tests/runtest
+
+$(PROJECT_ROOT)/jmr3904/tests:
+ $(mkinstalldirs) $@
+
+$(PROJECT_ROOT)/jmr3904/tests/runtest: runtest
+ $(INSTALL_SCRIPT) $< $@
+
+## HACK: install to build-tree
+all-local: $(TMPINSTALL_FILES)
+
+include $(top_srcdir)/../../../../../../../automake/host.am
diff --git a/c/src/lib/libbsp/mips/jmr3904/tools/configure.in b/c/src/lib/libbsp/mips/jmr3904/tools/configure.in
new file mode 100644
index 0000000000..eb8d9fcde8
--- /dev/null
+++ b/c/src/lib/libbsp/mips/jmr3904/tools/configure.in
@@ -0,0 +1,19 @@
+dnl Process this file with autoconf to produce a configure script.
+dnl
+dnl $Id$
+
+AC_INIT(runtest)
+RTEMS_TOP(../../../../../../..)
+AC_CONFIG_AUX_DIR(../../../../../../..)
+
+RTEMS_CANONICAL_TARGET_CPU
+
+AM_INIT_AUTOMAKE(rtems-c-src-lib-libbsp-mips-jmr3904-tools,$RTEMS_VERSION,no)
+AM_MAINTAINER_MODE
+
+RTEMS_PROJECT_ROOT
+RTEMS_TOOLPATHS
+
+# Explicitly list all Makefiles here
+AC_OUTPUT(
+Makefile)
diff --git a/c/src/lib/libbsp/mips/jmr3904/tools/runtest b/c/src/lib/libbsp/mips/jmr3904/tools/runtest
new file mode 100755
index 0000000000..aee74edd63
--- /dev/null
+++ b/c/src/lib/libbsp/mips/jmr3904/tools/runtest
@@ -0,0 +1,261 @@
+#!/bin/sh -p
+#
+# Run rtems tests on the powerpc simulator
+# This program generates a simulator script to run each test
+# Typically the test is then run, although it can be generated
+# and left as a file using -s
+#
+# COPYRIGHT (c) 1989-1999.
+# On-Line Applications Research Corporation (OAR).
+#
+# The license and distribution terms for this file may be
+# found in found in the file LICENSE in this distribution or at
+# http://www.OARcorp.com/rtems/license.html.
+#
+# $Id$
+#
+
+# progname=`basename $0`
+progname=${0##*/} # fast basename hack for ksh, bash
+
+USAGE=\
+"usage: $progname [ -opts ] test [ test ... ]
+ -o options -- specify options to be passed to simulator
+ -v -- verbose
+ -d -- generate device tree file (as 'test'.device) and exit
+ -l logdir -- specify log directory (default is 'logdir')
+
+ Specify test as 'test' or 'test.exe'.
+ All multiprocessing tests *must* be specified simply as 'mp01', etc.
+"
+
+# export everything
+set -a
+
+# log an error to stderr
+prerr()
+{
+ echo "$*" >&2
+}
+
+fatal() {
+ [ "$1" ] && prerr $*
+ prerr "$USAGE"
+ exit 1
+}
+
+warn() {
+ [ "$1" ] && prerr $*
+}
+
+# print args, 1 per line
+ml_echo()
+{
+ for l
+ do
+ echo "$l"
+ done
+}
+
+# run at normal and signalled exit
+test_exit()
+{
+ exit_code=$1
+
+ rm -f ${logfile}.tmp*
+ [ "$sim_pid" ] && kill -9 $sim_pid
+
+ exit $exit_code
+}
+
+#
+# process the options
+#
+# defaults for getopt vars
+#
+# max_run_time is defaulted to 5 minutes
+#
+
+verbose=""
+extra_options=""
+device_and_exit=""
+stdio_setup="yes"
+run_to_completion="yes"
+logdir=log
+update_on_tick="no"
+max_run_time=$((5 * 60))
+using_print_buffer="yes"
+simulator=mipstx39-rtems-run
+
+while getopts vdl:o:s: OPT
+do
+ case "$OPT" in
+ v)
+ verbose="yes";;
+ d)
+ device_and_exit="yes"
+ run_to_completion="no"
+ stdio_setup="no";;
+ l)
+ logdir="$OPTARG";;
+ o)
+ extra_options="$OPTARG";;
+ s)
+ simulator="$OPTARG";;
+ *)
+ fatal;;
+ esac
+done
+
+let $((shiftcount = $OPTIND - 1))
+shift $shiftcount
+
+args=$*
+
+#
+# Check some parameters
+#
+
+# JRS CHANGE
+# if [ ! -x ${simulator} ] ; then
+# fatal "${simulator} is not executable"
+# fi;
+
+#
+# Run the tests
+#
+
+tests="$args"
+if [ ! "$tests" ]
+then
+ set -- `echo *.exe`
+ tests="$*"
+fi
+
+[ -d $logdir ] ||
+ mkdir $logdir || fatal "could not create log directory ($logdir)"
+
+# where the tmp files go
+trap "test_exit" 1 2 3 13 14 15
+
+for tfile in $tests
+do
+
+ tname=`basename $tfile .exe`
+ cpus="1"
+ TEST_TYPE="single"
+
+ case $tname in
+ # size is no longer interactive.
+ monitor*| termios*)
+ if [ $run_to_completion = "yes" ]
+ then
+ warn "Skipping $tname; it is interactive"
+ continue
+ fi
+ ;;
+ *-node2*)
+ warn "Skipping $tname; 'runtest' runs both nodes when for *-node1"
+ continue;;
+ *-node1*)
+ warn "Running both nodes associated with $tname"
+ variant=`echo $tname | sed 's/.*-node[12]//' | sed 's/\.exe//'`
+ tname=`echo $tname | sed 's/-node.*//'`
+ TEST_TYPE="mp"
+ ;;
+ minimum*|stackchk*|spfatal*|termio*)
+ continue
+ ;;
+ esac
+
+ if [ $TEST_TYPE = "mp" ]
+ then
+ cpus="1 2"
+
+ logfile1=$logdir/${tname}_1${variant}
+ logfile2=$logdir/${tname}_2${variant}
+ infofile1=$logfile1.info
+ infofile2=$logfile2.info
+
+ rm -f ${logfile1} ${logfile2}
+
+ date=`date`
+ echo "Starting $tname at $date"
+
+ ${simulator} --board=jmr3904 ${tname}-node1${variant}.exe | \
+ sed -e 's/ //' -e '/^$/d' > ${logfile1} &
+
+ ${simulator} --board=jmr3904 ${tname}-node2${variant}.exe | \
+ sed -e 's/ //' -e '/^$/d' > ${logfile2} &
+
+ wait
+
+ fi
+
+ if [ $TEST_TYPE = "single" ]
+ then
+ logfile=$logdir/${tname}_1
+ infofile=$logfile.info
+
+ rm -f ${logfile}.tmp*
+
+ date=`date`
+ echo "Starting $tname at $date"
+
+ # Generate a device file to get the work done.
+ # The device file must do the following:
+ #
+ # arrange for more memory (2 Mb)
+
+ if [ "$device_and_exit" = "yes" ]
+ then
+ fatal "Cannot currently generate device files"
+ fi
+
+ # Spin off the simulator in the background
+ # -c sets an instruction limit
+
+ # XXX need to make sure it won't run forever...
+
+ ${simulator} --board=jmr3904 $tfile | \
+ sed -e 's/ //' -e '/^$/d' > ${logfile}
+ fi
+
+ # Create the info files
+ for cpu in $cpus
+ do
+ {
+ echo "$date"
+ echo "Test run on: `uname -n`"
+ echo "Host Information:"
+ echo `uname -a`
+ echo
+
+ #sed -e 's/ //' < ${logdir}/${tname}_${cpu}
+ cat ${logdir}/${tname}_${cpu}
+
+ if [ "$ran_too_long" = "yes" ]
+ then
+ echo "Test did NOT finish normally; killed after $max_run_time seconds"
+ fi
+
+ echo
+ date;
+ } > ${logdir}/${tname}_${cpu}.info
+ done
+
+ if [ "$cpus" = "1" ]
+ then
+ mv ${infofile} $logdir/${tname}.info
+ mv ${logfile} $logdir/${tname}
+ fi
+
+done
+
+echo "Tests completed at " `date`
+test_exit 0
+
+# Local Variables: ***
+# mode:ksh ***
+# End: ***
+