linux/arch/powerpc/net
Sandipan Das 8484ce8306 bpf: powerpc64: add JIT support for multi-function programs
This adds support for bpf-to-bpf function calls in the powerpc64
JIT compiler. The JIT compiler converts the bpf call instructions
to native branch instructions. After a round of the usual passes,
the start addresses of the JITed images for the callee functions
are known. Finally, to fixup the branch target addresses, we need
to perform an extra pass.

Because of the address range in which JITed images are allocated
on powerpc64, the offsets of the start addresses of these images
from __bpf_call_base are as large as 64 bits. So, for a function
call, we cannot use the imm field of the instruction to determine
the callee's address. Instead, we use the alternative method of
getting it from the list of function addresses in the auxiliary
data of the caller by using the off field as an index.

Signed-off-by: Sandipan Das <sandipan@linux.vnet.ibm.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2018-05-24 09:20:49 +02:00
..
bpf_jit32.h powerpc/bpf/jit: Isolate classic BPF JIT specifics into a separate header 2016-06-24 15:15:51 +10:00
bpf_jit64.h bpf, ppc64: remove ld_abs/ld_ind 2018-05-03 16:49:20 -07:00
bpf_jit_asm.S powerpc/bpf/jit: Isolate classic BPF JIT specifics into a separate header 2016-06-24 15:15:51 +10:00
bpf_jit_comp64.c bpf: powerpc64: add JIT support for multi-function programs 2018-05-24 09:20:49 +02:00
bpf_jit_comp.c powerpc/bpf/jit: Fix 32-bit JIT for seccomp_data access 2018-02-22 14:36:08 +11:00
bpf_jit.h bpf, ppc64: implement jiting of BPF_J{LT, LE, SLT, SLE} 2017-08-09 16:53:57 -07:00
Makefile bpf, ppc64: remove ld_abs/ld_ind 2018-05-03 16:49:20 -07:00