summaryrefslogtreecommitdiff
path: root/devel/cpuflags/files/cpuflags.NetBSD
blob: df7f4b0f7e3feaa547ced1e851fa85e0b5735aea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/bin/sh
# $NetBSD: cpuflags.NetBSD,v 1.16 2002/01/01 17:01:26 abs Exp $

if [ -x /sbin/sysctl ] ;then
    SYSCTL=/sbin/sysctl
else
    SYSCTL=/usr/sbin/sysctl	# NetBSD 1.3
fi

hw_model=`$SYSCTL -n hw.model`
hw_machine=`$SYSCTL -n hw.machine`

# We're almost certainly crosscompiling
if [ -n "$MACHINE" -a $hw_machine != "$MACHINE" ]; then
    echo
    exit
fi

case $hw_model in
    # i386
    *386-class*)	FLAGS='-march=i386'		;;
    *486-class*)	FLAGS='-march=i486'		;;
    *AMD\ K6*)		FLAGS='-march=k6'		;;
    *586-class*)	FLAGS='-march=pentium'		;;
    *686-class*)	FLAGS='-march=pentiumpro'	;;
    #
    # sparc
    MB86904* | MB86907*) FLAGS="-mcpu=supersparc"	;; # ss5
    TMS390Z50*)		FLAGS="-mcpu=supersparc"	;; # ss10/ss20
    MB86930* | MB86934*) FLAGS="-mcpu=sparclite"	;; # from gcc
    MB86900/1A*)	FLAGS="-mcpu=cypress"		;; # ss1+
    CY7C601*)		FLAGS="-mcpu=cypress"		;; # ss2
    W8601/8701*)	FLAGS="-mcpu=cypress"		;; # elc
    # under 1.5.1 -mcpu=ultrasparc chokes egcs-2.91.66 compiling perl
    SUNW,UltraSPARC*)	FLAGS="-mcpu=v9"		;; # Ultra
    #
    # arm32
    ARM610*)		FLAGS="-mcpu=arm610"		;; # risc pc
    ARM710*)		FLAGS="-mcpu=arm710"		;; # risc pc
    SA-110*)	
	case $hw_machine in			 # arm32 split post 1.5
	    cats|dnard|hpcarm|netwinder)
		FLAGS="-mcpu=strongarm110" ;;
	    acorn32)
		FLAGS="-march=armv3m -mtune=strongarm" ;;
	    *)
		# The memorybus in strongarm risc pc machines cannot support
		# certain strongarm instructions, but in 1.5 and earlier all
		# strongarm machines are 'arm32', so uname and sysctl no use
		if egrep -q ofbus0|footbridge0 /var/run/dmesg.boot 2>/dev/null \
									; then
		    FLAGS="-mcpu=strongarm110"			   # dnard/cats
		else
		    FLAGS="-march=armv3m -mtune=strongarm"	   # risc pc
		fi
	esac	;;
    #
    # alpha / vax / unknown
    *)
	case $hw_machine in
	    alpha)
		# cpu0 at mainbus0: ID 0 (primary), 21164A-0 (unknown ...
		if egrep -q '^cpu0.*21164A' /var/run/dmesg.boot 2>/dev/null \
									; then
		    FLAGS="-mcpu=21164a"
		fi
		# Need to confirm how other CPUs probe
		;;	# No VAX specific gcc flags :(
	    vax)
		;;	# No VAX specific gcc flags :(
	    *)
		echo "Unknown hw.model '$hw_model'"			>&2
		echo "Please send machine details to abs@netbsd.org"	>&2
	esac
esac

# Fixup flags for old gcc
if [ -n "$FLAGS" ]; then
    gcc_ver=`gcc -v 2>&1 | awk '/gcc version/ {sub("egcs-","");print $3}'`
    FLAGS=`awk -v "flags=$FLAGS" -v "gcc_ver=$gcc_ver" '
	{if (gcc_ver < $1){map[$2] = ""$3}}
	END{if (flags in map) {print map[flags]}else {print flags}}
	' <<EOD
2.90	-mcpu=21164a	
2.90	-march=i386		-mno-486
2.90	-march=i486		-m486
2.90	-march=pentium		-m486
2.90	-march=pentiumpro	-m486
2.90	-mcpu=supersparc	-msupersparc
2.90	-mcpu=sparclite		-msparclite
2.90	-mcpu=cypress		-mcypress
2.90	-mcpu=v9		-mv8
2.90	-mcpu=arm610		-m6
2.90	-mcpu=strongarm110	-m6
2.90	-mcpu=arm710		-m6
2.95	-march=k6		-march=pentium
EOD
`
fi

echo $FLAGS

exit 0