aboutsummaryrefslogtreecommitdiffstats
path: root/arch/riscv/Kconfig
diff options
context:
space:
mode:
authorAndrew Jones <ajones@ventanamicro.com>2022-10-02 10:18:07 +0530
committerAnup Patel <anup@brainfault.org>2022-10-02 10:18:07 +0530
commit5ac43ab2e3fe4e5d48ef313a99d0591021c3bbdd (patch)
tree2f60be52b44fa92bd6ed4a4123a0043e461a2447 /arch/riscv/Kconfig
parentriscv: Add X register names to gpr-nums (diff)
downloadlinux-dev-5ac43ab2e3fe4e5d48ef313a99d0591021c3bbdd.tar.xz
linux-dev-5ac43ab2e3fe4e5d48ef313a99d0591021c3bbdd.zip
riscv: Introduce support for defining instructions
When compiling with toolchains that haven't yet been taught about new instructions we need to encode them ourselves. Create a new file where support for instruction definitions will evolve. We initiate the file with a macro called INSN_R(), which implements the R-type instruction encoding. INSN_R() will use the assembler's .insn directive when available, which should give the assembler a chance to do some validation. When .insn is not available we fall back to manual encoding. Not only should using instruction encoding macros improve readability and maintainability of code over the alternative of inserting instructions directly (e.g. '.word 0xc0de'), but we should also gain potential for more optimized code after compilation because the compiler will have control over the input and output registers used. Signed-off-by: Andrew Jones <ajones@ventanamicro.com> Reviewed-by: Anup Patel <anup@brainfault.org> Signed-off-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'arch/riscv/Kconfig')
-rw-r--r--arch/riscv/Kconfig3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 59d18881f35b..d6b0ffd9bf00 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -227,6 +227,9 @@ config RISCV_DMA_NONCOHERENT
select ARCH_HAS_SETUP_DMA_OPS
select DMA_DIRECT_REMAP
+config AS_HAS_INSN
+ def_bool $(as-instr,.insn r 51$(comma) 0$(comma) 0$(comma) t0$(comma) t0$(comma) zero)
+
source "arch/riscv/Kconfig.socs"
source "arch/riscv/Kconfig.erratas"