| Index: sim/testsuite/sim/bfin/run-tests.sh
|
| diff --git a/sim/testsuite/sim/bfin/run-tests.sh b/sim/testsuite/sim/bfin/run-tests.sh
|
| old mode 100644
|
| new mode 100755
|
| index 2b6181b5fb3437b5a6653e6c34313962f086cd3a..c5ee7771f319f77c981773103ecdee6bb1bbde2f
|
| --- a/sim/testsuite/sim/bfin/run-tests.sh
|
| +++ b/sim/testsuite/sim/bfin/run-tests.sh
|
| @@ -10,8 +10,9 @@ usage() {
|
| -rs Run on simulator
|
| -rj <board> Run on board via JTAG
|
| -rh <ip> Run on board ip
|
| + -j <num> Num jobs to run
|
| EOF
|
| - exit ${0:-1}
|
| + exit ${1:-1}
|
| }
|
|
|
| : ${MAKE:=make}
|
| @@ -20,11 +21,14 @@ boardjtag=
|
| run_sim=false
|
| run_jtag=false
|
| run_host=false
|
| +jobs=`getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1`
|
| +: $(( jobs += 1 ))
|
| while [ -n "$1" ] ; do
|
| case $1 in
|
| -rs) run_sim=true;;
|
| -rj) boardjtag=$2; shift; run_jtag=true;;
|
| -rh) boardip=$2; shift; run_host=true;;
|
| + -j) jobs=$2; shift;;
|
| -*) usage;;
|
| *) break;;
|
| esac
|
| @@ -36,6 +40,8 @@ if ${run_host} && [ -z "${boardip}" ] ; then
|
| usage
|
| fi
|
|
|
| +cd "${0%/*}" || exit 1
|
| +
|
| dorsh() {
|
| # rsh sucks and does not pass up its exit status, so we have to:
|
| # on board:
|
| @@ -85,7 +91,6 @@ dojtag() {
|
| }
|
|
|
| testit() {
|
| -
|
| local name=$1 x=$2 y=`echo $2 | sed 's:\.[xX]$::'` out rsh_out addr
|
| shift; shift
|
| local fail=`grep xfail ${y}`
|
| @@ -145,8 +150,7 @@ pf() {
|
| [ $# -eq 0 ] && set -- *.[Ss]
|
| bins_hw=$( (${run_sim} || ${run_jtag}) && printf '%s.x ' "$@")
|
| if ${run_host} ; then
|
| - for files in $@
|
| - do
|
| + for files in "$@" ; do
|
| tmp=`grep -e CYCLES -e TESTSET -e CLI -e STI -e RTX -e RTI -e SEQSTAT $files -l`
|
| if [ -z "${tmp}" ] ; then
|
| bins_host=`echo "${bins_host} ${files}.X"`
|
| @@ -194,20 +198,41 @@ if ${run_host} ; then
|
| rsh -l root $boardip '/bin/dmesg -c' > /dev/null
|
| fi
|
|
|
| +SIM="../../../bfin/run"
|
| +if [ ! -x ${SIM} ] ; then
|
| + SIM="bfin-elf-run"
|
| +fi
|
| +echo "Using sim: ${SIM}"
|
| +
|
| ret=0
|
| unexpected_fail=0
|
| unexpected_pass=0
|
| expected_pass=0
|
| +pids=()
|
| for s in "$@" ; do
|
| - ${run_sim} && testit SIM ${s}.x bfin-elf-run `sed -n '/^# sim:/s|^[^:]*:||p' ${s}`
|
| + (
|
| + out=$(
|
| + ${run_sim} && testit SIM ${s}.x ${SIM} `sed -n '/^# sim:/s|^[^:]*:||p' ${s}`
|
| ${run_jtag} && testit JTAG ${s}.x dojtag
|
| ${run_host} && testit HOST ${s}.X dorsh
|
| + )
|
| + case $out in
|
| + *PASS*) ;;
|
| + *) echo "$out" ;;
|
| + esac
|
| + ) &
|
| + pids+=( $! )
|
| + if [[ ${#pids[@]} -gt ${jobs} ]] ; then
|
| + wait ${pids[0]}
|
| + pids=( ${pids[@]:1} )
|
| + fi
|
| done
|
| +wait
|
|
|
| killall -q bfin-gdbproxy
|
| if [ ${ret} -eq 0 ] ; then
|
| rm -f gdbproxy.log
|
| - ${MAKE} -s clean &
|
| +# ${MAKE} -s clean &
|
| exit 0
|
| else
|
| echo number of failures ${ret}
|
| @@ -222,4 +247,3 @@ else
|
| fi
|
| exit 1
|
| fi
|
| -
|
|
|