mirror of https://gitee.com/openkylin/linux.git
nfp: bpf: relax source operands check
The NFP normally requires the source operands to be difference addressing modes, but we should rule out the very special NN_REG_NONE type. There are instruction that ignores both A/B operands, for example: local_csr_rd For these instructions, we might pass the same operand type, NN_REG_NONE, for both A/B operands. NOTE: in current NFP ISA, it is only possible for instructions with unrestricted operands to take none operands, but in case there is new and similar instructoin in restricted form, they would follow similar rules, so swreg_to_restricted is updated as well. Signed-off-by: Jiong Wang <jiong.wang@netronome.com> Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
parent
29fe46efba
commit
08859f159e
|
@ -120,7 +120,8 @@ int swreg_to_unrestricted(swreg dst, swreg lreg, swreg rreg,
|
|||
reg->dst = nfp_swreg_to_unreg(dst, true);
|
||||
|
||||
/* Decode source operands */
|
||||
if (swreg_type(lreg) == swreg_type(rreg))
|
||||
if (swreg_type(lreg) == swreg_type(rreg) &&
|
||||
swreg_type(lreg) != NN_REG_NONE)
|
||||
return -EFAULT;
|
||||
|
||||
if (swreg_type(lreg) == NN_REG_GPR_B ||
|
||||
|
@ -200,7 +201,8 @@ int swreg_to_restricted(swreg dst, swreg lreg, swreg rreg,
|
|||
reg->dst = nfp_swreg_to_rereg(dst, true, false, NULL);
|
||||
|
||||
/* Decode source operands */
|
||||
if (swreg_type(lreg) == swreg_type(rreg))
|
||||
if (swreg_type(lreg) == swreg_type(rreg) &&
|
||||
swreg_type(lreg) != NN_REG_NONE)
|
||||
return -EFAULT;
|
||||
|
||||
if (swreg_type(lreg) == NN_REG_GPR_B ||
|
||||
|
|
Loading…
Reference in New Issue