mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-07 13:57:54 -04:00
riscv: Make sure toolchain supports zba before using zba instructions
Old toolchain like gcc 8.5.0 does not support zba, so we must check that the toolchain supports this extension before using it in the kernel. Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202503281836.8pntHm6I-lkp@intel.com/ Link: https://lore.kernel.org/r/20250328115422.253670-1-alexghiti@rivosinc.com Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com>
This commit is contained in:
@@ -735,6 +735,14 @@ config TOOLCHAIN_HAS_VECTOR_CRYPTO
|
||||
def_bool $(as-instr, .option arch$(comma) +v$(comma) +zvkb)
|
||||
depends on AS_HAS_OPTION_ARCH
|
||||
|
||||
config TOOLCHAIN_HAS_ZBA
|
||||
bool
|
||||
default y
|
||||
depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zba)
|
||||
depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zba)
|
||||
depends on LLD_VERSION >= 150000 || LD_VERSION >= 23900
|
||||
depends on AS_HAS_OPTION_ARCH
|
||||
|
||||
config RISCV_ISA_ZBA
|
||||
bool "Zba extension support for bit manipulation instructions"
|
||||
default y
|
||||
|
||||
@@ -77,7 +77,8 @@
|
||||
".long 1b - .\n\t" \
|
||||
".popsection" \
|
||||
|
||||
#if defined(CONFIG_RISCV_ISA_ZBA) && defined(CONFIG_RISCV_ISA_ZBKB)
|
||||
#if defined(CONFIG_RISCV_ISA_ZBA) && defined(CONFIG_TOOLCHAIN_HAS_ZBA) \
|
||||
&& defined(CONFIG_RISCV_ISA_ZBKB)
|
||||
#define runtime_const_ptr(sym) \
|
||||
({ \
|
||||
typeof(sym) __ret, __tmp; \
|
||||
@@ -93,7 +94,7 @@
|
||||
: [__ret] "=r" (__ret), [__tmp] "=r" (__tmp)); \
|
||||
__ret; \
|
||||
})
|
||||
#elif defined(CONFIG_RISCV_ISA_ZBA)
|
||||
#elif defined(CONFIG_RISCV_ISA_ZBA) && defined(CONFIG_TOOLCHAIN_HAS_ZBA)
|
||||
#define runtime_const_ptr(sym) \
|
||||
({ \
|
||||
typeof(sym) __ret, __tmp; \
|
||||
|
||||
Reference in New Issue
Block a user