riscv: correct riscv_insn_is_c_jr() and riscv_insn_is_c_jalr()
authorNam Cao <namcaov@gmail.com>
Mon, 31 Jul 2023 18:39:25 +0000 (20:39 +0200)
committerPalmer Dabbelt <palmer@rivosinc.com>
Wed, 16 Aug 2023 14:23:09 +0000 (07:23 -0700)
commit79bc3f85c51fc352f8e684ba6b626f677a3aa230
tree401aa8cacb495c890a320893569b96468530afe9
parent52449c17bdd1540940e21511612b58acebc49c06
riscv: correct riscv_insn_is_c_jr() and riscv_insn_is_c_jalr()

The instructions c.jr and c.jalr must have rs1 != 0, but
riscv_insn_is_c_jr() and riscv_insn_is_c_jalr() do not check for this. So,
riscv_insn_is_c_jr() can match a reserved encoding, while
riscv_insn_is_c_jalr() can match the c.ebreak instruction.

Rewrite them with check for rs1 != 0.

Signed-off-by: Nam Cao <namcaov@gmail.com>
Reviewed-by: Charlie Jenkins <charlie@rivosinc.com>
Fixes: ec5f90877516 ("RISC-V: Move riscv_insn_is_* macros into a common header")
Link: https://lore.kernel.org/r/20230731183925.152145-1-namcaov@gmail.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/include/asm/insn.h