#!/bin/sh

PATH=.:/sbin:/usr/sbin:/usr/etc:/usr/bsd
export PATH

# admin_opts=$*
[ $# -eq 0 ] && set - 1 2 3 4 5 6 7 8 9 10

uname -aR
echo
hinv -c processor
hinv -c memory
echo
[ -z "$ecadmin" ] && ecadmin=ecadmin $admin_opts
[ -z "$ecstats" ] && ecstats=ecstats
csh -fc "which $ecadmin $ecstats" $admin_opts

tmp=/var/tmp/$$
trap "killall $ecstats; killall exer; $ecadmin -r; rm -f $tmp.*; exit" 0 1 2 3 15 $admin_opts

for arg
do
    case $arg
    in

    1)	echo
	echo "=== [1] Cycles ==="
	$ecadmin -r $admin_opts
	$ecadmin -e cycles $admin_opts
	$ecstats -s 3 10
	$ecadmin -r $admin_opts
	;;

    2)	echo
	echo "=== [2] FP ==="
	$ecadmin -r $admin_opts
	$ecadmin -e fpg $admin_opts
	exer -f >$tmp.out &
	$ecstats -s 3 10
	killall -TERM exer
	wait
	cat $tmp.out
	$ecadmin -r $admin_opts
	;;

    3)	echo
	echo "=== [3] FP and cycles ==="
	$ecadmin -r $admin_opts
	$ecadmin -e fpg,cycles $admin_opts
	exer -f >$tmp.out &
	$ecstats -s 3 10
	killall -TERM exer
	wait
	cat $tmp.out
	$ecadmin -r $admin_opts
	;;

    4)	echo
	echo "=== [4] 2$ miss ==="
	$ecadmin -r $admin_opts
	$ecadmin -e '2$dmiss' $admin_opts
	exer -s >$tmp.out &
	$ecstats -s 3 10
	killall -TERM exer
	wait
	cat $tmp.out
	$ecadmin -r $admin_opts
	;;

    5)	echo
	echo "=== [5] Quadword writes from 2$ ==="
	$ecadmin -r $admin_opts
	$ecadmin -e 'wb2$' $admin_opts
	exer -s >$tmp.out &
	$ecstats -s 3 10
	killall -TERM exer
	wait
	cat $tmp.out
	$ecadmin -r $admin_opts
	;;

    6)	echo
	echo "=== [6] Quadword writes from 1$ ==="
	$ecadmin -r $admin_opts
	$ecadmin -e 'wb1$' $admin_opts
	exer -s >$tmp.out &
	$ecstats -s 3 10
	killall -TERM exer
	wait
	cat $tmp.out
	$ecadmin -r $admin_opts
	;;

    7)	echo
	echo "=== [7] Store conditional issue (R10K) ==="
	$ecadmin -r $admin_opts
	$ecadmin -e scondi $admin_opts
	exer -l >$tmp.out &
	$ecstats -s 3 10
	killall -TERM exer
	wait
	cat $tmp.out
	$ecadmin -r $admin_opts
	;;

    8)	echo
	echo "=== [8] Miss Handling Table Occupancy (MHTO) (R12K) ==="
	$ecadmin -r $admin_opts
	$ecadmin -e mhto $admin_opts
	exer -l >$tmp.out &
	$ecstats -s 3 10
	killall -TERM exer
	wait
	cat $tmp.out
	$ecadmin -r $admin_opts
	;;

    9)	echo
	echo "=== [9] SCONDI (R10K) or MHTO (R12K) and FP ==="
	$ecadmin -r $admin_opts
	$ecadmin -e scondi $admin_opts
	$ecadmin -e mhto $admin_opts
	$ecadmin -e fpg $admin_opts
	exer -fl >$tmp.out &
	$ecstats -s 3 10
	killall -TERM exer
	wait
	cat $tmp.out
	$ecadmin -r $admin_opts
	;;

    10)	echo
	echo "=== [10] Multiple events ==="
	$ecadmin -r $admin_opts
	$ecadmin -e cycles,fpg,'2$dmiss' $admin_opts
	$ecadmin -e scondi $admin_opts
	$ecadmin -e mhto $admin_opts
	exer -fls >$tmp.out &
	$ecstats -s 3 10
	killall -TERM exer
	wait
	cat $tmp.out
	$ecadmin -r $admin_opts
	;;

    esac
done
