diff options
Diffstat (limited to 'conf')
6 files changed, 106 insertions, 89 deletions
diff --git a/conf/machine/include/microblaze/feature-microblaze-v10.inc b/conf/machine/include/microblaze/feature-microblaze-v10.inc deleted file mode 100644 index 61b440df..00000000 --- a/conf/machine/include/microblaze/feature-microblaze-v10.inc +++ /dev/null | |||
| @@ -1,5 +0,0 @@ | |||
| 1 | # Setup version 'feature set' for supported Microblaze version 10 versions | ||
| 2 | |||
| 3 | TUNEVALID[v10.0] = "Use Microblaze version 10.0" | ||
| 4 | MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v10.0", "-mcpu=v10.0", "" ,d)}" | ||
| 5 | MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v10.0", "-v10.0", "" ,d)}" | ||
diff --git a/conf/machine/include/microblaze/feature-microblaze-v7.inc b/conf/machine/include/microblaze/feature-microblaze-v7.inc deleted file mode 100644 index 6022e473..00000000 --- a/conf/machine/include/microblaze/feature-microblaze-v7.inc +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | # Setup version 'feature set' for supported Microblaze version 7 versions | ||
| 2 | TUNEVALID[v7.30] = "Use Microblaze version 7.30" | ||
| 3 | |||
| 4 | MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v7.30", "-mcpu=v7.30.a", "" ,d)}" | ||
| 5 | MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v7.30", "-v7.30", "" ,d)}" | ||
| 6 | |||
| 7 | TUNECONFLICTS[v7.30] += "reorder little-endian" | ||
diff --git a/conf/machine/include/microblaze/feature-microblaze-v8.inc b/conf/machine/include/microblaze/feature-microblaze-v8.inc deleted file mode 100644 index 46a11cfd..00000000 --- a/conf/machine/include/microblaze/feature-microblaze-v8.inc +++ /dev/null | |||
| @@ -1,45 +0,0 @@ | |||
| 1 | # Setup version 'feature set' for supported Microblaze version 8 versions | ||
| 2 | TUNEVALID[v8.50] = "Use Microblaze version 8.50" | ||
| 3 | MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v8.50", "-mcpu=v8.50.a", "" ,d)}" | ||
| 4 | MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v8.50", "-v8.50", "" ,d)}" | ||
| 5 | |||
| 6 | TUNEVALID[v8.40] = "Use Microblaze version 8.40" | ||
| 7 | MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v8.40", "-mcpu=v8.40.a", "" ,d)}" | ||
| 8 | MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v8.40", "-v8.40", "" ,d)}" | ||
| 9 | |||
| 10 | TUNEVALID[v8.30] = "Use Microblaze version 8.30" | ||
| 11 | MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v8.30", "-mcpu=v8.30.a", "" ,d)}" | ||
| 12 | MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v8.30", "-v8.30", "" ,d)}" | ||
| 13 | |||
| 14 | TUNEVALID[v8.20] = "Use Microblaze version 8.20" | ||
| 15 | MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v8.20", "-mcpu=v8.20.a", "" ,d)}" | ||
| 16 | MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v8.20", "-v8.20", "" ,d)}" | ||
| 17 | |||
| 18 | TUNEVALID[v8.10] = "Use Microblaze version 8.10" | ||
| 19 | MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v8.10", "-mcpu=v8.10.a", "" ,d)}" | ||
| 20 | MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v8.10", "-v8.10", "" ,d)}" | ||
| 21 | |||
| 22 | TUNEVALID[v8.00] = "Use Microblaze version 8.00" | ||
| 23 | MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v8.00", "-mcpu=v8.00.a", "" ,d)}" | ||
| 24 | MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v8.00", "-v8.00", "" ,d)}" | ||
| 25 | |||
| 26 | TUNECONFLICTS[v8.00] += "reorder" | ||
| 27 | TUNECONFLICTS[v8.10] += "reorder" | ||
| 28 | TUNECONFLICTS[v8.20] += "reorder" | ||
| 29 | |||
| 30 | # Perform some additional sanity checking | ||
| 31 | python __anonymous () { | ||
| 32 | import bb | ||
| 33 | tune_features = bb.data.getVar('TUNE_FEATURES', d, 1) | ||
| 34 | tuneslist = tune_features.split() | ||
| 35 | |||
| 36 | # | ||
| 37 | # GCC will fail on v8.30 if reorder and pattern-compare are not | ||
| 38 | # both in ccflags | ||
| 39 | # -mxl-reorder requires -mxl-pattern-compare for -mcpu=v8.30.a | ||
| 40 | # Check if either one exists alone and if so, add the other | ||
| 41 | # | ||
| 42 | if 'v8.30' in tuneslist: | ||
| 43 | if 'reorder' in tuneslist and 'pattern-compare' not in tuneslist: | ||
| 44 | d.setVar("TUNE_FEATURES", "%s pattern-compare" % tune_features) | ||
| 45 | } | ||
diff --git a/conf/machine/include/microblaze/feature-microblaze-v9.inc b/conf/machine/include/microblaze/feature-microblaze-v9.inc deleted file mode 100644 index 4777398c..00000000 --- a/conf/machine/include/microblaze/feature-microblaze-v9.inc +++ /dev/null | |||
| @@ -1,8 +0,0 @@ | |||
| 1 | # Setup version 'feature set' for supported Microblaze version 9 versions | ||
| 2 | TUNEVALID[v9.6] = "Use Microblaze version 9.6" | ||
| 3 | MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v9.6", "-mcpu=v9.6", "" ,d)}" | ||
| 4 | MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v9.6", "-v9.6", "" ,d)}" | ||
| 5 | |||
| 6 | TUNEVALID[v9.0] = "Use Microblaze version 9.0" | ||
| 7 | MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v9.0", "-mcpu=v9.0", "" ,d)}" | ||
| 8 | MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v9.0", "-v9.0", "" ,d)}" | ||
diff --git a/conf/machine/include/microblaze/feature-microblaze-versions.inc b/conf/machine/include/microblaze/feature-microblaze-versions.inc index 1d99ede4..dcdf020d 100644 --- a/conf/machine/include/microblaze/feature-microblaze-versions.inc +++ b/conf/machine/include/microblaze/feature-microblaze-versions.inc | |||
| @@ -1,22 +1,104 @@ | |||
| 1 | # Microblaze Versions are defined as features sets, each containing | 1 | # MicroBlaze versions are defined as features, the features are setup to |
| 2 | # a set of hardware features. | 2 | # conflict with other versions as well as unavailable features for particular |
| 3 | 3 | # versions. | |
| 4 | MBCCARGSVERSION = "" | 4 | |
| 5 | MBPKGVERSION = "" | 5 | def microblaze_parse_version(s): |
| 6 | require conf/machine/include/microblaze/feature-microblaze-v10.inc | 6 | # versions before v9 use the "vX.YY.Z" scheme where Z = [ab] |
| 7 | require conf/machine/include/microblaze/feature-microblaze-v9.inc | 7 | # versions after v8 use the "vX.Y" scheme |
| 8 | require conf/machine/include/microblaze/feature-microblaze-v8.inc | 8 | import re |
| 9 | require conf/machine/include/microblaze/feature-microblaze-v7.inc | 9 | m = re.search("^v(\d+)\.(\d+)(\.([ab]))?", s) |
| 10 | 10 | if m: | |
| 11 | # Setup a 'feature set' conflict list which ensures only one version is selected | 11 | major, minor = int(m.group(1)), int(m.group(2)) |
| 12 | # when defining the TUNE_FEATURES_tune-<> in local.conf file. | 12 | if major < 9: |
| 13 | TUNECONFLICTS[v10.0] += "v7.30 v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.6" | 13 | return (major, minor, m.group(4) or "a") |
| 14 | TUNECONFLICTS[v9.6] += "v7.30 v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v10.0" | 14 | return (major, minor) |
| 15 | TUNECONFLICTS[v9.0] += "v7.30 v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.6 v10.0" | 15 | return None |
| 16 | TUNECONFLICTS[v8.50] += "v7.30 v8.00 v8.10 v8.20 v8.30 v8.40 v9.0 v9.6 v10.0" | 16 | |
| 17 | TUNECONFLICTS[v8.40] += "v7.30 v8.00 v8.10 v8.20 v8.30 v8.50 v9.0 v9.6 v10.0" | 17 | def microblaze_version_conflict(ver, d): |
| 18 | TUNECONFLICTS[v8.30] += "v7.30 v8.00 v8.10 v8.20 v8.40 v8.50 v9.0 v9.6 v10.0" | 18 | tunes = d.getVarFlags("TUNEVALID").keys() |
| 19 | TUNECONFLICTS[v8.20] += "v7.30 v8.00 v8.10 v8.30 v8.40 v8.50 v9.0 v9.6 v10.0" | 19 | conflict = [] |
| 20 | TUNECONFLICTS[v8.10] += "v7.30 v8.00 v8.20 v8.30 v8.40 v8.50 v9.0 v9.6 v10.0" | 20 | version = microblaze_parse_version(ver) |
| 21 | TUNECONFLICTS[v8.00] += "v7.30 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.6 v10.0" | 21 | for i in tunes: |
| 22 | TUNECONFLICTS[v7.30] += "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.6 v10.0" | 22 | iversion = microblaze_parse_version(i) |
| 23 | if iversion and iversion != version: | ||
| 24 | conflict.append(i) | ||
| 25 | return " ".join(conflict) | ||
| 26 | |||
| 27 | def microblaze_current_version(d): | ||
| 28 | tunes = (d.getVar("TUNE_FEATURES") or "").split() | ||
| 29 | for i in tunes: | ||
| 30 | version = microblaze_parse_version(i) | ||
| 31 | if version: | ||
| 32 | return version | ||
| 33 | return None | ||
| 34 | |||
| 35 | def microblaze_format_gcc_version(ver): | ||
| 36 | if ver: | ||
| 37 | if ver[0] <= 8 and len(ver) > 2: | ||
| 38 | return "v%d.%d.%s" % ver[0:3] | ||
| 39 | else: | ||
| 40 | return "v%d.%d" % ver[0:2] | ||
| 41 | return "" | ||
| 42 | |||
| 43 | def microblaze_format_pkg_version(ver): | ||
| 44 | if ver: | ||
| 45 | if ver[0] <= 8 and len(ver) > 2 and ver[2] != "a": | ||
| 46 | return "v%d.%d.%s" % ver[0:3] | ||
| 47 | else: | ||
| 48 | return "v%d.%d" % ver[0:2] | ||
| 49 | return "" | ||
| 50 | |||
| 51 | # MicroBlaze versions | ||
| 52 | TUNEVALID[v7.30] = "MicroBlaze version 7.30" | ||
| 53 | TUNEVALID[v8.00] = "MicroBlaze version 8.00" | ||
| 54 | TUNEVALID[v8.10] = "MicroBlaze version 8.10" | ||
| 55 | TUNEVALID[v8.20] = "MicroBlaze version 8.20" | ||
| 56 | TUNEVALID[v8.30] = "MicroBlaze version 8.30" | ||
| 57 | TUNEVALID[v8.40] = "MicroBlaze version 8.40" | ||
| 58 | TUNEVALID[v8.50] = "MicroBlaze version 8.50" | ||
| 59 | TUNEVALID[v9.0] = "MicroBlaze version 9.0" | ||
| 60 | TUNEVALID[v9.1] = "MicroBlaze version 9.1" | ||
| 61 | TUNEVALID[v9.2] = "MicroBlaze version 9.2" | ||
| 62 | TUNEVALID[v9.3] = "MicroBlaze version 9.3" | ||
| 63 | TUNEVALID[v9.4] = "MicroBlaze version 9.4" | ||
| 64 | TUNEVALID[v9.5] = "MicroBlaze version 9.5" | ||
| 65 | TUNEVALID[v9.6] = "MicroBlaze version 9.6" | ||
| 66 | TUNEVALID[v10.0] = "MicroBlaze version 10.0" | ||
| 67 | |||
| 68 | # Version conflict matrix | ||
| 69 | TUNECONFLICTS[v7.30] := "${@microblaze_version_conflict('v7.30', d)}" | ||
| 70 | TUNECONFLICTS[v8.00] := "${@microblaze_version_conflict('v8.00', d)}" | ||
| 71 | TUNECONFLICTS[v8.10] := "${@microblaze_version_conflict('v8.10', d)}" | ||
| 72 | TUNECONFLICTS[v8.20] := "${@microblaze_version_conflict('v8.20', d)}" | ||
| 73 | TUNECONFLICTS[v8.30] := "${@microblaze_version_conflict('v8.30', d)}" | ||
| 74 | TUNECONFLICTS[v8.40] := "${@microblaze_version_conflict('v8.40', d)}" | ||
| 75 | TUNECONFLICTS[v8.50] := "${@microblaze_version_conflict('v8.50', d)}" | ||
| 76 | TUNECONFLICTS[v9.0] := "${@microblaze_version_conflict('v9.0', d)}" | ||
| 77 | TUNECONFLICTS[v9.1] := "${@microblaze_version_conflict('v9.1', d)}" | ||
| 78 | TUNECONFLICTS[v9.2] := "${@microblaze_version_conflict('v9.2', d)}" | ||
| 79 | TUNECONFLICTS[v9.3] := "${@microblaze_version_conflict('v9.3', d)}" | ||
| 80 | TUNECONFLICTS[v9.4] := "${@microblaze_version_conflict('v9.4', d)}" | ||
| 81 | TUNECONFLICTS[v9.5] := "${@microblaze_version_conflict('v9.5', d)}" | ||
| 82 | TUNECONFLICTS[v9.6] := "${@microblaze_version_conflict('v9.6', d)}" | ||
| 83 | TUNECONFLICTS[v10.0] := "${@microblaze_version_conflict('v10.0', d)}" | ||
| 84 | |||
| 85 | # Version/feature conflicts | ||
| 86 | TUNECONFLICTS[v7.30] += "reorder little-endian" | ||
| 87 | TUNECONFLICTS[v8.00] += "reorder" | ||
| 88 | TUNECONFLICTS[v8.10] += "reorder" | ||
| 89 | TUNECONFLICTS[v8.20] += "reorder" | ||
| 90 | |||
| 91 | # Version flags | ||
| 92 | TUNE_CCARGS += "-mcpu=${@microblaze_format_gcc_version(microblaze_current_version(d))}" | ||
| 93 | MBPKGARCH_VERSION = "-${@microblaze_format_pkg_version(microblaze_current_version(d))}" | ||
| 94 | |||
| 95 | # Perform some additional tune feature dependency enforcement | ||
| 96 | python __anonymous () { | ||
| 97 | tunes = (d.getVar('TUNE_FEATURES') or "").split() | ||
| 98 | if len(tunes) != 0: | ||
| 99 | # For v8.30 pattern-compare is required if reorder is enabled, enforce | ||
| 100 | # this in tune features. | ||
| 101 | if 'v8.30' in tunes and 'reorder' in tunes and 'pattern-compare' not in tunes: | ||
| 102 | d.setVar("TUNE_FEATURES_append", " pattern-compare") | ||
| 103 | } | ||
| 104 | |||
diff --git a/conf/machine/include/tune-microblaze-features.inc b/conf/machine/include/tune-microblaze-features.inc index ad08a186..29463d2b 100644 --- a/conf/machine/include/tune-microblaze-features.inc +++ b/conf/machine/include/tune-microblaze-features.inc | |||
| @@ -12,9 +12,9 @@ require conf/machine/include/microblaze/feature-microblaze-reorder.inc | |||
| 12 | TUNE_ARCH = "microblaze${@bb.utils.contains("TUNE_FEATURES", "little-endian", "el", "eb" ,d)}" | 12 | TUNE_ARCH = "microblaze${@bb.utils.contains("TUNE_FEATURES", "little-endian", "el", "eb" ,d)}" |
| 13 | 13 | ||
| 14 | # Compiler args | 14 | # Compiler args |
| 15 | TUNE_CCARGS += "${MBCCARGSENDIAN} ${MBCCARGSVERSION} ${MBCCARGSBARRELSHIFT} ${MBCCARGSMUL} ${MBCCARGSDIV} ${MBCCARGSFPU} ${MBCCARGSPATTERNCOMPARE} ${MBCCARGSREORDER}" | 15 | TUNE_CCARGS += "${MBCCARGSENDIAN} ${MBCCARGSBARRELSHIFT} ${MBCCARGSMUL} ${MBCCARGSDIV} ${MBCCARGSFPU} ${MBCCARGSPATTERNCOMPARE} ${MBCCARGSREORDER}" |
| 16 | 16 | ||
| 17 | # Package Architecture formatting | 17 | # Package Architecture formatting |
| 18 | MBPKGMATH = "${MBPKGMUL}${MBPKGDIV}${MBPKGFPU}" | 18 | MBPKGMATH = "${MBPKGMUL}${MBPKGDIV}${MBPKGFPU}" |
| 19 | TUNE_PKGARCH = "microblaze${MBPKGENDIAN}${MBPKGVERSION}${MBPKGBARRELSHIFT}${MBPKGSPATTERNCOMPARE}${MBPKGREORDER}${MBPKGMATH}" | 19 | TUNE_PKGARCH = "microblaze${MBPKGENDIAN}${MBPKGARCH_VERSION}${MBPKGBARRELSHIFT}${MBPKGSPATTERNCOMPARE}${MBPKGREORDER}${MBPKGMATH}" |
| 20 | 20 | ||
