summaryrefslogtreecommitdiffstats
path: root/meta/conf/machine
diff options
context:
space:
mode:
Diffstat (limited to 'meta/conf/machine')
-rw-r--r--meta/conf/machine/include/mips/tune-mips-24k.inc3
-rw-r--r--meta/conf/machine/include/mips/tune-mips-74k.inc1
-rw-r--r--meta/conf/machine/include/mips/tune-octeon.inc1
-rw-r--r--meta/conf/machine/include/qemu.inc7
-rw-r--r--meta/conf/machine/include/riscv/README122
-rw-r--r--meta/conf/machine/include/riscv/arch-riscv.inc138
-rw-r--r--meta/conf/machine/include/riscv/tune-riscv.inc40
-rw-r--r--meta/conf/machine/qemuriscv32.conf4
-rw-r--r--meta/conf/machine/qemux86-64.conf6
-rw-r--r--meta/conf/machine/qemux86.conf6
10 files changed, 267 insertions, 61 deletions
diff --git a/meta/conf/machine/include/mips/tune-mips-24k.inc b/meta/conf/machine/include/mips/tune-mips-24k.inc
index ec4e53f63f..5dc2a8a115 100644
--- a/meta/conf/machine/include/mips/tune-mips-24k.inc
+++ b/meta/conf/machine/include/mips/tune-mips-24k.inc
@@ -5,13 +5,11 @@ MIPSPKGSFX_MIPS16E ??= ""
5require conf/machine/include/mips/tune-mips32r2.inc 5require conf/machine/include/mips/tune-mips32r2.inc
6require conf/machine/include/mips/feature-mips-mips16e.inc 6require conf/machine/include/mips/feature-mips-mips16e.inc
7 7
8
9TUNEVALID[24kc] = "Enable MIPS 24Kc processor optimizations" 8TUNEVALID[24kc] = "Enable MIPS 24Kc processor optimizations"
10TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "24kc", " -mtune=24kc", "", d)}" 9TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "24kc", " -mtune=24kc", "", d)}"
11TUNEVALID[24kec] = "Enable MIPS 24KEc processor optimizations, including DSP" 10TUNEVALID[24kec] = "Enable MIPS 24KEc processor optimizations, including DSP"
12TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "24kec", " -mtune=24kec -mdsp", "", d)}" 11TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "24kec", " -mtune=24kec -mdsp", "", d)}"
13 12
14
15AVAILTUNES += "mips32r2-24kc mips32r2-24kec mips32r2-24kec-m16" 13AVAILTUNES += "mips32r2-24kc mips32r2-24kec mips32r2-24kec-m16"
16AVAILTUNES += "mips32r2el-24kc mips32r2el-24kec mips32r2el-24kec-m16" 14AVAILTUNES += "mips32r2el-24kc mips32r2el-24kec mips32r2el-24kec-m16"
17 15
@@ -32,7 +30,6 @@ MIPSPKGSFX_VARIANT:tune-mips32r2-24kec-m16 = "mips32r2-24kec${MIPSPKGSFX_MIPS16E
32PACKAGE_EXTRA_ARCHS:tune-mips32r2-24kec-m16 = "${PACKAGE_EXTRA_ARCHS:tune-mips32r2-24kec} mips32r2-24kec-m16-nf" 30PACKAGE_EXTRA_ARCHS:tune-mips32r2-24kec-m16 = "${PACKAGE_EXTRA_ARCHS:tune-mips32r2-24kec} mips32r2-24kec-m16-nf"
33QEMU_EXTRAOPTIONS:tune-mips32r2-24kec-m16-nf = " -cpu 24KEc" 31QEMU_EXTRAOPTIONS:tune-mips32r2-24kec-m16-nf = " -cpu 24KEc"
34 32
35
36# little endian: kc, kc+dsp=kec, kc+dsp+mips16e=kec-m16 33# little endian: kc, kc+dsp=kec, kc+dsp+mips16e=kec-m16
37TUNE_FEATURES:tune-mips32r2el-24kc = "${TUNE_FEATURES:tune-mips32r2el-nf} 24kc" 34TUNE_FEATURES:tune-mips32r2el-24kc = "${TUNE_FEATURES:tune-mips32r2el-nf} 24kc"
38TUNE_FEATURES:tune-mips32r2el-24kec = "${TUNE_FEATURES:tune-mips32r2el-nf} 24kec" 35TUNE_FEATURES:tune-mips32r2el-24kec = "${TUNE_FEATURES:tune-mips32r2el-nf} 24kec"
diff --git a/meta/conf/machine/include/mips/tune-mips-74k.inc b/meta/conf/machine/include/mips/tune-mips-74k.inc
index 0ec90ca076..e328b3b490 100644
--- a/meta/conf/machine/include/mips/tune-mips-74k.inc
+++ b/meta/conf/machine/include/mips/tune-mips-74k.inc
@@ -5,7 +5,6 @@ MIPSPKGSFX_MIPS16E ??= ""
5require conf/machine/include/mips/tune-mips32r2.inc 5require conf/machine/include/mips/tune-mips32r2.inc
6require conf/machine/include/mips/feature-mips-mips16e.inc 6require conf/machine/include/mips/feature-mips-mips16e.inc
7 7
8
9TUNEVALID[74kc] = "Enable MIPS 74K with DSPr2 processor optimizations" 8TUNEVALID[74kc] = "Enable MIPS 74K with DSPr2 processor optimizations"
10TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "74kc", " -mtune=74kc", "", d)}" 9TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "74kc", " -mtune=74kc", "", d)}"
11 10
diff --git a/meta/conf/machine/include/mips/tune-octeon.inc b/meta/conf/machine/include/mips/tune-octeon.inc
index d4670e3259..0004190c34 100644
--- a/meta/conf/machine/include/mips/tune-octeon.inc
+++ b/meta/conf/machine/include/mips/tune-octeon.inc
@@ -17,7 +17,6 @@ BASE_LIB:tune-octeon2_64 = "lib64"
17MIPSPKGSFX_VARIANT:tune-octeon2_64 = "octeon2_64" 17MIPSPKGSFX_VARIANT:tune-octeon2_64 = "octeon2_64"
18PACKAGE_EXTRA_ARCHS:tune-octeon2_64 = "mips64 octeon2_64" 18PACKAGE_EXTRA_ARCHS:tune-octeon2_64 = "mips64 octeon2_64"
19 19
20
21TUNEVALID[octeon3] = "Enable optimization related to octeon3 support" 20TUNEVALID[octeon3] = "Enable optimization related to octeon3 support"
22TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'octeon3', ' -march=octeon3 ', '',d)}" 21TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'octeon3', ' -march=octeon3 ', '',d)}"
23 22
diff --git a/meta/conf/machine/include/qemu.inc b/meta/conf/machine/include/qemu.inc
index d7392d4762..c143e37f71 100644
--- a/meta/conf/machine/include/qemu.inc
+++ b/meta/conf/machine/include/qemu.inc
@@ -1,10 +1,3 @@
1PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
2PREFERRED_PROVIDER_virtual/egl ?= "mesa"
3PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
4PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa"
5PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa"
6PREFERRED_PROVIDER_virtual/libgles3 ?= "mesa"
7
8XSERVER ?= "xserver-xorg \ 1XSERVER ?= "xserver-xorg \
9 ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-swrast xserver-xorg-extension-glx', '', d)} \ 2 ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-swrast xserver-xorg-extension-glx', '', d)} \
10 xf86-video-fbdev \ 3 xf86-video-fbdev \
diff --git a/meta/conf/machine/include/riscv/README b/meta/conf/machine/include/riscv/README
new file mode 100644
index 0000000000..beef68f523
--- /dev/null
+++ b/meta/conf/machine/include/riscv/README
@@ -0,0 +1,122 @@
12025/06/08 - Mark Hatle <mark.hatle@amd.com>
2 - Initial Revision
3
4The RISC-V ISA is broken into two parts, a base ISA and extensions. As
5of the writing of this document these are documented at:
6
7https://lf-riscv.atlassian.net/wiki/spaces/HOME/pages/16154769/RISC-V+Technical+Specifications
8
9Specifically "The RISC-V Instruction Set Manual Volume I: Unprivileged ISA"
10was used to create this implementation.
11
12Requirements
13------------
14As RISC-V is a “variable” ISA (a base isa plus numerous extensions), a
15mechanism is required to specify a series of ISA features that a user or
16tune can use to specify a specific CPU instantiation.
17
18Not all ratified or draft features should or can be implemented with the
19available resources.
20
21The implementation should work for Linux, baremetal (newlib), zephyr and
22other operating systems. Supported extensions should be based on
23real-world examples.
24
25Linux
26-----
27Linux required base and support extensions should be available. Linux
28requires:
29* Base: rv32ima & rv64ima
30* Optional FPU: fd
31* Optional RISCV_ISA_C: c
32* Optiona RISCV_ISA_V: v
33* Required additional: _zicsr_zifencei
34* Optional RISCV_ISA_ZBA: _zba
35* Optional RISCV_ISA_ZBB: _zbb
36* Optional RISCV_ISA_ZBC: _zbc (not supported by current QEMU design)
37
38See: https://git.yoctoproject.org/linux-yocto/tree/arch/riscv/Makefile?h=v6.12/base
39
40Baremetal
41---------
42AMD Microblaze-V FPGA support uses the following static configurations:
43Base: rv32e, rv32i, rv64i
44Extensions: m, a, f, d, c, b, zicsr, zifencei
45
46Zephyr
47------
48AMD Microblaze-V development for Zephyr is the same as Baremetal, with a
49few additional extensions: zbc, zicbom
50
51ABI
52---
53The following ABIs are supported GNU tools and some combination of systems.
54* ilp32 - Integer, long and pointer are 32-bit
55* lp64 - Long and pointer are 64-bit (integer is 32-bit)
56
57The ABI is dependent upon the core system implementation, as ilp32 can
58only used on an ‘rv32’ system, while lp64 can only be used on an ‘rv64’
59system.
60
61There are additional variations of each ABI:
62* e - used with the Reduced register extension
63* f - used when single precision floating point (but not double precision) is
64 enabled
65* d - used when both single and double precision floating point is enabled
66
67Based on the above, the ABI should be automatically determined based on
68the selected Base ISA and Extensions.
69
70Implementation
71--------------
72To make it easier to generate the RISC-V canonical arch, ISA based -march,
73and the ABI string, a few new variables are added for specific RISC-V items.
74
75TUNE_RISCV_ARCH - This contains the canonical GNU style arch, generally this
76 will evaluate to "riscv32" or "riscv64".
77
78TUNE_RISCV_MARCH - This will contain an ISA based -march string compatible
79 with gcc and similar toolchains. For example:
80 rv32imacfd_zicsr_zifencei
81
82TUNE_RISCV_ABI - This is the generated ABI that corresponds to the ARCH and
83 MARCH/ISA values. For riscv32, the value will be ilp32
84 (int, long and pointer is 32-bit) with the ISA
85 variation. For riscv64, the value will be lp64 (long
86 and pointer are 64-bit bit, while int is 32-bit) with the
87 ISA variation. The ISA affects the ABI when the 'e', 'f'
88 and 'd' extension are used.
89
90TUNE_RISCV_PKGARCH - This is the generated PKGARCH value.
91
92The standard variables are defined as:
93
94TUNE_CCARGS = "${@ '-march=${TUNE_RISCV_MARCH} -mabi=${TUNE_RISCV_ABI}' if not d.getVar('TUNE_CCARGS:tune-${DEFAULTTUNE}') else 'TUNE_CCARGS:tune-${DEFAULTTUNE}'}"
95
96The above will allow the user to specify an implementation specific
97TUNE_CCARGS for a given processor tune if the default implementtion is
98not adequate for some reason. It is expected that most, if not all,
99implementations will use the default behavior.
100
101TUNE_ARCH = "${TUNE_RISCV_ARCH}"
102TUNE_PKGARCH = "${TUNE_RISCV_PKGARCH}"
103
104The above two will always base their setting off the standard TUNE_FEATURES.
105
106Ratified and draft extensions should be implemented as TUNE_FEATURES in
107the arch-riscv.inc file.
108
109Vendor specific extensions and processor specific settings should go
110into a 'tune-<vendor>.inc' file, with tune-riscv.inc being reserved for
111general purpose tunes.
112
113TUNE_FEATURE Helper
114-------------------
115A special helper function has been written that will convert RISC-V ISA
116notation into TUNE_FEATURE notion, for example:
117
118rv32g -> rv 32 i m a f d zicsr zifencei
119
120The helper can be called using oe.tune.riscv_isa_to_tune("<ISA>") such as
121oe.tune.riscv_isa_to_tune("rv64gc") which would return:
122 rv 64 i m a f d c zicsr zifencei
diff --git a/meta/conf/machine/include/riscv/arch-riscv.inc b/meta/conf/machine/include/riscv/arch-riscv.inc
index b34064e78f..99bed8fde5 100644
--- a/meta/conf/machine/include/riscv/arch-riscv.inc
+++ b/meta/conf/machine/include/riscv/arch-riscv.inc
@@ -1,14 +1,140 @@
1# RISCV Architecture definition 1# RISCV Architecture definition
2 2
3DEFAULTTUNE ?= "riscv64" 3# Based on the RISC-V Instruction Set Manual Volume I: Unprivileged ISA from May 2025
4# As well as the RISC-V options for using GCC (as of June 2025)
4 5
5TUNE_ARCH = "${TUNE_ARCH:tune-${DEFAULTTUNE}}" 6# Note: the following should be implemented in the order that GCC expects
6TUNE_PKGARCH = "${TUNE_PKGARCH:tune-${DEFAULTTUNE}}" 7# -march= values to be defined in.
7TUNE_CCARGS:append = "${@bb.utils.contains('TUNE_FEATURES', 'riscv64nf', ' -mabi=lp64', ' ', d)}"
8TUNE_CCARGS:append = "${@bb.utils.contains('TUNE_FEATURES', 'riscv32nf', ' -mabi=ilp32', ' ', d)}"
9 8
10TUNE_CCARGS:append = "${@bb.utils.contains('TUNE_FEATURES', 'riscv64nc', ' -march=rv64imafd', ' ', d)}" 9# Base ISA
10# All supported march strings must start with rv32 or rv64
11TUNEVALID[rv] = "RISC-V"
12TUNE_RISCV_ARCH = "${@bb.utils.contains("TUNE_FEATURES", "rv", "riscv", "", d)}"
13TUNE_RISCV_MARCH = "${@bb.utils.contains("TUNE_FEATURES", "rv", "rv", "", d)}"
14TUNE_RISCV_ABI = ""
11 15
16# There are two primary ABIs, ilp32 and lp64
17# There are variants of both, that appears to be based on extensions above
18# For example:
19# rv32i uses ilp32, rv32e uses ilp32e, rv32f uses ilp32f
20# rv64i uses lp64, rv64if uses lp64f, rv64id uses lp64d
21TUNEVALID[32] = "ISA XLEN - 32-bit"
22TUNECONFLICTS[32] = "64"
23TUNE_RISCV_ARCH .= "${@bb.utils.contains("TUNE_FEATURES", "32", "32", "", d)}"
24TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "32", "32", "", d)}"
25TUNE_RISCV_ABI .= "${@bb.utils.contains("TUNE_FEATURES", "32", "ilp32", "", d)}"
26
27TUNEVALID[64] = "ISA XLEN - 64-bit"
28TUNECONFLICTS[64] = "32"
29TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "64", "64", "", d)}"
30TUNE_RISCV_ARCH .= "${@bb.utils.contains("TUNE_FEATURES", "64", "64", "", d)}"
31TUNE_RISCV_ABI .= "${@bb.utils.contains("TUNE_FEATURES", "64", "lp64", "", d)}"
32
33# The package arch starts with the canonical arch, but adds some extensions to make
34# package compatibility clear
35TUNE_RISCV_PKGARCH = "${TUNE_RISCV_ARCH}"
36
37# i, e, or g are defined by gcc, but 'g' refers to 'i' + extensions 'MAFD Zicsr Zifencei'
38# So 'g' will not be defined here as it is an abbreviation of the expanded version
39TUNEVALID[e] = "Reduced register base integer extension"
40TUNECONFLICTS[e] = "i"
41TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "e", "e", "", d)}"
42TUNE_RISCV_ABI .= "${@bb.utils.contains("TUNE_FEATURES", "e", "e", "", d)}"
43TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "e", "e", "", d)}"
44
45TUNEVALID[i] = "Base integer extension"
46TUNECONFLICTS[i] = "e"
47TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "i", "i", "", d)}"
48TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "i", "i", "", d)}"
49
50# Extensions
51TUNEVALID[m] = "Integer multiplication and division extension"
52TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "m", "m", "", d)}"
53TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "m", "m", "", d)}"
54
55TUNEVALID[a] = "Atomic extension"
56TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "a", "a", "", d)}"
57TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "a", "a", "", d)}"
58
59TUNEVALID[f] = "Single-precision floating-point extension"
60TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "f d", "f", "", d)}"
61TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "f d", "f", "", d)}"
62
63TUNEVALID[d] = "Double-precision floating-point extension"
64TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "d", "d", "", d)}"
65TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "d", "d", "", d)}"
66
67# Only f OR d, but just one
68TUNE_RISCV_ABI .= "${@bb.utils.contains("TUNE_FEATURES", "d", "d", bb.utils.contains("TUNE_FEATURES", "f", "f", "", d), d)}"
69
70TUNEVALID[c] = "Compressed extension"
71TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "c", "c", "", d)}"
72TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "c", "c", "", d)}"
73
74TUNEVALID[b] = "Bit Manipulation extension"
75# Handled below via zba, zbb, zbs
76# This matches current Linux kernel behavior
77#TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "b", "b", "", d)}"
78#TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "b", "b", "", d)}"
79
80TUNEVALID[v] = "Vector operations extension"
81TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "v", "v", "", d)}"
82TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "v", "v", "", d)}"
83
84# Now the special Z extensions
85TUNEVALID[zicbom] = "Cache-block management extension"
86TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicbom", "_zicbom", "", d)}"
87TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicbom", "_zicbom", "", d)}"
88
89TUNEVALID[zicsr] = "Control and status register access extension"
90TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicsr f d", "_zicsr", "", d)}"
91# If zicsr (or zifencei) is in the path, OpenSBI fails to use the extensions, do to (Makefile):
92# # Check whether the assembler and the compiler support the Zicsr and Zifencei extensions
93# CC_SUPPORT_ZICSR_ZIFENCEI := $(shell $(CC) $(CLANG_TARGET) $(RELAX_FLAG) -nostdlib -march=rv$(OPENSBI_CC_XLEN)imafd_zicsr_zifencei -x c /dev/null -o /dev/null 2>&1 | grep -e "zicsr" -e "zifencei" > /dev/null && echo n || echo y)
94# this will match on the path containing zicsr or zifencei when an error is reported, which
95# will always happens in this check.
96#
97# Yocto Project Bugzilla 15897
98#
99#TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicsr f d", "_zicsr", "", d)}"
100
101TUNEVALID[zifencei] = "Instruction-fetch fence extension"
102TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zifencei", "_zifencei", "", d)}"
103# See above Bug 15897
104#TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zifencei", "_zifencei", "", d)}"
105
106TUNEVALID[zba] = "Address bit manipulation extension"
107TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zba", "_zba", "", d)}"
108TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zba", "_zba", "", d)}"
109
110TUNEVALID[zbb] = "Basic bit manipulation extension"
111TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zbb", "_zbb", "", d)}"
112TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zbb", "_zbb", "", d)}"
113
114TUNEVALID[zbc] = "Carry-less multiplication extension"
115TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zbc", "_zbc", "", d)}"
116TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zbc", "_zbc", "", d)}"
117
118TUNEVALID[zbs] = "Single-bit manipulation extension"
119TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zbs", "_zbs", "", d)}"
120TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zbs", "_zbs", "", d)}"
121
122# Construct TUNE_CCARGS
123# This should result in a CCARG similar to:
124# -march=rv32imac -mabi=ilp32
125TUNE_CCARGS = "${@ '-march=${TUNE_RISCV_MARCH} -mabi=${TUNE_RISCV_ABI}' if not d.getVar('TUNE_CCARGS:tune-${DEFAULTTUNE}') else 'TUNE_CCARGS:tune-${DEFAULTTUNE}'}"
126
127# Construct TUNE_ARCH
128# This should result in an arch string similar to:
129# riscv32
130TUNE_ARCH = "${TUNE_RISCV_ARCH}"
131
132# Construct TUNE_PKGARCH
133# This should result in a package are like:
134# riscv32imac
135TUNE_PKGARCH = "${TUNE_RISCV_PKGARCH}"
136
137# Misc settings
12# Fix: ld: unrecognized option '--hash-style=sysv' 138# Fix: ld: unrecognized option '--hash-style=sysv'
13LINKER_HASH_STYLE:libc-newlib = "" 139LINKER_HASH_STYLE:libc-newlib = ""
14LINKER_HASH_STYLE:libc-picolibc = "" 140LINKER_HASH_STYLE:libc-picolibc = ""
diff --git a/meta/conf/machine/include/riscv/tune-riscv.inc b/meta/conf/machine/include/riscv/tune-riscv.inc
index 804712077e..12c1125c8b 100644
--- a/meta/conf/machine/include/riscv/tune-riscv.inc
+++ b/meta/conf/machine/include/riscv/tune-riscv.inc
@@ -1,41 +1,23 @@
1require conf/machine/include/riscv/arch-riscv.inc 1require conf/machine/include/riscv/arch-riscv.inc
2 2
3TUNEVALID[riscv64] = "Enable 64-bit RISC-V optimizations" 3DEFAULTTUNE ?= "riscv64"
4TUNEVALID[riscv32] = "Enable 32-bit RISC-V optimizations"
5
6TUNEVALID[riscv64nf] = "Enable 64-bit RISC-V optimizations no floating point"
7TUNEVALID[riscv32nf] = "Enable 32-bit RISC-V optimizations no floating point"
8
9TUNEVALID[riscv64nc] = "Enable 64-bit RISC-V optimizations without compressed instructions"
10
11TUNEVALID[bigendian] = "Big endian mode"
12 4
13AVAILTUNES += "riscv64 riscv32 riscv64nc riscv64nf riscv32nf" 5AVAILTUNES += "riscv64 riscv32 riscv64nc riscv64nf riscv32nf"
14 6
15# Default 7# Default
16TUNE_FEATURES:tune-riscv64 = "riscv64" 8TUNE_FEATURES:tune-riscv64 := "${@oe.tune.riscv_isa_to_tune("rv64gc")}"
17TUNE_ARCH:tune-riscv64 = "riscv64" 9PACKAGE_EXTRA_ARCHS:tune-riscv64 = "${TUNE_RISCV_PKGARCH}"
18TUNE_PKGARCH:tune-riscv64 = "riscv64"
19PACKAGE_EXTRA_ARCHS:tune-riscv64 = "riscv64"
20 10
21TUNE_FEATURES:tune-riscv32 = "riscv32" 11TUNE_FEATURES:tune-riscv32 := "${@oe.tune.riscv_isa_to_tune("rv32gc")}"
22TUNE_ARCH:tune-riscv32 = "riscv32" 12PACKAGE_EXTRA_ARCHS:tune-riscv32 = "${TUNE_RISCV_PKGARCH}"
23TUNE_PKGARCH:tune-riscv32 = "riscv32"
24PACKAGE_EXTRA_ARCHS:tune-riscv32 = "riscv32"
25 13
26# No float 14# No float
27TUNE_FEATURES:tune-riscv64nf = "${TUNE_FEATURES:tune-riscv64} riscv64nf" 15TUNE_FEATURES:tune-riscv64nf := "${@oe.tune.riscv_isa_to_tune("rv64imac_zicsr_zifencei")}"
28TUNE_ARCH:tune-riscv64nf = "riscv64" 16PACKAGE_EXTRA_ARCHS:tune-riscv64nf = "${TUNE_RISCV_PKGARCH}"
29TUNE_PKGARCH:tune-riscv64nf = "riscv64nf"
30PACKAGE_EXTRA_ARCHS:tune-riscv64nf = "riscv64nf"
31 17
32TUNE_FEATURES:tune-riscv32nf = "${TUNE_FEATURES:tune-riscv32} riscv32nf" 18TUNE_FEATURES:tune-riscv32nf := "${@oe.tune.riscv_isa_to_tune("rv32imac_zicsr_zifencei")}"
33TUNE_ARCH:tune-riscv32nf = "riscv32" 19PACKAGE_EXTRA_ARCHS:tune-riscv32nf = "${TUNE_RISCV_PKGARCH}"
34TUNE_PKGARCH:tune-riscv32nf = "riscv32nf"
35PACKAGE_EXTRA_ARCHS:tune-riscv32nf = "riscv32nf"
36 20
37# no compressed 21# no compressed
38TUNE_FEATURES:tune-riscv64nc = "${TUNE_FEATURES:tune-riscv64} riscv64nc" 22TUNE_FEATURES:tune-riscv64nc := "${@oe.tune.riscv_isa_to_tune("rv64imafd_zicsr_zifencei")}"
39TUNE_ARCH:tune-riscv64nc = "riscv64" 23PACKAGE_EXTRA_ARCHS:tune-riscv64nc = "${TUNE_RISCV_PKGARCH}"
40TUNE_PKGARCH:tune-riscv64nc = "riscv64nc"
41PACKAGE_EXTRA_ARCHS:tune-riscv64nc = "riscv64nc"
diff --git a/meta/conf/machine/qemuriscv32.conf b/meta/conf/machine/qemuriscv32.conf
index d3858dc051..aff36c28a5 100644
--- a/meta/conf/machine/qemuriscv32.conf
+++ b/meta/conf/machine/qemuriscv32.conf
@@ -2,9 +2,9 @@
2#@NAME: generic riscv32 machine 2#@NAME: generic riscv32 machine
3#@DESCRIPTION: Machine configuration for running a generic riscv32 3#@DESCRIPTION: Machine configuration for running a generic riscv32
4 4
5require conf/machine/include/riscv/qemuriscv.inc 5DEFAULTTUNE ?= "riscv32"
6 6
7DEFAULTTUNE = "riscv32" 7require conf/machine/include/riscv/qemuriscv.inc
8 8
9PREFERRED_VERSION_openocd-native = "riscv" 9PREFERRED_VERSION_openocd-native = "riscv"
10PREFERRED_VERSION_openocd = "riscv" 10PREFERRED_VERSION_openocd = "riscv"
diff --git a/meta/conf/machine/qemux86-64.conf b/meta/conf/machine/qemux86-64.conf
index 4a9c6d364b..62108b703b 100644
--- a/meta/conf/machine/qemux86-64.conf
+++ b/meta/conf/machine/qemux86-64.conf
@@ -2,12 +2,6 @@
2#@NAME: QEMU x86-64 machine 2#@NAME: QEMU x86-64 machine
3#@DESCRIPTION: Machine configuration for running an x86-64 system on QEMU 3#@DESCRIPTION: Machine configuration for running an x86-64 system on QEMU
4 4
5PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
6PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
7PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa"
8PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa"
9PREFERRED_PROVIDER_virtual/libgles3 ?= "mesa"
10
11require conf/machine/include/qemu.inc 5require conf/machine/include/qemu.inc
12DEFAULTTUNE ?= "core2-64" 6DEFAULTTUNE ?= "core2-64"
13require conf/machine/include/x86/tune-x86-64-v3.inc 7require conf/machine/include/x86/tune-x86-64-v3.inc
diff --git a/meta/conf/machine/qemux86.conf b/meta/conf/machine/qemux86.conf
index 1e072e1ae2..51f080bd2a 100644
--- a/meta/conf/machine/qemux86.conf
+++ b/meta/conf/machine/qemux86.conf
@@ -2,12 +2,6 @@
2#@NAME: QEMU x86 machine 2#@NAME: QEMU x86 machine
3#@DESCRIPTION: Machine configuration for running an x86 system on QEMU 3#@DESCRIPTION: Machine configuration for running an x86 system on QEMU
4 4
5PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
6PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
7PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa"
8PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa"
9PREFERRED_PROVIDER_virtual/libgles3 ?= "mesa"
10
11require conf/machine/include/qemu.inc 5require conf/machine/include/qemu.inc
12DEFAULTTUNE ?= "core2-32" 6DEFAULTTUNE ?= "core2-32"
13require conf/machine/include/x86/tune-corei7.inc 7require conf/machine/include/x86/tune-corei7.inc