summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-xilinx-bsp/conf/machine/microblaze-tc.conf554
-rw-r--r--meta-xilinx-standalone/recipes-devtools/gcc/gcc-9/additional-microblaze-multilibs.patch84
-rw-r--r--meta-xilinx-standalone/recipes-devtools/gcc/gcc-source_9.%.bbappend5
-rwxr-xr-xmeta-xilinx-standalone/recipes-devtools/gcc/mb-convert-head.sh16
-rwxr-xr-xmeta-xilinx-standalone/recipes-devtools/gcc/mb-convert.sh60
5 files changed, 607 insertions, 112 deletions
diff --git a/meta-xilinx-bsp/conf/machine/microblaze-tc.conf b/meta-xilinx-bsp/conf/machine/microblaze-tc.conf
index 081dd4e8..21ada3c8 100644
--- a/meta-xilinx-bsp/conf/machine/microblaze-tc.conf
+++ b/meta-xilinx-bsp/conf/machine/microblaze-tc.conf
@@ -12,23 +12,53 @@ TARGET_LINK_HASH_STYLE = ""
12# Define all of the multilibs supproted by this configuration 12# Define all of the multilibs supproted by this configuration
13MULTILIB_GLOBAL_VARIANTS = "${@extend_variants(d,'MULTILIBS','multilib')}" 13MULTILIB_GLOBAL_VARIANTS = "${@extend_variants(d,'MULTILIBS','multilib')}"
14 14
15MULTILIBS += "multilib:libmbbs"
16MULTILIBS += "multilib:libmble" 15MULTILIBS += "multilib:libmble"
16MULTILIBS += "multilib:libmbbs"
17MULTILIBS += "multilib:libmbp"
17MULTILIBS += "multilib:libmbm" 18MULTILIBS += "multilib:libmbm"
18MULTILIBS += "multilib:libmbmmh" 19MULTILIBS += "multilib:libmbfpd"
19MULTILIBS += "multilib:libmblem" 20MULTILIBS += "multilib:libmbmfpd"
20MULTILIBS += "multilib:libmblemmh" 21MULTILIBS += "multilib:libmbpm"
21MULTILIBS += "multilib:libmbbsle" 22MULTILIBS += "multilib:libmbpfpd"
23MULTILIBS += "multilib:libmbpmfpd"
24MULTILIBS += "multilib:libmbbsp"
22MULTILIBS += "multilib:libmbbsm" 25MULTILIBS += "multilib:libmbbsm"
23MULTILIBS += "multilib:libmbbsmmh" 26MULTILIBS += "multilib:libmbbsfpd"
24MULTILIBS += "multilib:libmbbslem" 27MULTILIBS += "multilib:libmbbsmfpd"
25MULTILIBS += "multilib:libmbbslemmh" 28MULTILIBS += "multilib:libmbbspm"
26MULTILIBS += "multilib:libmbm64le" 29MULTILIBS += "multilib:libmbbspfpd"
27MULTILIBS += "multilib:libmbm64lem" 30MULTILIBS += "multilib:libmbbspmfpd"
28MULTILIBS += "multilib:libmbm64lemmh" 31MULTILIBS += "multilib:libmblem64"
29MULTILIBS += "multilib:libmbm64bsle" 32MULTILIBS += "multilib:libmblebs"
30MULTILIBS += "multilib:libmbm64bslem" 33MULTILIBS += "multilib:libmblep"
31MULTILIBS += "multilib:libmbm64bslemmh" 34MULTILIBS += "multilib:libmblem"
35MULTILIBS += "multilib:libmblefpd"
36MULTILIBS += "multilib:libmblemfpd"
37MULTILIBS += "multilib:libmblepm"
38MULTILIBS += "multilib:libmblepfpd"
39MULTILIBS += "multilib:libmblepmfpd"
40MULTILIBS += "multilib:libmblebsp"
41MULTILIBS += "multilib:libmblebsm"
42MULTILIBS += "multilib:libmblebsfpd"
43MULTILIBS += "multilib:libmblebsmfpd"
44MULTILIBS += "multilib:libmblebspm"
45MULTILIBS += "multilib:libmblebspfpd"
46MULTILIBS += "multilib:libmblebspmfpd"
47MULTILIBS += "multilib:libmblem64bs"
48MULTILIBS += "multilib:libmblem64p"
49MULTILIBS += "multilib:libmblem64m"
50MULTILIBS += "multilib:libmblem64fpd"
51MULTILIBS += "multilib:libmblem64mfpd"
52MULTILIBS += "multilib:libmblem64pm"
53MULTILIBS += "multilib:libmblem64pfpd"
54MULTILIBS += "multilib:libmblem64pmfpd"
55MULTILIBS += "multilib:libmblem64bsp"
56MULTILIBS += "multilib:libmblem64bsm"
57MULTILIBS += "multilib:libmblem64bsfpd"
58MULTILIBS += "multilib:libmblem64bsmfpd"
59MULTILIBS += "multilib:libmblem64bspm"
60MULTILIBS += "multilib:libmblem64bspfpd"
61MULTILIBS += "multilib:libmblem64bspmfpd"
32 62
33 63
34# Base configuration 64# Base configuration
@@ -41,6 +71,16 @@ TUNE_FEATURES_tune-microblaze = "microblaze bigendian"
41PACKAGE_EXTRA_ARCHS_tune-microblaze = "${TUNE_PKGARCH}" 71PACKAGE_EXTRA_ARCHS_tune-microblaze = "${TUNE_PKGARCH}"
42 72
43 73
74# le
75# CFLAGS: -mlittle-endian
76DEFAULTTUNE_virtclass-multilib-libmble = "microblazele"
77
78AVAILTUNES += "microblazele"
79BASE_LIB_tune-microblazele = "lib/le"
80TUNE_FEATURES_tune-microblazele = "microblaze"
81PACKAGE_EXTRA_ARCHS_tune-microblazele = "${TUNE_PKGARCH}"
82
83
44# bs 84# bs
45# CFLAGS: -mxl-barrel-shift 85# CFLAGS: -mxl-barrel-shift
46DEFAULTTUNE_virtclass-multilib-libmbbs = "microblazebs" 86DEFAULTTUNE_virtclass-multilib-libmbbs = "microblazebs"
@@ -51,14 +91,14 @@ TUNE_FEATURES_tune-microblazebs = "microblaze bigendian barrel-shift"
51PACKAGE_EXTRA_ARCHS_tune-microblazebs = "${TUNE_PKGARCH}" 91PACKAGE_EXTRA_ARCHS_tune-microblazebs = "${TUNE_PKGARCH}"
52 92
53 93
54# le 94# p
55# CFLAGS: -mlittle-endian 95# CFLAGS: -mxl-pattern-compare
56DEFAULTTUNE_virtclass-multilib-libmble = "microblazele" 96DEFAULTTUNE_virtclass-multilib-libmbp = "microblazep"
57 97
58AVAILTUNES += "microblazele" 98AVAILTUNES += "microblazep"
59BASE_LIB_tune-microblazele = "lib/le" 99BASE_LIB_tune-microblazep = "lib/p"
60TUNE_FEATURES_tune-microblazele = "microblaze" 100TUNE_FEATURES_tune-microblazep = "microblaze bigendian pattern-compare"
61PACKAGE_EXTRA_ARCHS_tune-microblazele = "${TUNE_PKGARCH}" 101PACKAGE_EXTRA_ARCHS_tune-microblazep = "${TUNE_PKGARCH}"
62 102
63 103
64# m 104# m
@@ -71,44 +111,64 @@ TUNE_FEATURES_tune-microblazem = "microblaze bigendian multiply-low"
71PACKAGE_EXTRA_ARCHS_tune-microblazem = "${TUNE_PKGARCH}" 111PACKAGE_EXTRA_ARCHS_tune-microblazem = "${TUNE_PKGARCH}"
72 112
73 113
74# m/mh 114# fpd
75# CFLAGS: -mno-xl-soft-mul -mxl-multiply-high 115# CFLAGS: -mhard-float
76DEFAULTTUNE_virtclass-multilib-libmbmmh = "microblazemmh" 116DEFAULTTUNE_virtclass-multilib-libmbfpd = "microblazefpd"
77 117
78AVAILTUNES += "microblazemmh" 118AVAILTUNES += "microblazefpd"
79BASE_LIB_tune-microblazemmh = "lib/m/mh" 119BASE_LIB_tune-microblazefpd = "lib/fpd"
80TUNE_FEATURES_tune-microblazemmh = "microblaze bigendian multiply-high" 120TUNE_FEATURES_tune-microblazefpd = "microblaze bigendian fpu-hard"
81PACKAGE_EXTRA_ARCHS_tune-microblazemmh = "${TUNE_PKGARCH}" 121PACKAGE_EXTRA_ARCHS_tune-microblazefpd = "${TUNE_PKGARCH}"
82 122
83 123
84# le/m 124# m/fpd
85# CFLAGS: -mlittle-endian -mno-xl-soft-mul 125# CFLAGS: -mno-xl-soft-mul -mhard-float
86DEFAULTTUNE_virtclass-multilib-libmblem = "microblazelem" 126DEFAULTTUNE_virtclass-multilib-libmbmfpd = "microblazemfpd"
87 127
88AVAILTUNES += "microblazelem" 128AVAILTUNES += "microblazemfpd"
89BASE_LIB_tune-microblazelem = "lib/le/m" 129BASE_LIB_tune-microblazemfpd = "lib/m/fpd"
90TUNE_FEATURES_tune-microblazelem = "microblaze multiply-low" 130TUNE_FEATURES_tune-microblazemfpd = "microblaze bigendian multiply-low fpu-hard"
91PACKAGE_EXTRA_ARCHS_tune-microblazelem = "${TUNE_PKGARCH}" 131PACKAGE_EXTRA_ARCHS_tune-microblazemfpd = "${TUNE_PKGARCH}"
132
133
134# p/m
135# CFLAGS: -mxl-pattern-compare -mno-xl-soft-mul
136DEFAULTTUNE_virtclass-multilib-libmbpm = "microblazepm"
137
138AVAILTUNES += "microblazepm"
139BASE_LIB_tune-microblazepm = "lib/p/m"
140TUNE_FEATURES_tune-microblazepm = "microblaze bigendian pattern-compare multiply-low"
141PACKAGE_EXTRA_ARCHS_tune-microblazepm = "${TUNE_PKGARCH}"
92 142
93 143
94# le/m/mh 144# p/fpd
95# CFLAGS: -mlittle-endian -mno-xl-soft-mul -mxl-multiply-high 145# CFLAGS: -mxl-pattern-compare -mhard-float
96DEFAULTTUNE_virtclass-multilib-libmblemmh = "microblazelemmh" 146DEFAULTTUNE_virtclass-multilib-libmbpfpd = "microblazepfpd"
97 147
98AVAILTUNES += "microblazelemmh" 148AVAILTUNES += "microblazepfpd"
99BASE_LIB_tune-microblazelemmh = "lib/le/m/mh" 149BASE_LIB_tune-microblazepfpd = "lib/p/fpd"
100TUNE_FEATURES_tune-microblazelemmh = "microblaze multiply-high" 150TUNE_FEATURES_tune-microblazepfpd = "microblaze bigendian pattern-compare fpu-hard"
101PACKAGE_EXTRA_ARCHS_tune-microblazelemmh = "${TUNE_PKGARCH}" 151PACKAGE_EXTRA_ARCHS_tune-microblazepfpd = "${TUNE_PKGARCH}"
102 152
103 153
104# bs/le 154# p/m/fpd
105# CFLAGS: -mxl-barrel-shift -mlittle-endian 155# CFLAGS: -mxl-pattern-compare -mno-xl-soft-mul -mhard-float
106DEFAULTTUNE_virtclass-multilib-libmbbsle = "microblazebsle" 156DEFAULTTUNE_virtclass-multilib-libmbpmfpd = "microblazepmfpd"
107 157
108AVAILTUNES += "microblazebsle" 158AVAILTUNES += "microblazepmfpd"
109BASE_LIB_tune-microblazebsle = "lib/bs/le" 159BASE_LIB_tune-microblazepmfpd = "lib/p/m/fpd"
110TUNE_FEATURES_tune-microblazebsle = "microblaze barrel-shift" 160TUNE_FEATURES_tune-microblazepmfpd = "microblaze bigendian pattern-compare multiply-low fpu-hard"
111PACKAGE_EXTRA_ARCHS_tune-microblazebsle = "${TUNE_PKGARCH}" 161PACKAGE_EXTRA_ARCHS_tune-microblazepmfpd = "${TUNE_PKGARCH}"
162
163
164# bs/p
165# CFLAGS: -mxl-barrel-shift -mxl-pattern-compare
166DEFAULTTUNE_virtclass-multilib-libmbbsp = "microblazebsp"
167
168AVAILTUNES += "microblazebsp"
169BASE_LIB_tune-microblazebsp = "lib/bs/p"
170TUNE_FEATURES_tune-microblazebsp = "microblaze bigendian barrel-shift pattern-compare"
171PACKAGE_EXTRA_ARCHS_tune-microblazebsp = "${TUNE_PKGARCH}"
112 172
113 173
114# bs/m 174# bs/m
@@ -121,91 +181,361 @@ TUNE_FEATURES_tune-microblazebsm = "microblaze bigendian barrel-shift multiply-l
121PACKAGE_EXTRA_ARCHS_tune-microblazebsm = "${TUNE_PKGARCH}" 181PACKAGE_EXTRA_ARCHS_tune-microblazebsm = "${TUNE_PKGARCH}"
122 182
123 183
124# bs/m/mh 184# bs/fpd
125# CFLAGS: -mxl-barrel-shift -mno-xl-soft-mul -mxl-multiply-high 185# CFLAGS: -mxl-barrel-shift -mhard-float
126DEFAULTTUNE_virtclass-multilib-libmbbsmmh = "microblazebsmmh" 186DEFAULTTUNE_virtclass-multilib-libmbbsfpd = "microblazebsfpd"
187
188AVAILTUNES += "microblazebsfpd"
189BASE_LIB_tune-microblazebsfpd = "lib/bs/fpd"
190TUNE_FEATURES_tune-microblazebsfpd = "microblaze bigendian barrel-shift fpu-hard"
191PACKAGE_EXTRA_ARCHS_tune-microblazebsfpd = "${TUNE_PKGARCH}"
192
193
194# bs/m/fpd
195# CFLAGS: -mxl-barrel-shift -mno-xl-soft-mul -mhard-float
196DEFAULTTUNE_virtclass-multilib-libmbbsmfpd = "microblazebsmfpd"
197
198AVAILTUNES += "microblazebsmfpd"
199BASE_LIB_tune-microblazebsmfpd = "lib/bs/m/fpd"
200TUNE_FEATURES_tune-microblazebsmfpd = "microblaze bigendian barrel-shift multiply-low fpu-hard"
201PACKAGE_EXTRA_ARCHS_tune-microblazebsmfpd = "${TUNE_PKGARCH}"
202
203
204# bs/p/m
205# CFLAGS: -mxl-barrel-shift -mxl-pattern-compare -mno-xl-soft-mul
206DEFAULTTUNE_virtclass-multilib-libmbbspm = "microblazebspm"
207
208AVAILTUNES += "microblazebspm"
209BASE_LIB_tune-microblazebspm = "lib/bs/p/m"
210TUNE_FEATURES_tune-microblazebspm = "microblaze bigendian barrel-shift pattern-compare multiply-low"
211PACKAGE_EXTRA_ARCHS_tune-microblazebspm = "${TUNE_PKGARCH}"
212
213
214# bs/p/fpd
215# CFLAGS: -mxl-barrel-shift -mxl-pattern-compare -mhard-float
216DEFAULTTUNE_virtclass-multilib-libmbbspfpd = "microblazebspfpd"
217
218AVAILTUNES += "microblazebspfpd"
219BASE_LIB_tune-microblazebspfpd = "lib/bs/p/fpd"
220TUNE_FEATURES_tune-microblazebspfpd = "microblaze bigendian barrel-shift pattern-compare fpu-hard"
221PACKAGE_EXTRA_ARCHS_tune-microblazebspfpd = "${TUNE_PKGARCH}"
222
223
224# bs/p/m/fpd
225# CFLAGS: -mxl-barrel-shift -mxl-pattern-compare -mno-xl-soft-mul -mhard-float
226DEFAULTTUNE_virtclass-multilib-libmbbspmfpd = "microblazebspmfpd"
227
228AVAILTUNES += "microblazebspmfpd"
229BASE_LIB_tune-microblazebspmfpd = "lib/bs/p/m/fpd"
230TUNE_FEATURES_tune-microblazebspmfpd = "microblaze bigendian barrel-shift pattern-compare multiply-low fpu-hard"
231PACKAGE_EXTRA_ARCHS_tune-microblazebspmfpd = "${TUNE_PKGARCH}"
232
233
234# le/m64
235# CFLAGS: -mlittle-endian -m64
236DEFAULTTUNE_virtclass-multilib-libmblem64 = "microblazele64"
237
238AVAILTUNES += "microblazele64"
239BASE_LIB_tune-microblazele64 = "lib/le/m64"
240TUNE_FEATURES_tune-microblazele64 = "microblaze 64-bit"
241PACKAGE_EXTRA_ARCHS_tune-microblazele64 = "${TUNE_PKGARCH}"
242
243
244# le/bs
245# CFLAGS: -mlittle-endian -mxl-barrel-shift
246DEFAULTTUNE_virtclass-multilib-libmblebs = "microblazelebs"
247
248AVAILTUNES += "microblazelebs"
249BASE_LIB_tune-microblazelebs = "lib/le/bs"
250TUNE_FEATURES_tune-microblazelebs = "microblaze barrel-shift"
251PACKAGE_EXTRA_ARCHS_tune-microblazelebs = "${TUNE_PKGARCH}"
252
253
254# le/p
255# CFLAGS: -mlittle-endian -mxl-pattern-compare
256DEFAULTTUNE_virtclass-multilib-libmblep = "microblazelep"
257
258AVAILTUNES += "microblazelep"
259BASE_LIB_tune-microblazelep = "lib/le/p"
260TUNE_FEATURES_tune-microblazelep = "microblaze pattern-compare"
261PACKAGE_EXTRA_ARCHS_tune-microblazelep = "${TUNE_PKGARCH}"
262
263
264# le/m
265# CFLAGS: -mlittle-endian -mno-xl-soft-mul
266DEFAULTTUNE_virtclass-multilib-libmblem = "microblazelem"
267
268AVAILTUNES += "microblazelem"
269BASE_LIB_tune-microblazelem = "lib/le/m"
270TUNE_FEATURES_tune-microblazelem = "microblaze multiply-low"
271PACKAGE_EXTRA_ARCHS_tune-microblazelem = "${TUNE_PKGARCH}"
272
273
274# le/fpd
275# CFLAGS: -mlittle-endian -mhard-float
276DEFAULTTUNE_virtclass-multilib-libmblefpd = "microblazelefpd"
277
278AVAILTUNES += "microblazelefpd"
279BASE_LIB_tune-microblazelefpd = "lib/le/fpd"
280TUNE_FEATURES_tune-microblazelefpd = "microblaze fpu-hard"
281PACKAGE_EXTRA_ARCHS_tune-microblazelefpd = "${TUNE_PKGARCH}"
282
283
284# le/m/fpd
285# CFLAGS: -mlittle-endian -mno-xl-soft-mul -mhard-float
286DEFAULTTUNE_virtclass-multilib-libmblemfpd = "microblazelemfpd"
287
288AVAILTUNES += "microblazelemfpd"
289BASE_LIB_tune-microblazelemfpd = "lib/le/m/fpd"
290TUNE_FEATURES_tune-microblazelemfpd = "microblaze multiply-low fpu-hard"
291PACKAGE_EXTRA_ARCHS_tune-microblazelemfpd = "${TUNE_PKGARCH}"
292
293
294# le/p/m
295# CFLAGS: -mlittle-endian -mxl-pattern-compare -mno-xl-soft-mul
296DEFAULTTUNE_virtclass-multilib-libmblepm = "microblazelepm"
297
298AVAILTUNES += "microblazelepm"
299BASE_LIB_tune-microblazelepm = "lib/le/p/m"
300TUNE_FEATURES_tune-microblazelepm = "microblaze pattern-compare multiply-low"
301PACKAGE_EXTRA_ARCHS_tune-microblazelepm = "${TUNE_PKGARCH}"
302
303
304# le/p/fpd
305# CFLAGS: -mlittle-endian -mxl-pattern-compare -mhard-float
306DEFAULTTUNE_virtclass-multilib-libmblepfpd = "microblazelepfpd"
307
308AVAILTUNES += "microblazelepfpd"
309BASE_LIB_tune-microblazelepfpd = "lib/le/p/fpd"
310TUNE_FEATURES_tune-microblazelepfpd = "microblaze pattern-compare fpu-hard"
311PACKAGE_EXTRA_ARCHS_tune-microblazelepfpd = "${TUNE_PKGARCH}"
312
313
314# le/p/m/fpd
315# CFLAGS: -mlittle-endian -mxl-pattern-compare -mno-xl-soft-mul -mhard-float
316DEFAULTTUNE_virtclass-multilib-libmblepmfpd = "microblazelepmfpd"
317
318AVAILTUNES += "microblazelepmfpd"
319BASE_LIB_tune-microblazelepmfpd = "lib/le/p/m/fpd"
320TUNE_FEATURES_tune-microblazelepmfpd = "microblaze pattern-compare multiply-low fpu-hard"
321PACKAGE_EXTRA_ARCHS_tune-microblazelepmfpd = "${TUNE_PKGARCH}"
322
323
324# le/bs/p
325# CFLAGS: -mlittle-endian -mxl-barrel-shift -mxl-pattern-compare
326DEFAULTTUNE_virtclass-multilib-libmblebsp = "microblazelebsp"
327
328AVAILTUNES += "microblazelebsp"
329BASE_LIB_tune-microblazelebsp = "lib/le/bs/p"
330TUNE_FEATURES_tune-microblazelebsp = "microblaze barrel-shift pattern-compare"
331PACKAGE_EXTRA_ARCHS_tune-microblazelebsp = "${TUNE_PKGARCH}"
332
333
334# le/bs/m
335# CFLAGS: -mlittle-endian -mxl-barrel-shift -mno-xl-soft-mul
336DEFAULTTUNE_virtclass-multilib-libmblebsm = "microblazelebsm"
337
338AVAILTUNES += "microblazelebsm"
339BASE_LIB_tune-microblazelebsm = "lib/le/bs/m"
340TUNE_FEATURES_tune-microblazelebsm = "microblaze barrel-shift multiply-low"
341PACKAGE_EXTRA_ARCHS_tune-microblazelebsm = "${TUNE_PKGARCH}"
342
343
344# le/bs/fpd
345# CFLAGS: -mlittle-endian -mxl-barrel-shift -mhard-float
346DEFAULTTUNE_virtclass-multilib-libmblebsfpd = "microblazelebsfpd"
347
348AVAILTUNES += "microblazelebsfpd"
349BASE_LIB_tune-microblazelebsfpd = "lib/le/bs/fpd"
350TUNE_FEATURES_tune-microblazelebsfpd = "microblaze barrel-shift fpu-hard"
351PACKAGE_EXTRA_ARCHS_tune-microblazelebsfpd = "${TUNE_PKGARCH}"
352
353
354# le/bs/m/fpd
355# CFLAGS: -mlittle-endian -mxl-barrel-shift -mno-xl-soft-mul -mhard-float
356DEFAULTTUNE_virtclass-multilib-libmblebsmfpd = "microblazelebsmfpd"
357
358AVAILTUNES += "microblazelebsmfpd"
359BASE_LIB_tune-microblazelebsmfpd = "lib/le/bs/m/fpd"
360TUNE_FEATURES_tune-microblazelebsmfpd = "microblaze barrel-shift multiply-low fpu-hard"
361PACKAGE_EXTRA_ARCHS_tune-microblazelebsmfpd = "${TUNE_PKGARCH}"
362
363
364# le/bs/p/m
365# CFLAGS: -mlittle-endian -mxl-barrel-shift -mxl-pattern-compare -mno-xl-soft-mul
366DEFAULTTUNE_virtclass-multilib-libmblebspm = "microblazelebspm"
367
368AVAILTUNES += "microblazelebspm"
369BASE_LIB_tune-microblazelebspm = "lib/le/bs/p/m"
370TUNE_FEATURES_tune-microblazelebspm = "microblaze barrel-shift pattern-compare multiply-low"
371PACKAGE_EXTRA_ARCHS_tune-microblazelebspm = "${TUNE_PKGARCH}"
372
373
374# le/bs/p/fpd
375# CFLAGS: -mlittle-endian -mxl-barrel-shift -mxl-pattern-compare -mhard-float
376DEFAULTTUNE_virtclass-multilib-libmblebspfpd = "microblazelebspfpd"
377
378AVAILTUNES += "microblazelebspfpd"
379BASE_LIB_tune-microblazelebspfpd = "lib/le/bs/p/fpd"
380TUNE_FEATURES_tune-microblazelebspfpd = "microblaze barrel-shift pattern-compare fpu-hard"
381PACKAGE_EXTRA_ARCHS_tune-microblazelebspfpd = "${TUNE_PKGARCH}"
382
383
384# le/bs/p/m/fpd
385# CFLAGS: -mlittle-endian -mxl-barrel-shift -mxl-pattern-compare -mno-xl-soft-mul -mhard-float
386DEFAULTTUNE_virtclass-multilib-libmblebspmfpd = "microblazelebspmfpd"
387
388AVAILTUNES += "microblazelebspmfpd"
389BASE_LIB_tune-microblazelebspmfpd = "lib/le/bs/p/m/fpd"
390TUNE_FEATURES_tune-microblazelebspmfpd = "microblaze barrel-shift pattern-compare multiply-low fpu-hard"
391PACKAGE_EXTRA_ARCHS_tune-microblazelebspmfpd = "${TUNE_PKGARCH}"
392
393
394# le/m64/bs
395# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift
396DEFAULTTUNE_virtclass-multilib-libmblem64bs = "microblazele64bs"
397
398AVAILTUNES += "microblazele64bs"
399BASE_LIB_tune-microblazele64bs = "lib/le/m64/bs"
400TUNE_FEATURES_tune-microblazele64bs = "microblaze 64-bit barrel-shift"
401PACKAGE_EXTRA_ARCHS_tune-microblazele64bs = "${TUNE_PKGARCH}"
402
403
404# le/m64/p
405# CFLAGS: -mlittle-endian -m64 -mxl-pattern-compare
406DEFAULTTUNE_virtclass-multilib-libmblem64p = "microblazele64p"
407
408AVAILTUNES += "microblazele64p"
409BASE_LIB_tune-microblazele64p = "lib/le/m64/p"
410TUNE_FEATURES_tune-microblazele64p = "microblaze 64-bit pattern-compare"
411PACKAGE_EXTRA_ARCHS_tune-microblazele64p = "${TUNE_PKGARCH}"
412
413
414# le/m64/m
415# CFLAGS: -mlittle-endian -m64 -mno-xl-soft-mul
416DEFAULTTUNE_virtclass-multilib-libmblem64m = "microblazele64m"
417
418AVAILTUNES += "microblazele64m"
419BASE_LIB_tune-microblazele64m = "lib/le/m64/m"
420TUNE_FEATURES_tune-microblazele64m = "microblaze 64-bit multiply-low"
421PACKAGE_EXTRA_ARCHS_tune-microblazele64m = "${TUNE_PKGARCH}"
422
423
424# le/m64/fpd
425# CFLAGS: -mlittle-endian -m64 -mhard-float
426DEFAULTTUNE_virtclass-multilib-libmblem64fpd = "microblazele64fpd"
427
428AVAILTUNES += "microblazele64fpd"
429BASE_LIB_tune-microblazele64fpd = "lib/le/m64/fpd"
430TUNE_FEATURES_tune-microblazele64fpd = "microblaze 64-bit fpu-hard"
431PACKAGE_EXTRA_ARCHS_tune-microblazele64fpd = "${TUNE_PKGARCH}"
432
433
434# le/m64/m/fpd
435# CFLAGS: -mlittle-endian -m64 -mno-xl-soft-mul -mhard-float
436DEFAULTTUNE_virtclass-multilib-libmblem64mfpd = "microblazele64mfpd"
437
438AVAILTUNES += "microblazele64mfpd"
439BASE_LIB_tune-microblazele64mfpd = "lib/le/m64/m/fpd"
440TUNE_FEATURES_tune-microblazele64mfpd = "microblaze 64-bit multiply-low fpu-hard"
441PACKAGE_EXTRA_ARCHS_tune-microblazele64mfpd = "${TUNE_PKGARCH}"
442
443
444# le/m64/p/m
445# CFLAGS: -mlittle-endian -m64 -mxl-pattern-compare -mno-xl-soft-mul
446DEFAULTTUNE_virtclass-multilib-libmblem64pm = "microblazele64pm"
447
448AVAILTUNES += "microblazele64pm"
449BASE_LIB_tune-microblazele64pm = "lib/le/m64/p/m"
450TUNE_FEATURES_tune-microblazele64pm = "microblaze 64-bit pattern-compare multiply-low"
451PACKAGE_EXTRA_ARCHS_tune-microblazele64pm = "${TUNE_PKGARCH}"
452
453
454# le/m64/p/fpd
455# CFLAGS: -mlittle-endian -m64 -mxl-pattern-compare -mhard-float
456DEFAULTTUNE_virtclass-multilib-libmblem64pfpd = "microblazele64pfpd"
127 457
128AVAILTUNES += "microblazebsmmh" 458AVAILTUNES += "microblazele64pfpd"
129BASE_LIB_tune-microblazebsmmh = "lib/bs/m/mh" 459BASE_LIB_tune-microblazele64pfpd = "lib/le/m64/p/fpd"
130TUNE_FEATURES_tune-microblazebsmmh = "microblaze bigendian barrel-shift multiply-high" 460TUNE_FEATURES_tune-microblazele64pfpd = "microblaze 64-bit pattern-compare fpu-hard"
131PACKAGE_EXTRA_ARCHS_tune-microblazebsmmh = "${TUNE_PKGARCH}" 461PACKAGE_EXTRA_ARCHS_tune-microblazele64pfpd = "${TUNE_PKGARCH}"
132 462
133 463
134# bs/le/m 464# le/m64/p/m/fpd
135# CFLAGS: -mxl-barrel-shift -mlittle-endian -mno-xl-soft-mul 465# CFLAGS: -mlittle-endian -m64 -mxl-pattern-compare -mno-xl-soft-mul -mhard-float
136DEFAULTTUNE_virtclass-multilib-libmbbslem = "microblazebslem" 466DEFAULTTUNE_virtclass-multilib-libmblem64pmfpd = "microblazele64pmfpd"
137 467
138AVAILTUNES += "microblazebslem" 468AVAILTUNES += "microblazele64pmfpd"
139BASE_LIB_tune-microblazebslem = "lib/bs/le/m" 469BASE_LIB_tune-microblazele64pmfpd = "lib/le/m64/p/m/fpd"
140TUNE_FEATURES_tune-microblazebslem = "microblaze barrel-shift multiply-low" 470TUNE_FEATURES_tune-microblazele64pmfpd = "microblaze 64-bit pattern-compare multiply-low fpu-hard"
141PACKAGE_EXTRA_ARCHS_tune-microblazebslem = "${TUNE_PKGARCH}" 471PACKAGE_EXTRA_ARCHS_tune-microblazele64pmfpd = "${TUNE_PKGARCH}"
142 472
143 473
144# bs/le/m/mh 474# le/m64/bs/p
145# CFLAGS: -mxl-barrel-shift -mlittle-endian -mno-xl-soft-mul -mxl-multiply-high 475# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift -mxl-pattern-compare
146DEFAULTTUNE_virtclass-multilib-libmbbslemmh = "microblazebslemmh" 476DEFAULTTUNE_virtclass-multilib-libmblem64bsp = "microblazele64bsp"
147 477
148AVAILTUNES += "microblazebslemmh" 478AVAILTUNES += "microblazele64bsp"
149BASE_LIB_tune-microblazebslemmh = "lib/bs/le/m/mh" 479BASE_LIB_tune-microblazele64bsp = "lib/le/m64/bs/p"
150TUNE_FEATURES_tune-microblazebslemmh = "microblaze barrel-shift multiply-high" 480TUNE_FEATURES_tune-microblazele64bsp = "microblaze 64-bit barrel-shift pattern-compare"
151PACKAGE_EXTRA_ARCHS_tune-microblazebslemmh = "${TUNE_PKGARCH}" 481PACKAGE_EXTRA_ARCHS_tune-microblazele64bsp = "${TUNE_PKGARCH}"
152 482
153 483
154# m64/le 484# le/m64/bs/m
155# CFLAGS: -m64 -mlittle-endian 485# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift -mno-xl-soft-mul
156DEFAULTTUNE_virtclass-multilib-libmbm64le = "microblaze64le" 486DEFAULTTUNE_virtclass-multilib-libmblem64bsm = "microblazele64bsm"
157 487
158AVAILTUNES += "microblaze64le" 488AVAILTUNES += "microblazele64bsm"
159BASE_LIB_tune-microblaze64le = "lib/m64/le" 489BASE_LIB_tune-microblazele64bsm = "lib/le/m64/bs/m"
160TUNE_FEATURES_tune-microblaze64le = "microblaze 64-bit" 490TUNE_FEATURES_tune-microblazele64bsm = "microblaze 64-bit barrel-shift multiply-low"
161PACKAGE_EXTRA_ARCHS_tune-microblaze64le = "${TUNE_PKGARCH}" 491PACKAGE_EXTRA_ARCHS_tune-microblazele64bsm = "${TUNE_PKGARCH}"
162 492
163 493
164# m64/le/m 494# le/m64/bs/fpd
165# CFLAGS: -m64 -mlittle-endian -mno-xl-soft-mul 495# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift -mhard-float
166DEFAULTTUNE_virtclass-multilib-libmbm64lem = "microblaze64lem" 496DEFAULTTUNE_virtclass-multilib-libmblem64bsfpd = "microblazele64bsfpd"
167 497
168AVAILTUNES += "microblaze64lem" 498AVAILTUNES += "microblazele64bsfpd"
169BASE_LIB_tune-microblaze64lem = "lib/m64/le/m" 499BASE_LIB_tune-microblazele64bsfpd = "lib/le/m64/bs/fpd"
170TUNE_FEATURES_tune-microblaze64lem = "microblaze 64-bit multiply-low" 500TUNE_FEATURES_tune-microblazele64bsfpd = "microblaze 64-bit barrel-shift fpu-hard"
171PACKAGE_EXTRA_ARCHS_tune-microblaze64lem = "${TUNE_PKGARCH}" 501PACKAGE_EXTRA_ARCHS_tune-microblazele64bsfpd = "${TUNE_PKGARCH}"
172 502
173 503
174# m64/le/m/mh 504# le/m64/bs/m/fpd
175# CFLAGS: -m64 -mlittle-endian -mno-xl-soft-mul -mxl-multiply-high 505# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift -mno-xl-soft-mul -mhard-float
176DEFAULTTUNE_virtclass-multilib-libmbm64lemmh = "microblaze64lemmh" 506DEFAULTTUNE_virtclass-multilib-libmblem64bsmfpd = "microblazele64bsmfpd"
177 507
178AVAILTUNES += "microblaze64lemmh" 508AVAILTUNES += "microblazele64bsmfpd"
179BASE_LIB_tune-microblaze64lemmh = "lib/m64/le/m/mh" 509BASE_LIB_tune-microblazele64bsmfpd = "lib/le/m64/bs/m/fpd"
180TUNE_FEATURES_tune-microblaze64lemmh = "microblaze 64-bit multiply-high" 510TUNE_FEATURES_tune-microblazele64bsmfpd = "microblaze 64-bit barrel-shift multiply-low fpu-hard"
181PACKAGE_EXTRA_ARCHS_tune-microblaze64lemmh = "${TUNE_PKGARCH}" 511PACKAGE_EXTRA_ARCHS_tune-microblazele64bsmfpd = "${TUNE_PKGARCH}"
182 512
183 513
184# m64/bs/le 514# le/m64/bs/p/m
185# CFLAGS: -m64 -mxl-barrel-shift -mlittle-endian 515# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift -mxl-pattern-compare -mno-xl-soft-mul
186DEFAULTTUNE_virtclass-multilib-libmbm64bsle = "microblaze64bsle" 516DEFAULTTUNE_virtclass-multilib-libmblem64bspm = "microblazele64bspm"
187 517
188AVAILTUNES += "microblaze64bsle" 518AVAILTUNES += "microblazele64bspm"
189BASE_LIB_tune-microblaze64bsle = "lib/m64/bs/le" 519BASE_LIB_tune-microblazele64bspm = "lib/le/m64/bs/p/m"
190TUNE_FEATURES_tune-microblaze64bsle = "microblaze 64-bit barrel-shift" 520TUNE_FEATURES_tune-microblazele64bspm = "microblaze 64-bit barrel-shift pattern-compare multiply-low"
191PACKAGE_EXTRA_ARCHS_tune-microblaze64bsle = "${TUNE_PKGARCH}" 521PACKAGE_EXTRA_ARCHS_tune-microblazele64bspm = "${TUNE_PKGARCH}"
192 522
193 523
194# m64/bs/le/m 524# le/m64/bs/p/fpd
195# CFLAGS: -m64 -mxl-barrel-shift -mlittle-endian -mno-xl-soft-mul 525# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift -mxl-pattern-compare -mhard-float
196DEFAULTTUNE_virtclass-multilib-libmbm64bslem = "microblaze64bslem" 526DEFAULTTUNE_virtclass-multilib-libmblem64bspfpd = "microblazele64bspfpd"
197 527
198AVAILTUNES += "microblaze64bslem" 528AVAILTUNES += "microblazele64bspfpd"
199BASE_LIB_tune-microblaze64bslem = "lib/m64/bs/le/m" 529BASE_LIB_tune-microblazele64bspfpd = "lib/le/m64/bs/p/fpd"
200TUNE_FEATURES_tune-microblaze64bslem = "microblaze 64-bit barrel-shift multiply-low" 530TUNE_FEATURES_tune-microblazele64bspfpd = "microblaze 64-bit barrel-shift pattern-compare fpu-hard"
201PACKAGE_EXTRA_ARCHS_tune-microblaze64bslem = "${TUNE_PKGARCH}" 531PACKAGE_EXTRA_ARCHS_tune-microblazele64bspfpd = "${TUNE_PKGARCH}"
202 532
203 533
204# m64/bs/le/m/mh 534# le/m64/bs/p/m/fpd
205# CFLAGS: -m64 -mxl-barrel-shift -mlittle-endian -mno-xl-soft-mul -mxl-multiply-high 535# CFLAGS: -mlittle-endian -m64 -mxl-barrel-shift -mxl-pattern-compare -mno-xl-soft-mul -mhard-float
206DEFAULTTUNE_virtclass-multilib-libmbm64bslemmh = "microblaze64bslemmh" 536DEFAULTTUNE_virtclass-multilib-libmblem64bspmfpd = "microblazele64bspmfpd"
207 537
208AVAILTUNES += "microblaze64bslemmh" 538AVAILTUNES += "microblazele64bspmfpd"
209BASE_LIB_tune-microblaze64bslemmh = "lib/m64/bs/le/m/mh" 539BASE_LIB_tune-microblazele64bspmfpd = "lib/le/m64/bs/p/m/fpd"
210TUNE_FEATURES_tune-microblaze64bslemmh = "microblaze 64-bit barrel-shift multiply-high" 540TUNE_FEATURES_tune-microblazele64bspmfpd = "microblaze 64-bit barrel-shift pattern-compare multiply-low fpu-hard"
211PACKAGE_EXTRA_ARCHS_tune-microblaze64bslemmh = "${TUNE_PKGARCH}" 541PACKAGE_EXTRA_ARCHS_tune-microblazele64bspmfpd = "${TUNE_PKGARCH}"
diff --git a/meta-xilinx-standalone/recipes-devtools/gcc/gcc-9/additional-microblaze-multilibs.patch b/meta-xilinx-standalone/recipes-devtools/gcc/gcc-9/additional-microblaze-multilibs.patch
new file mode 100644
index 00000000..a32045bc
--- /dev/null
+++ b/meta-xilinx-standalone/recipes-devtools/gcc/gcc-9/additional-microblaze-multilibs.patch
@@ -0,0 +1,84 @@
1Change the multilib settings to match the expectations of Vitis and related.
2
3The multilib list is as follows:
4
5.;
6le;@mlittle-endian
7bs;@mxl-barrel-shift
8p;@mxl-pattern-compare
9m;@mno-xl-soft-mul
10fpd;@mhard-float
11m/fpd;@mno-xl-soft-mul@mhard-float
12p/m;@mxl-pattern-compare@mno-xl-soft-mul
13p/fpd;@mxl-pattern-compare@mhard-float
14p/m/fpd;@mxl-pattern-compare@mno-xl-soft-mul@mhard-float
15bs/p;@mxl-barrel-shift@mxl-pattern-compare
16bs/m;@mxl-barrel-shift@mno-xl-soft-mul
17bs/fpd;@mxl-barrel-shift@mhard-float
18bs/m/fpd;@mxl-barrel-shift@mno-xl-soft-mul@mhard-float
19bs/p/m;@mxl-barrel-shift@mxl-pattern-compare@mno-xl-soft-mul
20bs/p/fpd;@mxl-barrel-shift@mxl-pattern-compare@mhard-float
21bs/p/m/fpd;@mxl-barrel-shift@mxl-pattern-compare@mno-xl-soft-mul@mhard-float
22le/m64;@mlittle-endian@m64
23le/bs;@mlittle-endian@mxl-barrel-shift
24le/p;@mlittle-endian@mxl-pattern-compare
25le/m;@mlittle-endian@mno-xl-soft-mul
26le/fpd;@mlittle-endian@mhard-float
27le/m/fpd;@mlittle-endian@mno-xl-soft-mul@mhard-float
28le/p/m;@mlittle-endian@mxl-pattern-compare@mno-xl-soft-mul
29le/p/fpd;@mlittle-endian@mxl-pattern-compare@mhard-float
30le/p/m/fpd;@mlittle-endian@mxl-pattern-compare@mno-xl-soft-mul@mhard-float
31le/bs/p;@mlittle-endian@mxl-barrel-shift@mxl-pattern-compare
32le/bs/m;@mlittle-endian@mxl-barrel-shift@mno-xl-soft-mul
33le/bs/fpd;@mlittle-endian@mxl-barrel-shift@mhard-float
34le/bs/m/fpd;@mlittle-endian@mxl-barrel-shift@mno-xl-soft-mul@mhard-float
35le/bs/p/m;@mlittle-endian@mxl-barrel-shift@mxl-pattern-compare@mno-xl-soft-mul
36le/bs/p/fpd;@mlittle-endian@mxl-barrel-shift@mxl-pattern-compare@mhard-float
37le/bs/p/m/fpd;@mlittle-endian@mxl-barrel-shift@mxl-pattern-compare@mno-xl-soft-mul@mhard-float
38le/m64/bs;@mlittle-endian@m64@mxl-barrel-shift
39le/m64/p;@mlittle-endian@m64@mxl-pattern-compare
40le/m64/m;@mlittle-endian@m64@mno-xl-soft-mul
41le/m64/fpd;@mlittle-endian@m64@mhard-float
42le/m64/m/fpd;@mlittle-endian@m64@mno-xl-soft-mul@mhard-float
43le/m64/p/m;@mlittle-endian@m64@mxl-pattern-compare@mno-xl-soft-mul
44le/m64/p/fpd;@mlittle-endian@m64@mxl-pattern-compare@mhard-float
45le/m64/p/m/fpd;@mlittle-endian@m64@mxl-pattern-compare@mno-xl-soft-mul@mhard-float
46le/m64/bs/p;@mlittle-endian@m64@mxl-barrel-shift@mxl-pattern-compare
47le/m64/bs/m;@mlittle-endian@m64@mxl-barrel-shift@mno-xl-soft-mul
48le/m64/bs/fpd;@mlittle-endian@m64@mxl-barrel-shift@mhard-float
49le/m64/bs/m/fpd;@mlittle-endian@m64@mxl-barrel-shift@mno-xl-soft-mul@mhard-float
50le/m64/bs/p/m;@mlittle-endian@m64@mxl-barrel-shift@mxl-pattern-compare@mno-xl-soft-mul
51le/m64/bs/p/fpd;@mlittle-endian@m64@mxl-barrel-shift@mxl-pattern-compare@mhard-float
52le/m64/bs/p/m/fpd;@mlittle-endian@m64@mxl-barrel-shift@mxl-pattern-compare@mno-xl-soft-mul@mhard-float
53
54As part of this the order of the multilibs was changes from upstream to make
55it easier to avoid big-endian m64, which is not supported by the toolchain.
56
57Signed-off-by: Mark Hatle <mark.hatle@xilinx.com>
58
59diff -ur gcc-9.2.0.orig/gcc/config/microblaze/t-microblaze gcc-9.2.0/gcc/config/microblaze/t-microblaze
60--- gcc-9.2.0.orig/gcc/config/microblaze/t-microblaze 2020-02-07 09:46:48.286261214 -0800
61+++ gcc-9.2.0/gcc/config/microblaze/t-microblaze 2020-02-10 17:07:52.440598949 -0800
62@@ -1,16 +1,11 @@
63-MULTILIB_OPTIONS = m64 mxl-barrel-shift mlittle-endian mno-xl-soft-mul mxl-multiply-high
64-MULTILIB_DIRNAMES = m64 bs le m mh
65-MULTILIB_EXCEPTIONS = *m64/mxl-multiply-high mxl-multiply-high
66-MULTILIB_EXCEPTIONS += *m64
67-MULTILIB_EXCEPTIONS += *m64/mxl-barrel-shift
68-MULTILIB_EXCEPTIONS += *m64/mno-xl-soft-mul
69-MULTILIB_EXCEPTIONS += *m64/mxl-barrel-shift/mno-xl-soft-mul
70-MULTILIB_EXCEPTIONS += *m64/mno-xl-soft-mul
71-MULTILIB_EXCEPTIONS += *m64/mxl-barrel-shift/mno-xl-soft-mul/mxl-multiply-high
72-MULTILIB_EXCEPTIONS += *m64/mno-xl-soft-mul/mxl-multiply-high
73+MULTILIB_OPTIONS = mlittle-endian m64 mxl-barrel-shift mxl-pattern-compare mno-xl-soft-mul mhard-float
74+MULTILIB_DIRNAMES = le m64 bs p m fpd
75+MULTILIB_EXCEPTIONS = mxl-multiply-high
76 MULTILIB_EXCEPTIONS += *mxl-barrel-shift/mxl-multiply-high mxl-multiply-high
77 MULTILIB_EXCEPTIONS += *mlittle-endian/mxl-multiply-high mxl-multiply-high
78-MULTILIB_EXCEPTIONS += *m64/mxl-barrel-shift/mlittle-endian/mxl-multiply-high
79+MULTILIB_EXCEPTIONS += *mxl-pattern-compare*/*mxl-multiply-high*
80+# Big endian m64 is not supported
81+MULTILIB_EXCEPTIONS += m64*
82
83 # Extra files
84 microblaze-c.o: $(srcdir)/config/microblaze/microblaze-c.c \
diff --git a/meta-xilinx-standalone/recipes-devtools/gcc/gcc-source_9.%.bbappend b/meta-xilinx-standalone/recipes-devtools/gcc/gcc-source_9.%.bbappend
new file mode 100644
index 00000000..24abdc11
--- /dev/null
+++ b/meta-xilinx-standalone/recipes-devtools/gcc/gcc-source_9.%.bbappend
@@ -0,0 +1,5 @@
1# Add MicroBlaze Patches (only when using MicroBlaze)
2FILESEXTRAPATHS_append_microblaze_xilinx-standalone := "${THISDIR}/gcc-9:"
3SRC_URI_append_microblaze_xilinx-standalone = " \
4 file://additional-microblaze-multilibs.patch \
5"
diff --git a/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert-head.sh b/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert-head.sh
new file mode 100755
index 00000000..b59dff1e
--- /dev/null
+++ b/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert-head.sh
@@ -0,0 +1,16 @@
1#! /bin/bash
2
3# Call using:
4#../microblaze/sysroots/x86_64-oesdk-linux/usr/bin/microblaze-xilinx-elf/microblaze-xilinx-elf-gcc -print-multi-lib | mb-convert-head.sh
5
6# Then copy the output into the special microblaze-tc BSP
7
8sed -e 's,;, ,' |
9 while read mlib args ; do
10 if [ $mlib = '.' ]; then
11 continue
12 fi
13 multilib="libmb$(echo $mlib | sed -e 's,/,,g')"
14
15 echo 'MULTILIBS += "multilib:'${multilib}'"'
16 done
diff --git a/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert.sh b/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert.sh
new file mode 100755
index 00000000..e05145ec
--- /dev/null
+++ b/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert.sh
@@ -0,0 +1,60 @@
1#! /bin/bash
2
3# Call using:
4#../microblaze/sysroots/x86_64-oesdk-linux/usr/bin/microblaze-xilinx-elf/microblaze-xilinx-elf-gcc -print-multi-lib | mb-convert.sh
5
6# Then copy the output into the special microblaze-tc BSP
7
8mlib_to_feature() {
9 feature_base="microblaze"
10 feature_endian=" bigendian"
11 feature_barrel=""
12 feature_pattern=""
13 feature_multiply=""
14 feature_multiplyhigh=""
15 feature_sixtyfour=""
16 feature_math=""
17 while read feature ; do
18 case $feature in
19 le) feature_endian="";;
20 bs) feature_barrel=" barrel-shift";;
21 p) feature_pattern=" pattern-compare";;
22 m) if [ -z ${feature_multiplyhigh} ]; then feature_multiply=" multiply-low" ; fi ;;
23 mh) feature_multiply="" ; feature_multiplyhigh=" multiply-high";;
24 m64) feature_sixtyfour=" 64-bit";;
25 fpd) feature_math=" fpu-hard";;
26 *) echo "UNKNOWN $feature";;
27 esac
28 done
29 echo "${feature_base}${feature_sixtyfour}${feature_endian}${feature_barrel}${feature_pattern}${feature_multiply}${feature_multiplyhigh}${feature_math}"
30}
31
32sed -e 's,;, ,' |
33 while read mlib args ; do
34 if [ $mlib = '.' ]; then
35 echo '# Base configuration'
36 echo '# CFLAGS:'
37 echo 'DEFAULTTUNE = "microblaze"'
38 echo
39 echo 'AVAILTUNES += "microblaze"'
40 echo 'BASE_LIB_tune-microblaze = "lib"'
41 echo 'TUNE_FEATURES_tune-microblaze = "microblaze bigendian"'
42 echo 'PACKAGE_EXTRA_ARCHS_tune-microblaze = "${TUNE_PKGARCH}"'
43 continue
44 fi
45
46 cflags=$(echo $args | sed -e 's,@, -,g')
47 multilib="libmb$(echo $mlib | sed -e 's,/,,g')"
48 tune="microblaze$(echo $mlib | sed -e 's,m64,64,' -e 's,/,,g')"
49 features=$(echo $mlib | sed -e 's,/, ,g' | xargs -n 1 echo | mlib_to_feature)
50 echo
51 echo
52 echo "# $mlib"
53 echo "# CFLAGS:${cflags}"
54 echo "DEFAULTTUNE_virtclass-multilib-$multilib = \"$tune\""
55 echo
56 echo "AVAILTUNES += \"$tune\""
57 echo "BASE_LIB_tune-$tune = \"lib/$mlib\""
58 echo "TUNE_FEATURES_tune-$tune = \"${features}\""
59 echo "PACKAGE_EXTRA_ARCHS_tune-$tune = \"\${TUNE_PKGARCH}\""
60 done