Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mips: bpf: fix encoding bug for mm_srlv32_op

For micro-mips, srlv inside POOL32A encoding space should use 0x50
sub-opcode, NOT 0x90.

Some early version ISA doc describes the encoding as 0x90 for both srlv and
srav, this looks to me was a typo. I checked Binutils libopcode
implementation which is using 0x50 for srlv and 0x90 for srav.

v1->v2:
- Keep mm_srlv32_op sorted by value.

Fixes: f31318fdf324 ("MIPS: uasm: Add srlv uasm instruction")
Cc: Markos Chandras <markos.chandras@imgtec.com>
Cc: Paul Burton <paul.burton@mips.com>
Cc: linux-mips@vger.kernel.org
Acked-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Acked-by: Song Liu <songliubraving@fb.com>
Signed-off-by: Jiong Wang <jiong.wang@netronome.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>

authored by

Jiong Wang and committed by
Alexei Starovoitov
17f6c83f a06aef4e

+1 -1
+1 -1
arch/mips/include/uapi/asm/inst.h
··· 369 369 mm_ext_op = 0x02c, 370 370 mm_pool32axf_op = 0x03c, 371 371 mm_srl32_op = 0x040, 372 + mm_srlv32_op = 0x050, 372 373 mm_sra_op = 0x080, 373 - mm_srlv32_op = 0x090, 374 374 mm_rotr_op = 0x0c0, 375 375 mm_lwxs_op = 0x118, 376 376 mm_addu32_op = 0x150,