1
0
Files
2022-09-29 17:59:04 +03:00

350 lines
6.0 KiB
Bash
Executable File

#!/bin/sh
#
# run [nowin|dbx|kdbx|kdbx|sdbx|dbg] [[prom|kern|kernel|ide|symmon|program] [r4k|r10k|mp]]
KEY=/usr/tmp/sablekey.$$
STANDDIR=$WORKAREA/stand/arcs
PROMDIR=$STANDDIR/IP30prom
promify=
rm -f $KEY
trap "" 2
echo "setenv console_window 1" >> $KEY
# run dbx on the binary
if [ "$1" = "dbx" ]
then
SABLE=dbx
shift
fi
# run dbx on sable
if [ "$1" = "sdbx" ]
then
DBXIT=1
shift
fi
# run released sable from /usr/tmp (do not run locally built sable)
if [ "$1" = "dbg" ]
then
if [ -x /s2/sable/sable/Ragnarok.obj/sable ]
then
SABLE=/s2/sable/sable/Ragnarok.obj/sable
fi
shift
fi
# make mp work w/o args.
if [ "$1" = "mp" ]
then
MP=true
shift
fi
# run kdbx to currently running sable
if [ "$1" = "rkdbx" ]
then
SABLE=kdbx
shift
if [ ! -x /usr/local/bin/kdbx ]
then
echo "/usr/local/bin/kdbx not found."
echo "rcp from ddt:/usr/local/bin"
exit 1
fi
if [ ! -x /usr/local/bin/dbxpcs ]
then
echo "/usr/local/bin/dbxpcs not found."
echo "rcp from ddt:/usr/local/bin"
exit 1
fi
KDBXINIT=/usr/tmp/kdbxinit.$$
rm -f $KDBXINIT
if [ -r ~/.dbxinit ]
then
cat ~/.dbxinit >> $KDBXINIT
fi
if [ -r .dbxinit ]
then
cat .dbxinit >> $KDBXINIT
fi
if [ -n "$1" ]
then
echo 'set $kdbxport="'$2'"' >> $KDBXINIT
shift
else
echo 'set $kdbxport="65535"' >> $KDBXINIT
fi
fi
if [ "$1" = "kdbx" ]
then
KDBX=1
shift
if [ ! -x /usr/local/bin/kdbx ]
then
echo "/usr/local/bin/kdbx not found."
echo "rcp from ddt:/usr/local/bin"
exit 1
fi
if [ ! -x /usr/local/bin/dbxpcs ]
then
echo "/usr/local/bin/dbxpcs not found."
echo "rcp from ddt:/usr/local/bin"
exit 1
fi
KDBXINIT=/usr/tmp/kdbxinit.$$
rm -f $KDBXINIT
if [ -r ~/.dbxinit ]
then
cat ~/.dbxinit >> $KDBXINIT
fi
if [ -r .dbxinit ]
then
cat .dbxinit >> $KDBXINIT
fi
echo 'set $kdbxport="65535"' >> $KDBXINIT
fi
# force console window off
if [ "$1" = "nowin" ]
then
echo "setenv console_window 0" >> $KEY
shift
fi
if [ -z "$1" ]
then
DIR=`pwd`
if [ -n "`pwd | egrep 'kern'`" ]
then
LOAD=kern
elif [ -n "`pwd | egrep 'IO6prom'`" ]
then
LOAD=IO6prom
elif [ -n "`pwd | egrep 'prom'`" ]
then
LOAD=prom
elif [ -n "`pwd | egrep 'ide'`" ]
then
LOAD=ide
elif [ -n "`pwd | egrep 'symmon'`" ]
then
LOAD=symmon
else
LOAD=kernel
fi
else
LOAD=$1
fi
case $LOAD in
"dprom")
LOADFILE=$PROMDIR/$PRODUCT.O/dprom
;;
"dprom.DBG")
LOADSYMMON=$STANDDIR/symmon/RACER10S.O/symmon
LOADFILE=$PROMDIR/$PRODUCT.O/dprom.DBG
;;
"prom")
LOADFILE=$PROMDIR/$PRODUCT.O/prom
;;
"symmon")
LOADFILE=$STANDDIR/symmon/$PRODUCT.O/symmon
;;
"ide")
LOADFILE=$STANDDIR/ide/$PRODUCT.O/shell.ide
;;
"kernel"|"kern")
if [ $PRODUCT = "RACER4S" ]
then
LOADFILE=$ROOT/usr/sysgen/IP30R4KSABLEboot/unix.kdebug
LOADSYMMON=$STANDDIR/symmon/RACERS.O/symmon
promify=promify
elif [ $PRODUCT = "RACER10S" ]
then
LOADFILE=$ROOT/usr/sysgen/IP30SABLEboot/unix.kdebug
LOADSYMMON=$STANDDIR/symmon/RACER10S.O/symmon
promify=promify
elif [ $PRODUCT = "RACER4" ]
then
LOADFILE=$ROOT/usr/sysgen/IP30R4Kboot/unix.kdebug
LOADSYMMON=$STANDDIR/symmon/RACERS.O/symmon
promify=promify
elif [ $PRODUCT = "SN0" ]
then
LOADFILE=$ROOT/usr/sysgen/IP27boot/unix.kdebug
# no symmon support for sn0 as it's load addr is different.
elif [ $PRODUCT = "T5I2" ]
then
# just for less typing for jeff's dbxing
LOADFILE=$ROOT/usr/sysgen/IP28boot/unix.kdebug
else
echo "unknown PRODUCT=$PRODUCT"
exit 1
fi
if [ $LOAD = "kern" ]
then
LOADSYMMON=
else
# check starting address vs kernel.
SYMSTART=`$TOOLROOT/usr/bin/nm -Bnx $LOADSYMMON | grep ' T start' | sed 's/ T start//'`
KSYMSTART=`cat $WORKAREA/irix/kern/klocaldefs | grep 'SABLE_SYMMON_INITPC' | sed 's/^DBOPTS=[^=]*SYMMON_INITPC=//'`
if [ "$SYMSTART" -eq "$KSYMSTART" ]
then
echo "Kernel notion of symmon and symmon do not match $SYMSTART != $KSYMSTART"
exit 1
fi
fi
;;
"IO6prom")
LOADFILE=$STANDDIR/IO6prom/SN0sprom
;;
*)
LOADFILE=$1
;;
esac
if [ -z "$2" ]
then
case "$PRODUCT" in
"RACER"|"RACERS"|"RACER4"|"RACER4S")
COMPLEX=r4k
;;
"RACER10"|"RACER10S")
COMPLEX=r10k
;;
"SN0")
COMPLEX=sn0
;;
esac
if [ -n "$MP" ]
then
COMPLEX=mp
fi
else
COMPLEX=$2
fi
if [ -z "$FILESYSNAME" ]
then
if [ -r $PROMDIR/sable/RootDev ]
then
FILESYSNAME="setenv filesysname $PROMDIR/sable/RootDev"
elif [ -r $WORKAREA/irix/kern/.rootdev ]
then
FILESYSNAME="setenv filesysname $WORKAREA/irix/kern/.rootdev"
fi
else
FILESYSNAME="setenv filesysname $FILESYSNAME"
fi
case $COMPLEX in
"mp")
echo "running MP R10000 config"
SYSKEY="$PROMDIR/sable/sable.mp.key"
BASEKEY="$PROMDIR/sable/sable.base.key"
;;
"r4k")
echo "running R4000 config"
SYSKEY="$PROMDIR/sable/sable.r4k.key"
BASEKEY="$PROMDIR/sable/sable.base.key"
;;
"sn0")
echo "running SN0 config"
SYSKEY="$WORKAREA/irix/kern/.sable.key.sn0"
;;
"r10k"|"t5"|*)
echo "running R10000 config"
SYSKEY="$PROMDIR/sable/sable.r10k.key"
BASEKEY="$PROMDIR/sable/sable.base.key"
;;
esac
# run $SABLE, /usr/tmp/sable or just 'sable'.
if [ -z "$SABLE" ]
then
if [ -x /usr/tmp/sable ]
then
SABLE=/usr/tmp/sable
else
SABLE=sable
fi
fi
if [ -n "$FILESYSNAME" ]
then
echo $FILESYSNAME >> $KEY
fi
cat $SYSKEY >> $KEY
if [ -n "$BASEKEY" ]
then
cat $BASEKEY >> $KEY
fi
if [ -n "$LOADSYMMON" ]
then
echo "load " $LOADSYMMON >> $KEY
fi
if [ -n "$LOADPROM" ]
then
echo "load " $LOADPROM >> $KEY
fi
echo "load " $LOADFILE >> $KEY
PROM=`echo $LOADFILE | egrep 'prom' | egrep -v 'dprom'`
if [ -n "$PROM" ]
then
echo "reset_vector" >> $KEY
fi
echo $promify >> $KEY
if [ -n "$KDBX" ]
then
echo "debug x" >> $KEY
xwsh -icontitle sable -title "sable $LOADFILE" -e $SABLE -c $KEY &
XWSHPID=$?
kdbx -c $KDBXINIT -pcs /usr/local/bin/dbxpcs $LOADFILE
echo rm -f $KEY
rm -f $KEY
echo rm -f $KDBXINIT
rm -f $KDBXINIT
kill -9 $XWSHPID
else
if [ -n "$DBXIT" ]
then
echo "run -c $KEY"
$TOOLROOT/usr/bin/dbx $SABLE
elif [ $SABLE = "dbx" ]
then
$TOOLROOT/usr/bin/dbx $LOADFILE
elif [ $SABLE = "kdbx" ]
then
kdbx -c $KDBXINIT -pcs /usr/local/bin/dbxpcs $LOADFILE
else
$SABLE -c $KEY
fi
fi
echo rm -f $KEY
rm -f $KEY
if [ -n "$KDBXINIT" ]
then
echo rm -f $KDBXINIT
rm -f $KDBXINIT
fi
exit 0