Add the RISCV_PKGARCH variables to help with indicating which tuning
profiles are valid for use on configurations which are supersets of
them, e.g. 'riscv64gc' packages are valid also for the 'rva20u64'
profile.

AI-Generated: Uses Claude Opus 5.5

Signed-off-by: Trevor Gamblin <[email protected]>
---
 meta/conf/machine/include/riscv/tune-riscv.inc | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/meta/conf/machine/include/riscv/tune-riscv.inc 
b/meta/conf/machine/include/riscv/tune-riscv.inc
index 500808ef12..b31d903172 100644
--- a/meta/conf/machine/include/riscv/tune-riscv.inc
+++ b/meta/conf/machine/include/riscv/tune-riscv.inc
@@ -4,23 +4,33 @@ DEFAULTTUNE ?= "riscv64gc"
 
 AVAILTUNES += "rva23u64 rva22u64 rva20u64 riscv64gcv riscv64gc riscv32gc 
riscv64 riscv32 riscv64nc riscv64nf riscv32nf"
 
-# zifencei isn't part of these profiles per gcc's -march expansion, but the
+# Each profile is a superset of the previous one and of riscv64gc (with the 
same
+# lp64d ABI), so list those as compatible package archs, with lowest priority
+# first. TUNE_RISCV_PKGARCH only expands to the currently selected tune's name.
+RISCV_PKGARCH_GC = "riscv64imafdc_zicsr_zifencei"
+RISCV_PKGARCH_RVA20 = "rva20u64_zifencei"
+RISCV_PKGARCH_RVA22 = "rva22u64_zifencei"
+
+# riscv64gcv is unique in that rva20 and rva22 are not strict supersets of it
+# (they lack the 'v' extension) but rva23 is, so split it out for 
comprehension.
+RISCV_PKGARCH_GCV = "riscv64imafdcv_zicsr_zifencei"
+
 # Linux kernel requires it, so add it on top of the profile's extensions.
 TUNE_FEATURES:tune-rva20u64 := "${@oe.tune.riscv_isa_to_tune("rva20u64")} 
zifencei"
-PACKAGE_EXTRA_ARCHS:tune-rva20u64 = "${TUNE_RISCV_PKGARCH}"
+PACKAGE_EXTRA_ARCHS:tune-rva20u64 = "${RISCV_PKGARCH_GC} ${TUNE_RISCV_PKGARCH}"
 
 TUNE_FEATURES:tune-rva22u64 := "${@oe.tune.riscv_isa_to_tune("rva22u64")} 
zifencei"
-PACKAGE_EXTRA_ARCHS:tune-rva22u64 = "${TUNE_RISCV_PKGARCH}"
+PACKAGE_EXTRA_ARCHS:tune-rva22u64 = "${RISCV_PKGARCH_GC} 
${RISCV_PKGARCH_RVA20} ${TUNE_RISCV_PKGARCH}"
 
 TUNE_FEATURES:tune-rva23u64 := "${@oe.tune.riscv_isa_to_tune("rva23u64")} 
zifencei"
-PACKAGE_EXTRA_ARCHS:tune-rva23u64 = "${TUNE_RISCV_PKGARCH}"
+PACKAGE_EXTRA_ARCHS:tune-rva23u64 = "${RISCV_PKGARCH_GC} ${RISCV_PKGARCH_GCV} 
${RISCV_PKGARCH_RVA20} ${RISCV_PKGARCH_RVA22} ${TUNE_RISCV_PKGARCH}"
 
 # Default
 TUNE_FEATURES:tune-riscv64gc := "${@oe.tune.riscv_isa_to_tune("rv64gc")}"
 PACKAGE_EXTRA_ARCHS:tune-riscv64gc = "${TUNE_RISCV_PKGARCH}"
 
 TUNE_FEATURES:tune-riscv64gcv := "${@oe.tune.riscv_isa_to_tune("rv64gcv")}"
-PACKAGE_EXTRA_ARCHS:tune-riscv64gcv = "${TUNE_RISCV_PKGARCH}"
+PACKAGE_EXTRA_ARCHS:tune-riscv64gcv = "${RISCV_PKGARCH_GC} 
${TUNE_RISCV_PKGARCH}"
 
 TUNE_FEATURES:tune-riscv32gc := "${@oe.tune.riscv_isa_to_tune("rv32gc")}"
 PACKAGE_EXTRA_ARCHS:tune-riscv32gc = "${TUNE_RISCV_PKGARCH}"

-- 
2.55.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#246996): 
https://lists.openembedded.org/g/openembedded-core/message/246996
Mute This Topic: https://lists.openembedded.org/mt/121511801/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to