• Nicolas Schichan's avatar
    ARM: net: support BPF_ALU | BPF_MOD instructions in the BPF JIT. · 4560cdff
    Nicolas Schichan authored
    For ARMv7 with UDIV instruction support, generate an UDIV instruction
    followed by an MLS instruction.
    
    For other ARM variants, generate code calling a C wrapper similar to
    the jit_udiv() function used for BPF_ALU | BPF_DIV instructions.
    
    Some performance numbers reported by the test_bpf module (the duration
    per filter run is reported in nanoseconds, between "jitted:<x>" and
    "PASS":
    
    ARMv7 QEMU nojit:	test_bpf: #3 DIV_MOD_KX jited:0 2196 PASS
    ARMv7 QEMU jit:		test_bpf: #3 DIV_MOD_KX jited:1 104 PASS
    ARMv5 QEMU nojit:	test_bpf: #3 DIV_MOD_KX jited:0 2176 PASS
    ARMv5 QEMU jit:		test_bpf: #3 DIV_MOD_KX jited:1 1104 PASS
    ARMv5 kirkwood nojit:	test_bpf: #3 DIV_MOD_KX jited:0 1103 PASS
    ARMv5 kirkwood jit:	test_bpf: #3 DIV_MOD_KX jited:1 311 PASS
    Signed-off-by: default avatarNicolas Schichan <nschichan@freebox.fr>
    Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    4560cdff
bpf_jit_32.c 27 KB