Brad Bishop | 316dfdd | 2018-06-25 12:45:53 -0400 | [diff] [blame] | 1 | # MicroBlaze versions are defined as features, the features are setup to |
| 2 | # conflict with other versions as well as unavailable features for particular |
| 3 | # versions. |
| 4 | # |
| 5 | # Versions before v9.0 of MicroBlaze use a versioning scheme of "vX.YY.Z" |
| 6 | # (where Z = [abc]). For v8.* versions of MicroBlaze the revision (Z) changes |
| 7 | # did not affect ABI and are ignored by this tune configuration. Though this |
| 8 | # format is expected by GCC including the revision, but this is defaulted to |
| 9 | # ".a". |
| 10 | # |
| 11 | # Since v9.0 of MicroBlaze the revision (Z) part of versions was entirely |
| 12 | # dropped and the version scheme was changed to "vX.Y". |
| 13 | |
| 14 | def microblaze_current_version(d, gcc = False): |
| 15 | import re |
| 16 | # find the current version, and convert it to major/minor integers |
| 17 | version = None |
| 18 | for t in (d.getVar("TUNE_FEATURES") or "").split(): |
| 19 | m = re.search("^v(\d+)\.(\d+)", t) |
| 20 | if m: |
| 21 | version = int(m.group(1)), int(m.group(2)) |
| 22 | break |
| 23 | |
| 24 | # format the version string in generic or GCC specific formats |
| 25 | if version: |
| 26 | if version[0] <= 8: |
| 27 | return ("v%d.%02d" % version[0:2]) + (".a" if gcc else "") |
| 28 | else: |
| 29 | return "v%d.%d" % version[0:2] |
| 30 | return "" |
| 31 | |
| 32 | # MicroBlaze versions |
| 33 | TUNEVALID[v8.00] = "MicroBlaze version 8.00" |
| 34 | TUNEVALID[v8.10] = "MicroBlaze version 8.10" |
| 35 | TUNEVALID[v8.20] = "MicroBlaze version 8.20" |
| 36 | TUNEVALID[v8.30] = "MicroBlaze version 8.30" |
| 37 | TUNEVALID[v8.40] = "MicroBlaze version 8.40" |
| 38 | TUNEVALID[v8.50] = "MicroBlaze version 8.50" |
| 39 | TUNEVALID[v9.0] = "MicroBlaze version 9.0" |
| 40 | TUNEVALID[v9.1] = "MicroBlaze version 9.1" |
| 41 | TUNEVALID[v9.2] = "MicroBlaze version 9.2" |
| 42 | TUNEVALID[v9.3] = "MicroBlaze version 9.3" |
| 43 | TUNEVALID[v9.4] = "MicroBlaze version 9.4" |
| 44 | TUNEVALID[v9.5] = "MicroBlaze version 9.5" |
| 45 | TUNEVALID[v9.6] = "MicroBlaze version 9.6" |
| 46 | TUNEVALID[v10.0] = "MicroBlaze version 10.0" |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 47 | TUNEVALID[v11.0] = "MicroBlaze version 11.0" |
Brad Bishop | 316dfdd | 2018-06-25 12:45:53 -0400 | [diff] [blame] | 48 | |
| 49 | # Version conflict matrix |
| 50 | TUNECONFLICTS[v8.00] = "" |
| 51 | TUNECONFLICTS[v8.10] = "v8.00" |
| 52 | TUNECONFLICTS[v8.20] = "v8.00 v8.10" |
| 53 | TUNECONFLICTS[v8.30] = "v8.00 v8.10 v8.20" |
| 54 | TUNECONFLICTS[v8.40] = "v8.00 v8.10 v8.20 v8.30" |
| 55 | TUNECONFLICTS[v8.50] = "v8.00 v8.10 v8.20 v8.30 v8.40" |
| 56 | TUNECONFLICTS[v9.0] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50" |
| 57 | TUNECONFLICTS[v9.1] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0" |
| 58 | TUNECONFLICTS[v9.2] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1" |
| 59 | TUNECONFLICTS[v9.3] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2" |
| 60 | TUNECONFLICTS[v9.4] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3" |
| 61 | TUNECONFLICTS[v9.5] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4" |
| 62 | TUNECONFLICTS[v9.6] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4 v9.5" |
| 63 | TUNECONFLICTS[v10.0] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4 v9.5 v9.6" |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 64 | TUNECONFLICTS[v11.0] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4 v9.5 v9.6 v10.0" |
Brad Bishop | 316dfdd | 2018-06-25 12:45:53 -0400 | [diff] [blame] | 65 | |
| 66 | # Version flags |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 67 | TUNE_CCARGS += "${@'-mcpu=%s' % (microblaze_current_version(d, True)) if microblaze_current_version(d, True) != '' else ''}" |
| 68 | MBPKGARCH_VERSION = "${@'-%s' % (microblaze_current_version(d, True)) if microblaze_current_version(d, True) != '' else ''}" |
Brad Bishop | 316dfdd | 2018-06-25 12:45:53 -0400 | [diff] [blame] | 69 | |