aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/netronome/nfp/nfp_asm.c
diff options
context:
space:
mode:
authorJakub Kicinski <jakub.kicinski@netronome.com>2017-10-08 21:04:12 -0700
committerDavid S. Miller <davem@davemloft.net>2017-10-09 09:51:03 -0700
commit995e101ffa71eff6ae5f5d5bf1ca8ec757b4ed21 (patch)
tree5d6f71a7fc6b801139b763cf3c75b6adc50da344 /drivers/net/ethernet/netronome/nfp/nfp_asm.c
parentnfp: bpf: encode LMEM accesses (diff)
downloadlinux-dev-995e101ffa71eff6ae5f5d5bf1ca8ec757b4ed21.tar.xz
linux-dev-995e101ffa71eff6ae5f5d5bf1ca8ec757b4ed21.zip
nfp: bpf: encode extended LM pointer operands
Most instructions have special fields which allow switching between base and extended Local Memory pointers. Introduce those to register encoding, we will use the extra LM pointers to access high addresses of the stack. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Simon Horman <simon.horman@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/netronome/nfp/nfp_asm.c')
-rw-r--r--drivers/net/ethernet/netronome/nfp/nfp_asm.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_asm.c b/drivers/net/ethernet/netronome/nfp/nfp_asm.c
index 4bcab43da16d..1decc638ea6f 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_asm.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_asm.c
@@ -130,6 +130,9 @@ int swreg_to_unrestricted(swreg dst, swreg lreg, swreg rreg,
reg->breg = nfp_swreg_to_unreg(rreg, false);
}
+ reg->dst_lmextn = swreg_lmextn(dst);
+ reg->src_lmextn = swreg_lmextn(lreg) | swreg_lmextn(rreg);
+
return 0;
}
@@ -207,5 +210,8 @@ int swreg_to_restricted(swreg dst, swreg lreg, swreg rreg,
reg->breg = nfp_swreg_to_rereg(rreg, false, has_imm8, &reg->i8);
}
+ reg->dst_lmextn = swreg_lmextn(dst);
+ reg->src_lmextn = swreg_lmextn(lreg) | swreg_lmextn(rreg);
+
return 0;
}