350 lines
6.0 KiB
Bash
Executable File
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
|