]> Git Repo - linux.git/commitdiff
riscv: detect assembler support for .option arch
authorAndy Chiu <[email protected]>
Mon, 5 Jun 2023 11:07:20 +0000 (11:07 +0000)
committerPalmer Dabbelt <[email protected]>
Thu, 8 Jun 2023 14:16:55 +0000 (07:16 -0700)
Some extensions use .option arch directive to selectively enable certain
extensions in parts of its assembly code. For example, Zbb uses it to
inform assmebler to emit bit manipulation instructions. However,
supporting of this directive only exist on GNU assembler and has not
landed on clang at the moment, making TOOLCHAIN_HAS_ZBB depend on
AS_IS_GNU.

While it is still under review at https://reviews.llvm.org/D123515, the
upcoming Vector patch also requires this feature in assembler. Thus,
provide Kconfig AS_HAS_OPTION_ARCH to detect such feature. Then
TOOLCHAIN_HAS_XXX will be turned on automatically when the feature land.

Suggested-by: Nathan Chancellor <[email protected]>
Signed-off-by: Andy Chiu <[email protected]>
Reviewed-by: Conor Dooley <[email protected]>
Reviewed-by: Nathan Chancellor <[email protected]>
Reviewed-by: Heiko Stuebner <[email protected]>
Tested-by: Heiko Stuebner <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Palmer Dabbelt <[email protected]>
arch/riscv/Kconfig

index 348c0fa1fc8c7a8479c42c70bdede50a8a3c5126..1019b519d590ef34ff4c7b0f84b094376a9a0a40 100644 (file)
@@ -262,6 +262,12 @@ config RISCV_DMA_NONCOHERENT
 config AS_HAS_INSN
        def_bool $(as-instr,.insn r 51$(comma) 0$(comma) 0$(comma) t0$(comma) t0$(comma) zero)
 
+config AS_HAS_OPTION_ARCH
+       # https://reviews.llvm.org/D123515
+       def_bool y
+       depends on $(as-instr, .option arch$(comma) +m)
+       depends on !$(as-instr, .option arch$(comma) -i)
+
 source "arch/riscv/Kconfig.socs"
 source "arch/riscv/Kconfig.errata"
 
@@ -466,7 +472,7 @@ config TOOLCHAIN_HAS_ZBB
        depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zbb)
        depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbb)
        depends on LLD_VERSION >= 150000 || LD_VERSION >= 23900
-       depends on AS_IS_GNU
+       depends on AS_HAS_OPTION_ARCH
 
 config RISCV_ISA_ZBB
        bool "Zbb extension support for bit manipulation instructions"
This page took 0.062064 seconds and 4 git commands to generate.