2001-06-07 11:59:28 +02:00
|
|
|
#!/bin/sh
|
2004-12-22 16:12:18 +01:00
|
|
|
# $NetBSD: cpuflags.Linux,v 1.12 2004/12/22 15:12:18 abs Exp $
|
2004-07-27 21:25:44 +02:00
|
|
|
PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH
|
2001-06-07 11:59:28 +02:00
|
|
|
|
2004-12-22 16:12:18 +01:00
|
|
|
AWK=awk
|
2004-07-27 21:25:44 +02:00
|
|
|
|
2004-08-04 13:39:43 +02:00
|
|
|
display_hw_details()
|
|
|
|
{
|
2004-09-23 13:41:10 +02:00
|
|
|
echo " OS : '$(uname)'"
|
2004-08-04 13:39:43 +02:00
|
|
|
echo " proc model : '$hw_model'"
|
|
|
|
echo " machine_arch : '$hw_machine_arch'"
|
|
|
|
echo " proc flags : '$hw_flags'"
|
|
|
|
}
|
|
|
|
|
2004-07-27 21:25:44 +02:00
|
|
|
hw_machine_arch=$(uname -m)
|
|
|
|
if [ ! -f /proc/cpuinfo ] ; then
|
|
|
|
echo "Unable to open /proc/cpuinfo"
|
|
|
|
hw_model=Unknown
|
|
|
|
else
|
2004-12-22 16:12:18 +01:00
|
|
|
hw_model=$($AWK -F: '/^model name/{sub(" ","",$2);print $2;exit}' /proc/cpuinfo)
|
|
|
|
hw_flags=$($AWK -F: '/^flags/{sub(" ","",$2);print $2;exit}' /proc/cpuinfo)
|
2004-07-27 21:25:44 +02:00
|
|
|
fi
|
2001-06-07 11:59:28 +02:00
|
|
|
|
2004-07-27 21:25:44 +02:00
|
|
|
case $hw_machine_arch in
|
2001-06-07 11:59:28 +02:00
|
|
|
# i386
|
2004-07-28 18:54:03 +02:00
|
|
|
i386) FLAGS='-march=i386' ;;
|
|
|
|
i486) FLAGS='-march=i486' ;;
|
2004-07-27 21:25:44 +02:00
|
|
|
i686) case $hw_model in
|
2004-08-04 13:39:43 +02:00
|
|
|
"AMD Duron(tm) ") FLAGS='-march=athlon' ;;
|
2004-07-28 18:54:03 +02:00
|
|
|
"AMD Duron(TM)") FLAGS='-march=athlon' ;;
|
|
|
|
"AMD Athlon(tm) XP "*) FLAGS='-march=athlon-xp' ;;
|
2004-08-04 13:39:43 +02:00
|
|
|
"Celeron (Coppermine)") FLAGS='-march=pentium3' ;;
|
2004-11-14 22:51:05 +01:00
|
|
|
"Pentium III (Coppermine)") FLAGS='-march=pentium3' ;;
|
2004-09-23 13:41:10 +02:00
|
|
|
"Intel(R) Pentium(R) M processor"*) FLAGS='-march=pentium3m' ;;
|
2004-12-22 16:12:18 +01:00
|
|
|
"Intel(R) Pentium(R) 4 CPU "*) FLAGS='-march=pentium4' ;;
|
2004-08-04 13:39:43 +02:00
|
|
|
"Intel(R) Celeron(R) CPU "*)
|
|
|
|
case "$hw_flags" in
|
|
|
|
*" sse2 "*)
|
|
|
|
FLAGS='-march=pentium4' ;;
|
|
|
|
esac
|
|
|
|
|
2004-07-27 21:25:44 +02:00
|
|
|
esac
|
|
|
|
;;
|
2001-06-07 11:59:28 +02:00
|
|
|
#
|
|
|
|
esac
|
|
|
|
|
2004-08-04 13:39:43 +02:00
|
|
|
############
|
|
|
|
# Everything from this point common between all cpuflags variants.
|
|
|
|
|
2004-12-22 16:12:18 +01:00
|
|
|
if [ "$1" = -v ] ; then
|
|
|
|
shift
|
|
|
|
opt_v=1
|
|
|
|
fi
|
|
|
|
if [ -n "$1" ]; then
|
|
|
|
CC=$1
|
|
|
|
else
|
|
|
|
CC=gcc
|
|
|
|
fi
|
|
|
|
|
2004-08-04 13:39:43 +02:00
|
|
|
if [ -n "$opt_v" ] ; then
|
|
|
|
if [ -z "$NONE" ] ; then
|
|
|
|
echo "CPUFLAGS=Unknown"
|
|
|
|
else
|
|
|
|
echo "CPUFLAGS=None"
|
|
|
|
fi
|
|
|
|
display_hw_details
|
|
|
|
exit
|
|
|
|
fi
|
2004-07-27 21:25:44 +02:00
|
|
|
if [ -z "$FLAGS" -a -z "$NONE" ] ; then
|
|
|
|
echo 'Unknown machine - please send details to abs@netbsd.org' >&2
|
2004-08-04 13:39:43 +02:00
|
|
|
display_hw_details >&2
|
2004-07-27 21:25:44 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Fixup options for older gccs.
|
|
|
|
# Entries can be recursive - eg:
|
|
|
|
# -march=k6-3 -> -march=k6 -> -march=pentium -> -march=i486
|
|
|
|
#
|
|
|
|
# The format of table is
|
|
|
|
# gcc_version_in_which_option_was_introduced new_option old_option
|
|
|
|
|
2001-06-29 13:24:51 +02:00
|
|
|
if [ -n "$FLAGS" ]; then
|
2004-07-27 21:25:44 +02:00
|
|
|
gcc_ver=`${CC} -dumpversion | sed 's/^egcs-//'`
|
2004-12-22 16:12:18 +01:00
|
|
|
FLAGS=`$AWK -F: -v "flags=$FLAGS" -v "gcc_ver=$gcc_ver" '
|
2004-07-27 21:25:44 +02:00
|
|
|
{ if (gcc_ver < $1){map[$2] = ""$3} }
|
|
|
|
END { while (flags in map) {flags = map[flags]} print flags }
|
2001-11-27 03:31:48 +01:00
|
|
|
' <<EOD
|
2004-07-27 21:25:44 +02:00
|
|
|
2.90:-march=i386:-mno-486
|
|
|
|
2.90:-march=i486:-m486
|
|
|
|
2.90:-march=pentium:-m486
|
|
|
|
2.90:-march=pentiumpro:-m486
|
|
|
|
2.90:-mcpu=21164a:
|
|
|
|
2.90:-mcpu=arm610:-m6
|
|
|
|
2.90:-mcpu=arm710:-m6
|
|
|
|
2.90:-mcpu=cypress:-mcypress
|
|
|
|
2.90:-mcpu=sparclite:-msparclite
|
|
|
|
2.90:-mcpu=strongarm110:-m6
|
|
|
|
2.90:-mcpu=supersparc:-msupersparc
|
|
|
|
2.90:-mcpu=v9:-mv8
|
|
|
|
2.95:-march=k6:-march=pentium
|
|
|
|
3.0:-march=athlon:-march=pentiumpro
|
2004-07-28 18:54:03 +02:00
|
|
|
3.1:-march=athlon-4:-march=athlon
|
|
|
|
3.1:-march=athlon-mp:-march=athlon
|
|
|
|
3.1:-march=athlon-tbird:-march=athlon
|
|
|
|
3.1:-march=athlon-xp:-march=athlon
|
2004-07-27 21:25:44 +02:00
|
|
|
3.1:-march=k6-2:-march=k6
|
|
|
|
3.1:-march=k6-3:-march=k6
|
|
|
|
3.1:-march=pentium-mmx:-march=pentium
|
|
|
|
3.1:-march=pentium2:-march=pentiumpro
|
|
|
|
3.1:-march=pentium3 -mno-sse:-march=pentiumpro
|
|
|
|
3.1:-march=pentium3:-march=pentiumpro
|
|
|
|
3.1:-march=pentium4:-march=pentiumpro
|
|
|
|
3.1:-march=r2000:-cpu=r2000
|
|
|
|
3.1:-march=r3000:-cpu=r3000
|
|
|
|
3.1:-march=r3900:-cpu=r3900
|
|
|
|
3.1:-march=r4000:-cpu=r4000
|
|
|
|
3.1:-march=r4100:-cpu=r4100
|
|
|
|
3.1:-march=r4300:-cpu=r4300
|
|
|
|
3.1:-march=r4400:-cpu=r4400
|
|
|
|
3.1:-march=r4600:-cpu=r4600
|
|
|
|
3.1:-march=r5000:-cpu=r5000
|
|
|
|
3.1:-march=r6000:-cpu=r6000
|
|
|
|
3.1:-march=r8000:-cpu=r8000
|
|
|
|
3.1:-mcpu=21264a:-mcpu=21264
|
2004-11-03 19:16:27 +01:00
|
|
|
3.1:-mcpu=7400:-mcpu=750
|
|
|
|
3.1:-mcpu=7450:-mcpu=750
|
2004-07-27 21:25:44 +02:00
|
|
|
3.1:-mtune=r2000:-cpu=r2000
|
|
|
|
3.1:-mtune=r3000:-cpu=r3000
|
|
|
|
3.1:-mtune=r3900:-cpu=r3900
|
|
|
|
3.1:-mtune=r4000:-cpu=r4000
|
|
|
|
3.1:-mtune=r4100:-cpu=r4100
|
|
|
|
3.1:-mtune=r4300:-cpu=r4300
|
|
|
|
3.1:-mtune=r4400:-cpu=r4400
|
|
|
|
3.1:-mtune=r4600:-cpu=r4600
|
|
|
|
3.1:-mtune=r5000:-cpu=r5000
|
|
|
|
3.1:-mtune=r6000:-cpu=r6000
|
|
|
|
3.1:-mtune=r8000:-cpu=r8000
|
|
|
|
3.3:-march=c3:-march=i586
|
2004-07-28 18:54:03 +02:00
|
|
|
3.3:-march=winchip-c6:-march=i586
|
|
|
|
3.3:-march=winchip2:-march=i586
|
2004-08-04 13:39:43 +02:00
|
|
|
3.4:-march=athlon-fx:-march=athlon-xp
|
2004-11-03 19:16:27 +01:00
|
|
|
3.4:-march=athlon64:-march=athlon-xp
|
2004-07-28 18:54:03 +02:00
|
|
|
3.4:-march=c3-2:-march=c3
|
|
|
|
3.4:-march=k8:-march=athlon-xp
|
|
|
|
3.4:-march=nocona:-march=pentium4
|
|
|
|
3.4:-march=opteron:-march=athlon-xp
|
|
|
|
3.4:-march=pentium-m:-march=pentium3
|
|
|
|
3.4:-march=pentium3m:-march=pentium3
|
|
|
|
3.4:-march=pentium4m:-march=pentium4
|
|
|
|
3.4:-march=prescott:-march=pentium4
|
2001-06-29 13:24:51 +02:00
|
|
|
EOD
|
|
|
|
`
|
|
|
|
fi
|
|
|
|
|
2001-06-07 11:59:28 +02:00
|
|
|
echo $FLAGS
|
|
|
|
|
|
|
|
exit 0
|