summaryrefslogtreecommitdiffstats
path: root/conf
diff options
context:
space:
mode:
Diffstat (limited to 'conf')
-rw-r--r--conf/machine/include/microblaze/feature-microblaze-v10.inc5
-rw-r--r--conf/machine/include/microblaze/feature-microblaze-v7.inc7
-rw-r--r--conf/machine/include/microblaze/feature-microblaze-v8.inc45
-rw-r--r--conf/machine/include/microblaze/feature-microblaze-v9.inc8
-rw-r--r--conf/machine/include/microblaze/feature-microblaze-versions.inc126
-rw-r--r--conf/machine/include/tune-microblaze-features.inc4
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
3TUNEVALID[v10.0] = "Use Microblaze version 10.0"
4MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v10.0", "-mcpu=v10.0", "" ,d)}"
5MBPKGVERSION .= "${@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
2TUNEVALID[v7.30] = "Use Microblaze version 7.30"
3
4MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v7.30", "-mcpu=v7.30.a", "" ,d)}"
5MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v7.30", "-v7.30", "" ,d)}"
6
7TUNECONFLICTS[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
2TUNEVALID[v8.50] = "Use Microblaze version 8.50"
3MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v8.50", "-mcpu=v8.50.a", "" ,d)}"
4MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v8.50", "-v8.50", "" ,d)}"
5
6TUNEVALID[v8.40] = "Use Microblaze version 8.40"
7MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v8.40", "-mcpu=v8.40.a", "" ,d)}"
8MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v8.40", "-v8.40", "" ,d)}"
9
10TUNEVALID[v8.30] = "Use Microblaze version 8.30"
11MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v8.30", "-mcpu=v8.30.a", "" ,d)}"
12MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v8.30", "-v8.30", "" ,d)}"
13
14TUNEVALID[v8.20] = "Use Microblaze version 8.20"
15MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v8.20", "-mcpu=v8.20.a", "" ,d)}"
16MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v8.20", "-v8.20", "" ,d)}"
17
18TUNEVALID[v8.10] = "Use Microblaze version 8.10"
19MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v8.10", "-mcpu=v8.10.a", "" ,d)}"
20MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v8.10", "-v8.10", "" ,d)}"
21
22TUNEVALID[v8.00] = "Use Microblaze version 8.00"
23MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v8.00", "-mcpu=v8.00.a", "" ,d)}"
24MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v8.00", "-v8.00", "" ,d)}"
25
26TUNECONFLICTS[v8.00] += "reorder"
27TUNECONFLICTS[v8.10] += "reorder"
28TUNECONFLICTS[v8.20] += "reorder"
29
30# Perform some additional sanity checking
31python __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
2TUNEVALID[v9.6] = "Use Microblaze version 9.6"
3MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v9.6", "-mcpu=v9.6", "" ,d)}"
4MBPKGVERSION .= "${@bb.utils.contains("TUNE_FEATURES", "v9.6", "-v9.6", "" ,d)}"
5
6TUNEVALID[v9.0] = "Use Microblaze version 9.0"
7MBCCARGSVERSION += "${@bb.utils.contains("TUNE_FEATURES", "v9.0", "-mcpu=v9.0", "" ,d)}"
8MBPKGVERSION .= "${@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.
4MBCCARGSVERSION = "" 4
5MBPKGVERSION = "" 5def microblaze_parse_version(s):
6require conf/machine/include/microblaze/feature-microblaze-v10.inc 6 # versions before v9 use the "vX.YY.Z" scheme where Z = [ab]
7require conf/machine/include/microblaze/feature-microblaze-v9.inc 7 # versions after v8 use the "vX.Y" scheme
8require conf/machine/include/microblaze/feature-microblaze-v8.inc 8 import re
9require 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:
13TUNECONFLICTS[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")
14TUNECONFLICTS[v9.6] += "v7.30 v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v10.0" 14 return (major, minor)
15TUNECONFLICTS[v9.0] += "v7.30 v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.6 v10.0" 15 return None
16TUNECONFLICTS[v8.50] += "v7.30 v8.00 v8.10 v8.20 v8.30 v8.40 v9.0 v9.6 v10.0" 16
17TUNECONFLICTS[v8.40] += "v7.30 v8.00 v8.10 v8.20 v8.30 v8.50 v9.0 v9.6 v10.0" 17def microblaze_version_conflict(ver, d):
18TUNECONFLICTS[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()
19TUNECONFLICTS[v8.20] += "v7.30 v8.00 v8.10 v8.30 v8.40 v8.50 v9.0 v9.6 v10.0" 19 conflict = []
20TUNECONFLICTS[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)
21TUNECONFLICTS[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:
22TUNECONFLICTS[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
27def 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
35def 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
43def 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
52TUNEVALID[v7.30] = "MicroBlaze version 7.30"
53TUNEVALID[v8.00] = "MicroBlaze version 8.00"
54TUNEVALID[v8.10] = "MicroBlaze version 8.10"
55TUNEVALID[v8.20] = "MicroBlaze version 8.20"
56TUNEVALID[v8.30] = "MicroBlaze version 8.30"
57TUNEVALID[v8.40] = "MicroBlaze version 8.40"
58TUNEVALID[v8.50] = "MicroBlaze version 8.50"
59TUNEVALID[v9.0] = "MicroBlaze version 9.0"
60TUNEVALID[v9.1] = "MicroBlaze version 9.1"
61TUNEVALID[v9.2] = "MicroBlaze version 9.2"
62TUNEVALID[v9.3] = "MicroBlaze version 9.3"
63TUNEVALID[v9.4] = "MicroBlaze version 9.4"
64TUNEVALID[v9.5] = "MicroBlaze version 9.5"
65TUNEVALID[v9.6] = "MicroBlaze version 9.6"
66TUNEVALID[v10.0] = "MicroBlaze version 10.0"
67
68# Version conflict matrix
69TUNECONFLICTS[v7.30] := "${@microblaze_version_conflict('v7.30', d)}"
70TUNECONFLICTS[v8.00] := "${@microblaze_version_conflict('v8.00', d)}"
71TUNECONFLICTS[v8.10] := "${@microblaze_version_conflict('v8.10', d)}"
72TUNECONFLICTS[v8.20] := "${@microblaze_version_conflict('v8.20', d)}"
73TUNECONFLICTS[v8.30] := "${@microblaze_version_conflict('v8.30', d)}"
74TUNECONFLICTS[v8.40] := "${@microblaze_version_conflict('v8.40', d)}"
75TUNECONFLICTS[v8.50] := "${@microblaze_version_conflict('v8.50', d)}"
76TUNECONFLICTS[v9.0] := "${@microblaze_version_conflict('v9.0', d)}"
77TUNECONFLICTS[v9.1] := "${@microblaze_version_conflict('v9.1', d)}"
78TUNECONFLICTS[v9.2] := "${@microblaze_version_conflict('v9.2', d)}"
79TUNECONFLICTS[v9.3] := "${@microblaze_version_conflict('v9.3', d)}"
80TUNECONFLICTS[v9.4] := "${@microblaze_version_conflict('v9.4', d)}"
81TUNECONFLICTS[v9.5] := "${@microblaze_version_conflict('v9.5', d)}"
82TUNECONFLICTS[v9.6] := "${@microblaze_version_conflict('v9.6', d)}"
83TUNECONFLICTS[v10.0] := "${@microblaze_version_conflict('v10.0', d)}"
84
85# Version/feature conflicts
86TUNECONFLICTS[v7.30] += "reorder little-endian"
87TUNECONFLICTS[v8.00] += "reorder"
88TUNECONFLICTS[v8.10] += "reorder"
89TUNECONFLICTS[v8.20] += "reorder"
90
91# Version flags
92TUNE_CCARGS += "-mcpu=${@microblaze_format_gcc_version(microblaze_current_version(d))}"
93MBPKGARCH_VERSION = "-${@microblaze_format_pkg_version(microblaze_current_version(d))}"
94
95# Perform some additional tune feature dependency enforcement
96python __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
12TUNE_ARCH = "microblaze${@bb.utils.contains("TUNE_FEATURES", "little-endian", "el", "eb" ,d)}" 12TUNE_ARCH = "microblaze${@bb.utils.contains("TUNE_FEATURES", "little-endian", "el", "eb" ,d)}"
13 13
14# Compiler args 14# Compiler args
15TUNE_CCARGS += "${MBCCARGSENDIAN} ${MBCCARGSVERSION} ${MBCCARGSBARRELSHIFT} ${MBCCARGSMUL} ${MBCCARGSDIV} ${MBCCARGSFPU} ${MBCCARGSPATTERNCOMPARE} ${MBCCARGSREORDER}" 15TUNE_CCARGS += "${MBCCARGSENDIAN} ${MBCCARGSBARRELSHIFT} ${MBCCARGSMUL} ${MBCCARGSDIV} ${MBCCARGSFPU} ${MBCCARGSPATTERNCOMPARE} ${MBCCARGSREORDER}"
16 16
17# Package Architecture formatting 17# Package Architecture formatting
18MBPKGMATH = "${MBPKGMUL}${MBPKGDIV}${MBPKGFPU}" 18MBPKGMATH = "${MBPKGMUL}${MBPKGDIV}${MBPKGFPU}"
19TUNE_PKGARCH = "microblaze${MBPKGENDIAN}${MBPKGVERSION}${MBPKGBARRELSHIFT}${MBPKGSPATTERNCOMPARE}${MBPKGREORDER}${MBPKGMATH}" 19TUNE_PKGARCH = "microblaze${MBPKGENDIAN}${MBPKGARCH_VERSION}${MBPKGBARRELSHIFT}${MBPKGSPATTERNCOMPARE}${MBPKGREORDER}${MBPKGMATH}"
20 20