From: Alexei Starovoitov Date: Tue, 23 Sep 2014 21:36:11 +0000 (-0700) Subject: sparc: bpf_jit: add support for BPF_LD(X) | BPF_LEN instructions X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=cec08315190a4461a369d47041a510d104a5d2a2;p=openwrt%2Fstaging%2Fblogic.git sparc: bpf_jit: add support for BPF_LD(X) | BPF_LEN instructions BPF_LD | BPF_W | BPF_LEN instruction is occasionally used by tcpdump and present in 11 tests in lib/test_bpf.c Teach sparc JIT compiler to emit it. Signed-off-by: Alexei Starovoitov Signed-off-by: David S. Miller --- diff --git a/arch/sparc/net/bpf_jit_comp.c b/arch/sparc/net/bpf_jit_comp.c index c1c60c32f6dd..f33e7c7a3bf7 100644 --- a/arch/sparc/net/bpf_jit_comp.c +++ b/arch/sparc/net/bpf_jit_comp.c @@ -624,7 +624,12 @@ void bpf_jit_compile(struct bpf_prog *fp) emit_and(r_A, r_TMP, r_A); } break; - + case BPF_LD | BPF_W | BPF_LEN: + emit_skb_load32(len, r_A); + break; + case BPF_LDX | BPF_W | BPF_LEN: + emit_skb_load32(len, r_X); + break; case BPF_LD | BPF_IMM: emit_loadimm(K, r_A); break;