ARM: 7259/3: net: JIT compiler for packet filters
authorMircea Gherzan <mgherzan@gmail.com>
Fri, 16 Mar 2012 12:37:12 +0000 (13:37 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 24 Mar 2012 09:38:56 +0000 (09:38 +0000)
commitddecdfcea0ae891f782ae853771c867ab51024c2
treebf344a86217258b88425834ef513585d71f58861
parent09f05d8529ff4aa92311c1a55ce35ac98cb59b8c
ARM: 7259/3: net: JIT compiler for packet filters

Based of Matt Evans's PPC64 implementation.

The compiler generates ARM instructions but interworking is
supported for Thumb2 kernels.

Supports both little and big endian. Unaligned loads are emitted
for ARMv6+. Not all the BPF opcodes that deal with ancillary data
are supported. The scratch memory of the filter lives on the stack.
Hardware integer division is used if it is available.

Enabled in the same way as for x86-64 and PPC64:

echo 1 > /proc/sys/net/core/bpf_jit_enable

A value greater than 1 enables opcode output.

Signed-off-by: Mircea Gherzan <mgherzan@gmail.com>
Acked-by: David S. Miller <davem@davemloft.net>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/net/Makefile [new file with mode: 0644]
arch/arm/net/bpf_jit_32.c [new file with mode: 0644]
arch/arm/net/bpf_jit_32.h [new file with mode: 0644]