@@ -570,24 +570,30 @@ config TOOLCHAIN_HAS_ZIHINTPAUSE
570
570
config TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI
571
571
def_bool y
572
572
# https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=aed44286efa8ae8717a77d94b51ac3614e2ca6dc
573
- depends on AS_IS_GNU && AS_VERSION >= 23800
574
- help
575
- Newer binutils versions default to ISA spec version 20191213 which
576
- moves some instructions from the I extension to the Zicsr and Zifencei
577
- extensions.
573
+ # https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=98416dbb0a62579d4a7a4a76bab51b5b52fec2cd
574
+ depends on AS_IS_GNU && AS_VERSION >= 23600
575
+ help
576
+ Binutils-2.38 and GCC-12.1.0 bumped the default ISA spec to the newer
577
+ 20191213 version, which moves some instructions from the I extension to
578
+ the Zicsr and Zifencei extensions. This requires explicitly specifying
579
+ Zicsr and Zifencei when binutils >= 2.38 or GCC >= 12.1.0. Zicsr
580
+ and Zifencei are supported in binutils from version 2.36 onwards.
581
+ To make life easier, and avoid forcing toolchains that default to a
582
+ newer ISA spec to version 2.2, relax the check to binutils >= 2.36.
583
+ For clang < 17 or GCC < 11.1.0, for which this is not possible, this is
584
+ dealt with in CONFIG_TOOLCHAIN_NEEDS_OLD_ISA_SPEC.
578
585
579
586
config TOOLCHAIN_NEEDS_OLD_ISA_SPEC
580
587
def_bool y
581
588
depends on TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI
582
589
# https://github.com/llvm/llvm-project/commit/22e199e6afb1263c943c0c0d4498694e15bf8a16
583
- depends on CC_IS_CLANG && CLANG_VERSION < 170000
584
- help
585
- Certain versions of clang do not support zicsr and zifencei via -march
586
- but newer versions of binutils require it for the reasons noted in the
587
- help text of CONFIG_TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI. This
588
- option causes an older ISA spec compatible with these older versions
589
- of clang to be passed to GAS, which has the same result as passing zicsr
590
- and zifencei to -march.
590
+ # https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=b03be74bad08c382da47e048007a78fa3fb4ef49
591
+ depends on (CC_IS_CLANG && CLANG_VERSION < 170000) || (CC_IS_GCC && GCC_VERSION < 110100)
592
+ help
593
+ Certain versions of clang and GCC do not support zicsr and zifencei via
594
+ -march. This option causes an older ISA spec compatible with these older
595
+ versions of clang and GCC to be passed to GAS, which has the same result
596
+ as passing zicsr and zifencei to -march.
591
597
592
598
config FPU
593
599
bool "FPU support"
0 commit comments