From 2ba9d3bdcc7a4407706cb3860706cc3d82794c38 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 19 Dec 2000 16:53:13 +0000 Subject: 2000-12-19 Joel Sherrill * 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! --- c/src/lib/libbsp/mips/jmr3904/ChangeLog | 12 + c/src/lib/libbsp/mips/jmr3904/Makefile.am | 3 +- c/src/lib/libbsp/mips/jmr3904/clock/clockdrv.c | 2 +- c/src/lib/libbsp/mips/jmr3904/configure.in | 5 + c/src/lib/libbsp/mips/jmr3904/console/console-io.c | 3 - c/src/lib/libbsp/mips/jmr3904/include/bsp.h | 5 +- c/src/lib/libbsp/mips/jmr3904/start/start.S | 20 +- c/src/lib/libbsp/mips/jmr3904/startup/bspstart.c | 3 +- c/src/lib/libbsp/mips/jmr3904/startup/linkcmds | 3 +- c/src/lib/libbsp/mips/jmr3904/tools/.cvsignore | 13 + c/src/lib/libbsp/mips/jmr3904/tools/Makefile.am | 22 ++ c/src/lib/libbsp/mips/jmr3904/tools/configure.in | 19 ++ c/src/lib/libbsp/mips/jmr3904/tools/runtest | 261 +++++++++++++++++++++ 13 files changed, 351 insertions(+), 20 deletions(-) create mode 100644 c/src/lib/libbsp/mips/jmr3904/tools/.cvsignore create mode 100644 c/src/lib/libbsp/mips/jmr3904/tools/Makefile.am create mode 100644 c/src/lib/libbsp/mips/jmr3904/tools/configure.in create mode 100755 c/src/lib/libbsp/mips/jmr3904/tools/runtest (limited to 'c') 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 + + * 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 * 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 #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: *** + -- cgit v1.2.3