ada: Add new switch -gnatyz
[official-gcc.git] / libgo / goarch.sh
blob977f318b34e02b7e05701f66b40be8d54041658a
1 #!/bin/sh
3 # Copyright 2018 The Go Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style
5 # license that can be found in the LICENSE file.
7 # Code in Makefile.am will invoke this script with two arguments.
8 # The first is a GOARCH value. The second is a keyword.
9 # The script will print the value of that keyword for that GOARCH.
10 # Keywords:
11 # - bigendian: true or false
12 # - cachelinesize: the cache line size in bytes
13 # (for performance only; it's not essential to get this right)
14 # - defaultphyspagesize: the default physical page size in bytes
15 # (not currently used, but maybe some day)
16 # - family: the processor family, from ALLGOARCHFAMILY in configure.ac
17 # - int64align: alignment of int64 type in bytes
18 # - maxalign: maximum alignment of values of Go types in bytes
19 # - minframesize: size of smallest possible function frame in bytes
20 # (not currently used, may never be used)
21 # - pcquantum: minimum size of a single instruction in bytes
22 # - ptrsize: size of a pointer in bytes
24 if test $# -ne 2; then
25 echo 1>&2 "usage: goarch <goarch> <keyword>"
26 exit 1
29 goarch=$1
30 keyword=$2
32 # Default values
33 bigendian=false
34 cachelinesize=64
35 defaultphyspagesize=4096
36 family=unknown
37 int64align=8
38 maxalign=8
39 minframesize=0
40 pcquantum=1
41 ptrsize=8
42 stackalign=8
44 case $goarch in
45 386)
46 family=I386
47 int64align=4
48 maxalign=4
49 ptrsize=4
50 stackalign=4
52 alpha)
53 family=ALPHA
54 defaultphyspagesize=8192
55 pcquantum=4
57 amd64)
58 family=AMD64
60 amd64p32)
61 family=AMD64
62 ptrsize=4
63 stackalign=4
65 arm | armbe)
66 family=ARM
67 cachelinesize=32
68 minframesize=4
69 pcquantum=4
70 ptrsize=4
71 stackalign=4
72 case $goarch in
73 *be)
74 bigendian=true
76 esac
78 arm64 | arm64be)
79 family=ARM64
80 cachelinesize=32
81 defaultphyspagesize=65536
82 minframesize=8
83 pcquantum=4
84 stackalign=16
85 case $goarch in
86 *be)
87 bigendian=true
89 esac
91 ia64)
92 family=IA64
93 cachelinesize=128
94 defaultphyspagesize=65536
96 m68k)
97 family=M68K
98 bigendian=true
99 cachelinesize=16
100 int64align=2
101 maxalign=2
102 pcquantum=4
103 ptrsize=4
104 stackalign=4
106 mips | mipsle | mips64p32 | mips64p32le)
107 family=MIPS
108 bigendian=true
109 cachelinesize=32
110 defaultphyspagesize=16384
111 minframesize=4
112 pcquantum=4
113 ptrsize=4
114 stackalign=4
115 case $goarch in
116 *le)
117 bigendian=false
119 esac
121 mips64 | mips64le)
122 family=MIPS64
123 bigendian=true
124 cachelinesize=32
125 defaultphyspagesize=16384
126 minframesize=8
127 pcquantum=4
128 case $goarch in
129 *le)
130 bigendian=false
132 esac
134 nios2)
135 family=NIOS2
136 cachelinesize=32
137 minframesize=16
138 pcquantum=4
139 ptrsize=4
140 stackalign=4
142 ppc)
143 family=PPC
144 bigendian=true
145 defaultphyspagesize=65536
146 minframesize=32
147 pcquantum=4
148 ptrsize=4
149 stackalign=4
151 ppc64 | ppc64le)
152 family=PPC64
153 bigendian=true
154 defaultphyspagesize=65536
155 minframesize=32
156 pcquantum=4
157 stackalign=16
158 case $goarch in
159 *le)
160 bigendian=false
162 esac
164 riscv)
165 family=RISCV
166 pcquantum=2
167 ptrsize=4
168 stackalign=4
170 riscv64)
171 family=RISCV64
172 pcquantum=2
174 s390)
175 family=S390
176 bigendian=true
177 cachelinesize=256
178 minframesize=4
179 pcquantum=2
180 ptrsize=4
181 stackalign=4
183 s390x)
184 family=S390X
185 bigendian=true
186 cachelinesize=256
187 minframesize=8
188 pcquantum=2
190 sh | shbe)
191 family=SH
192 cachelinesize=16
193 int64align=4
194 minframesize=4
195 pcquantum=2
196 ptrsize=4
197 stackalign=4
198 case $goarch in
199 *be)
200 bigendian=true
202 esac
204 sparc)
205 family=SPARC
206 bigendian=true
207 defaultphyspagesize=8192
208 pcquantum=4
209 ptrsize=4
210 stackalign=4
212 sparc64)
213 family=SPARC64
214 bigendian=true
215 defaultphyspagesize=8192
216 pcquantum=4
218 wasm)
219 family=WASM
220 defaultphyspagesize=65536
223 echo 1>&2 "unrecognized goarch value \"$goarch\""
224 exit 1
226 esac
228 if test "$family" = "unknown"; then
229 echo 1>&2 "internal error: no family for goarch value \"$goarch\""
230 exit 1
233 case $keyword in
234 bigendian)
235 echo $bigendian
237 cachelinesize)
238 echo $cachelinesize
240 defaultphyspagesize)
241 echo $defaultphyspagesize
243 family)
244 echo $family
246 int64align)
247 echo $int64align
249 maxalign)
250 echo $maxalign
252 minframesize)
253 echo $minframesize
255 pcquantum)
256 echo $pcquantum
258 ptrsize)
259 echo $ptrsize
261 stackalign)
262 echo $stackalign
265 echo 1>&2 "unrecognized keyword \"$keyword\""
266 exit 1
268 esac
270 exit 0