blob: cc45ddf81df4d79feb056936bf65f706c5a79adf (
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
104
105
106
107
108
109
|
#!/bin/sh
# $NetBSD: cpuflags.NetBSD,v 1.18 2002/03/11 09:25:37 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' ;;
# m68k
*\(68020\)) FLAGS='-m68020' ;; # Untested
*\(68030\)) FLAGS='-m68030' ;; # Mac LC III
*\(68040\)) FLAGS='-m68040' ;; # Untested
*\(68060\)) FLAGS='-m68060' ;; # Untested
#
# sparc
MB86904* | MB86907*) FLAGS="-mcpu=supersparc" ;; # ss5
TMS390Z50*) FLAGS="-mcpu=supersparc" ;; # ss10/ss20
TMS390S10*) FLAGS="-mcpu=supersparc" ;; # classic
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
#
# arm
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
|