Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions | Variables
bpf_jit_comp.c File Reference
#include <linux/moduleloader.h>
#include <linux/workqueue.h>
#include <linux/netdevice.h>
#include <linux/filter.h>
#include <linux/cache.h>
#include <asm/cacheflush.h>
#include <asm/ptrace.h>
#include "bpf_jit.h"

Go to the source code of this file.

Macros

#define SEEN_DATAREF   1 /* might call external helpers */
 
#define SEEN_XREG   2 /* ebx is used */
 
#define SEEN_MEM   4 /* use mem[] for temporary storage */
 
#define S13(X)   ((X) & 0x1fff)
 
#define IMMED   0x00002000
 
#define RD(X)   ((X) << 25)
 
#define RS1(X)   ((X) << 14)
 
#define RS2(X)   ((X))
 
#define OP(X)   ((X) << 30)
 
#define OP2(X)   ((X) << 22)
 
#define OP3(X)   ((X) << 19)
 
#define COND(X)   ((X) << 25)
 
#define F1(X)   OP(X)
 
#define F2(X, Y)   (OP(X) | OP2(Y))
 
#define F3(X, Y)   (OP(X) | OP3(Y))
 
#define CONDN   COND(0x0)
 
#define CONDE   COND(0x1)
 
#define CONDLE   COND(0x2)
 
#define CONDL   COND(0x3)
 
#define CONDLEU   COND(0x4)
 
#define CONDCS   COND(0x5)
 
#define CONDNEG   COND(0x6)
 
#define CONDVC   COND(0x7)
 
#define CONDA   COND(0x8)
 
#define CONDNE   COND(0x9)
 
#define CONDG   COND(0xa)
 
#define CONDGE   COND(0xb)
 
#define CONDGU   COND(0xc)
 
#define CONDCC   COND(0xd)
 
#define CONDPOS   COND(0xe)
 
#define CONDVS   COND(0xf)
 
#define CONDGEU   CONDCC
 
#define CONDLU   CONDCS
 
#define WDISP22(X)   (((X) >> 2) & 0x3fffff)
 
#define BA   (F2(0, 2) | CONDA)
 
#define BGU   (F2(0, 2) | CONDGU)
 
#define BLEU   (F2(0, 2) | CONDLEU)
 
#define BGEU   (F2(0, 2) | CONDGEU)
 
#define BLU   (F2(0, 2) | CONDLU)
 
#define BE   (F2(0, 2) | CONDE)
 
#define BNE   (F2(0, 2) | CONDNE)
 
#define BNE_PTR   BNE
 
#define SETHI(K, REG)   (F2(0, 0x4) | RD(REG) | (((K) >> 10) & 0x3fffff))
 
#define OR_LO(K, REG)   (F3(2, 0x02) | IMMED | RS1(REG) | ((K) & 0x3ff) | RD(REG))
 
#define ADD   F3(2, 0x00)
 
#define AND   F3(2, 0x01)
 
#define ANDCC   F3(2, 0x11)
 
#define OR   F3(2, 0x02)
 
#define XOR   F3(2, 0x03)
 
#define SUB   F3(2, 0x04)
 
#define SUBCC   F3(2, 0x14)
 
#define MUL   F3(2, 0x0a) /* umul */
 
#define DIV   F3(2, 0x0e) /* udiv */
 
#define SLL   F3(2, 0x25)
 
#define SRL   F3(2, 0x26)
 
#define JMPL   F3(2, 0x38)
 
#define CALL   F1(1)
 
#define BR   F2(0, 0x01)
 
#define RD_Y   F3(2, 0x28)
 
#define WR_Y   F3(2, 0x30)
 
#define LD32   F3(3, 0x00)
 
#define LD8   F3(3, 0x01)
 
#define LD16   F3(3, 0x02)
 
#define LD64   F3(3, 0x0b)
 
#define ST32   F3(3, 0x04)
 
#define LDPTR   LD32
 
#define BASE_STACKFRAME   96
 
#define LD32I   (LD32 | IMMED)
 
#define LD8I   (LD8 | IMMED)
 
#define LD16I   (LD16 | IMMED)
 
#define LD64I   (LD64 | IMMED)
 
#define LDPTRI   (LDPTR | IMMED)
 
#define ST32I   (ST32 | IMMED)
 
#define emit_nop()
 
#define emit_neg()
 
#define emit_reg_move(FROM, TO)
 
#define emit_clear(REG)
 
#define emit_set_const(K, REG)
 
#define emit_alu_X(OPCODE)
 
#define emit_alu_K(OPCODE, K)
 
#define emit_loadimm(K, DEST)
 
#define emit_loadptr(BASE, STRUCT, FIELD, DEST)
 
#define emit_load32(BASE, STRUCT, FIELD, DEST)
 
#define emit_load16(BASE, STRUCT, FIELD, DEST)
 
#define __emit_load8(BASE, STRUCT, FIELD, DEST)
 
#define emit_load8(BASE, STRUCT, FIELD, DEST)
 
#define emit_ldmem(OFF, DEST)
 
#define emit_stmem(OFF, SRC)
 
#define emit_load_cpu(REG)   emit_clear(REG)
 
#define emit_skb_loadptr(FIELD, DEST)   emit_loadptr(r_SKB, struct sk_buff, FIELD, DEST)
 
#define emit_skb_load32(FIELD, DEST)   emit_load32(r_SKB, struct sk_buff, FIELD, DEST)
 
#define emit_skb_load16(FIELD, DEST)   emit_load16(r_SKB, struct sk_buff, FIELD, DEST)
 
#define __emit_skb_load8(FIELD, DEST)   __emit_load8(r_SKB, struct sk_buff, FIELD, DEST)
 
#define emit_skb_load8(FIELD, DEST)   emit_load8(r_SKB, struct sk_buff, FIELD, DEST)
 
#define emit_jmpl(BASE, IMM_OFF, LREG)   *prog++ = (JMPL | IMMED | RS1(BASE) | S13(IMM_OFF) | RD(LREG))
 
#define emit_call(FUNC)
 
#define emit_branch(BR_OPC, DEST)
 
#define emit_branch_off(BR_OPC, OFF)
 
#define emit_jump(DEST)   emit_branch(BA, DEST)
 
#define emit_read_y(REG)   *prog++ = RD_Y | RD(REG)
 
#define emit_write_y(REG)   *prog++ = WR_Y | IMMED | RS1(REG) | S13(0)
 
#define emit_cmp(R1, R2)   *prog++ = (SUBCC | RS1(R1) | RS2(R2) | RD(G0))
 
#define emit_cmpi(R1, IMM)   *prog++ = (SUBCC | IMMED | RS1(R1) | S13(IMM) | RD(G0));
 
#define emit_btst(R1, R2)   *prog++ = (ANDCC | RS1(R1) | RS2(R2) | RD(G0))
 
#define emit_btsti(R1, IMM)   *prog++ = (ANDCC | IMMED | RS1(R1) | S13(IMM) | RD(G0));
 
#define emit_sub(R1, R2, R3)   *prog++ = (SUB | RS1(R1) | RS2(R2) | RD(R3))
 
#define emit_subi(R1, IMM, R3)   *prog++ = (SUB | IMMED | RS1(R1) | S13(IMM) | RD(R3))
 
#define emit_add(R1, R2, R3)   *prog++ = (ADD | RS1(R1) | RS2(R2) | RD(R3))
 
#define emit_addi(R1, IMM, R3)   *prog++ = (ADD | IMMED | RS1(R1) | S13(IMM) | RD(R3))
 
#define emit_alloc_stack(SZ)   *prog++ = (SUB | IMMED | RS1(SP) | S13(SZ) | RD(SP))
 
#define emit_release_stack(SZ)   *prog++ = (ADD | IMMED | RS1(SP) | S13(SZ) | RD(SP))
 
#define CHOOSE_LOAD_FUNC(K, func)   ((int)K < 0 ? ((int)K >= SKF_LL_OFF ? func##_negative_offset : func) : func##_positive_offset)
 
#define COND_SEL(CODE, TOP, FOP)
 

Functions

void bpf_jit_compile (struct sk_filter *fp)
 
void bpf_jit_free (struct sk_filter *fp)
 

Variables

int bpf_jit_enable __read_mostly
 

Macro Definition Documentation

#define __emit_load8 (   BASE,
  STRUCT,
  FIELD,
  DEST 
)
Value:
do { unsigned int _off = offsetof(STRUCT, FIELD); \
*prog++ = LD8I | RS1(BASE) | S13(_off) | RD(DEST); \
} while (0)

Definition at line 226 of file bpf_jit_comp.c.

#define __emit_skb_load8 (   FIELD,
  DEST 
)    __emit_load8(r_SKB, struct sk_buff, FIELD, DEST)

Definition at line 262 of file bpf_jit_comp.c.

#define ADD   F3(2, 0x00)

Definition at line 95 of file bpf_jit_comp.c.

#define AND   F3(2, 0x01)

Definition at line 96 of file bpf_jit_comp.c.

#define ANDCC   F3(2, 0x11)

Definition at line 97 of file bpf_jit_comp.c.

#define BA   (F2(0, 2) | CONDA)

Definition at line 76 of file bpf_jit_comp.c.

#define BASE_STACKFRAME   96

Definition at line 123 of file bpf_jit_comp.c.

#define BE   (F2(0, 2) | CONDE)

Definition at line 81 of file bpf_jit_comp.c.

#define BGEU   (F2(0, 2) | CONDGEU)

Definition at line 79 of file bpf_jit_comp.c.

#define BGU   (F2(0, 2) | CONDGU)

Definition at line 77 of file bpf_jit_comp.c.

#define BLEU   (F2(0, 2) | CONDLEU)

Definition at line 78 of file bpf_jit_comp.c.

#define BLU   (F2(0, 2) | CONDLU)

Definition at line 80 of file bpf_jit_comp.c.

#define BNE   (F2(0, 2) | CONDNE)

Definition at line 82 of file bpf_jit_comp.c.

#define BNE_PTR   BNE

Definition at line 87 of file bpf_jit_comp.c.

#define BR   F2(0, 0x01)

Definition at line 108 of file bpf_jit_comp.c.

#define CALL   F1(1)

Definition at line 107 of file bpf_jit_comp.c.

#define CHOOSE_LOAD_FUNC (   K,
  func 
)    ((int)K < 0 ? ((int)K >= SKF_LL_OFF ? func##_negative_offset : func) : func##_positive_offset)
#define COND (   X)    ((X) << 25)

Definition at line 49 of file bpf_jit_comp.c.

#define COND_SEL (   CODE,
  TOP,
  FOP 
)
Value:
case CODE: \
t_op = TOP; \
f_op = FOP; \
goto cond_branch
#define CONDA   COND(0x8)

Definition at line 62 of file bpf_jit_comp.c.

#define CONDCC   COND(0xd)

Definition at line 67 of file bpf_jit_comp.c.

#define CONDCS   COND(0x5)

Definition at line 59 of file bpf_jit_comp.c.

#define CONDE   COND(0x1)

Definition at line 55 of file bpf_jit_comp.c.

#define CONDG   COND(0xa)

Definition at line 64 of file bpf_jit_comp.c.

#define CONDGE   COND(0xb)

Definition at line 65 of file bpf_jit_comp.c.

#define CONDGEU   CONDCC

Definition at line 71 of file bpf_jit_comp.c.

#define CONDGU   COND(0xc)

Definition at line 66 of file bpf_jit_comp.c.

#define CONDL   COND(0x3)

Definition at line 57 of file bpf_jit_comp.c.

#define CONDLE   COND(0x2)

Definition at line 56 of file bpf_jit_comp.c.

#define CONDLEU   COND(0x4)

Definition at line 58 of file bpf_jit_comp.c.

#define CONDLU   CONDCS

Definition at line 72 of file bpf_jit_comp.c.

#define CONDN   COND(0x0)

Definition at line 54 of file bpf_jit_comp.c.

#define CONDNE   COND(0x9)

Definition at line 63 of file bpf_jit_comp.c.

#define CONDNEG   COND(0x6)

Definition at line 60 of file bpf_jit_comp.c.

#define CONDPOS   COND(0xe)

Definition at line 68 of file bpf_jit_comp.c.

#define CONDVC   COND(0x7)

Definition at line 61 of file bpf_jit_comp.c.

#define CONDVS   COND(0xf)

Definition at line 69 of file bpf_jit_comp.c.

#define DIV   F3(2, 0x0e) /* udiv */

Definition at line 103 of file bpf_jit_comp.c.

#define emit_add (   R1,
  R2,
  R3 
)    *prog++ = (ADD | RS1(R1) | RS2(R2) | RD(R3))

Definition at line 309 of file bpf_jit_comp.c.

#define emit_addi (   R1,
  IMM,
  R3 
)    *prog++ = (ADD | IMMED | RS1(R1) | S13(IMM) | RD(R3))

Definition at line 312 of file bpf_jit_comp.c.

#define emit_alloc_stack (   SZ)    *prog++ = (SUB | IMMED | RS1(SP) | S13(SZ) | RD(SP))

Definition at line 315 of file bpf_jit_comp.c.

#define emit_alu_K (   OPCODE,
  K 
)
Value:
do { \
if (K) { \
unsigned int _insn = OPCODE; \
_insn |= RS1(r_A) | RD(r_A); \
if (is_simm13(K)) { \
*prog++ = _insn | IMMED | S13(K); \
} else { \
emit_set_const(K, r_TMP); \
*prog++ = _insn | RS2(r_TMP); \
} \
} \
} while (0)

Definition at line 184 of file bpf_jit_comp.c.

#define emit_alu_X (   OPCODE)
Value:
do { \
seen |= SEEN_XREG; \
*prog++ = OPCODE | RS1(r_A) | RS2(r_X) | RD(r_A); \
} while (0)

Definition at line 164 of file bpf_jit_comp.c.

#define emit_branch (   BR_OPC,
  DEST 
)
Value:
do { unsigned int _here = addrs[i] - 8; \
*prog++ = BR_OPC | WDISP22((DEST) - _here); \
} while (0)

Definition at line 277 of file bpf_jit_comp.c.

#define emit_branch_off (   BR_OPC,
  OFF 
)
Value:
do { *prog++ = BR_OPC | WDISP22(OFF); \
} while (0)

Definition at line 282 of file bpf_jit_comp.c.

#define emit_btst (   R1,
  R2 
)    *prog++ = (ANDCC | RS1(R1) | RS2(R2) | RD(G0))

Definition at line 297 of file bpf_jit_comp.c.

#define emit_btsti (   R1,
  IMM 
)    *prog++ = (ANDCC | IMMED | RS1(R1) | S13(IMM) | RD(G0));

Definition at line 300 of file bpf_jit_comp.c.

#define emit_call (   FUNC)
Value:
do { void *_here = image + addrs[i] - 8; \
unsigned int _off = (void *)(FUNC) - _here; \
*prog++ = CALL | (((_off) >> 2) & 0x3fffffff); \
emit_nop(); \
} while (0)

Definition at line 270 of file bpf_jit_comp.c.

#define emit_clear (   REG)
Value:
do { /* or %g0, %g0, REG */ \
*prog++ = OR | RS1(G0) | RS2(G0) | RD(REG); \
} while (0)

Definition at line 148 of file bpf_jit_comp.c.

#define emit_cmp (   R1,
  R2 
)    *prog++ = (SUBCC | RS1(R1) | RS2(R2) | RD(G0))

Definition at line 291 of file bpf_jit_comp.c.

#define emit_cmpi (   R1,
  IMM 
)    *prog++ = (SUBCC | IMMED | RS1(R1) | S13(IMM) | RD(G0));

Definition at line 294 of file bpf_jit_comp.c.

#define emit_jmpl (   BASE,
  IMM_OFF,
  LREG 
)    *prog++ = (JMPL | IMMED | RS1(BASE) | S13(IMM_OFF) | RD(LREG))

Definition at line 267 of file bpf_jit_comp.c.

#define emit_jump (   DEST)    emit_branch(BA, DEST)

Definition at line 286 of file bpf_jit_comp.c.

#define emit_ldmem (   OFF,
  DEST 
)
Value:
do { *prog++ = LD32I | RS1(FP) | S13(-(OFF)) | RD(DEST); \
} while (0)

Definition at line 236 of file bpf_jit_comp.c.

#define emit_load16 (   BASE,
  STRUCT,
  FIELD,
  DEST 
)
Value:
do { unsigned int _off = offsetof(STRUCT, FIELD); \
BUILD_BUG_ON(FIELD_SIZEOF(STRUCT, FIELD) != sizeof(u16)); \
*prog++ = LD16I | RS1(BASE) | S13(_off) | RD(DEST); \
} while (0)

Definition at line 220 of file bpf_jit_comp.c.

#define emit_load32 (   BASE,
  STRUCT,
  FIELD,
  DEST 
)
Value:
do { unsigned int _off = offsetof(STRUCT, FIELD); \
BUILD_BUG_ON(FIELD_SIZEOF(STRUCT, FIELD) != sizeof(u32)); \
*prog++ = LD32I | RS1(BASE) | S13(_off) | RD(DEST); \
} while (0)

Definition at line 214 of file bpf_jit_comp.c.

#define emit_load8 (   BASE,
  STRUCT,
  FIELD,
  DEST 
)
Value:
do { BUILD_BUG_ON(FIELD_SIZEOF(STRUCT, FIELD) != sizeof(u8)); \
__emit_load8(BASE, STRUCT, FIELD, DEST); \
} while (0)

Definition at line 231 of file bpf_jit_comp.c.

#define emit_load_cpu (   REG)    emit_clear(REG)

Definition at line 253 of file bpf_jit_comp.c.

#define emit_loadimm (   K,
  DEST 
)
Value:
do { \
if (is_simm13(K)) { \
/* or %g0, K, DEST */ \
*prog++ = OR | IMMED | RS1(G0) | S13(K) | RD(DEST); \
} else { \
emit_set_const(K, DEST); \
} \
} while (0)

Definition at line 198 of file bpf_jit_comp.c.

#define emit_loadptr (   BASE,
  STRUCT,
  FIELD,
  DEST 
)
Value:
do { unsigned int _off = offsetof(STRUCT, FIELD); \
BUILD_BUG_ON(FIELD_SIZEOF(STRUCT, FIELD) != sizeof(void *)); \
*prog++ = LDPTRI | RS1(BASE) | S13(_off) | RD(DEST); \
} while (0)

Definition at line 208 of file bpf_jit_comp.c.

#define emit_neg ( )
Value:
do { /* sub %g0, r_A, r_A */ \
*prog++ = SUB | RS1(G0) | RS2(r_A) | RD(r_A); \
} while (0)

Definition at line 138 of file bpf_jit_comp.c.

#define emit_nop ( )
Value:
do { \
*prog++ = SETHI(0, G0); \
} while (0)

Definition at line 133 of file bpf_jit_comp.c.

#define emit_read_y (   REG)    *prog++ = RD_Y | RD(REG)

Definition at line 288 of file bpf_jit_comp.c.

#define emit_reg_move (   FROM,
  TO 
)
Value:
do { /* or %g0, FROM, TO */ \
*prog++ = OR | RS1(G0) | RS2(FROM) | RD(TO); \
} while (0)

Definition at line 143 of file bpf_jit_comp.c.

#define emit_release_stack (   SZ)    *prog++ = (ADD | IMMED | RS1(SP) | S13(SZ) | RD(SP))

Definition at line 318 of file bpf_jit_comp.c.

#define emit_set_const (   K,
  REG 
)
Value:
do { /* sethi %hi(K), REG */ \
*prog++ = SETHI(K, REG); \
/* or REG, %lo(K), REG */ \
*prog++ = OR_LO(K, REG); \
} while (0)

Definition at line 153 of file bpf_jit_comp.c.

#define emit_skb_load16 (   FIELD,
  DEST 
)    emit_load16(r_SKB, struct sk_buff, FIELD, DEST)

Definition at line 260 of file bpf_jit_comp.c.

#define emit_skb_load32 (   FIELD,
  DEST 
)    emit_load32(r_SKB, struct sk_buff, FIELD, DEST)

Definition at line 258 of file bpf_jit_comp.c.

#define emit_skb_load8 (   FIELD,
  DEST 
)    emit_load8(r_SKB, struct sk_buff, FIELD, DEST)

Definition at line 264 of file bpf_jit_comp.c.

#define emit_skb_loadptr (   FIELD,
  DEST 
)    emit_loadptr(r_SKB, struct sk_buff, FIELD, DEST)

Definition at line 256 of file bpf_jit_comp.c.

#define emit_stmem (   OFF,
  SRC 
)
Value:
do { *prog++ = LD32I | RS1(FP) | S13(-(OFF)) | RD(SRC); \
} while (0)

Definition at line 240 of file bpf_jit_comp.c.

#define emit_sub (   R1,
  R2,
  R3 
)    *prog++ = (SUB | RS1(R1) | RS2(R2) | RD(R3))

Definition at line 303 of file bpf_jit_comp.c.

#define emit_subi (   R1,
  IMM,
  R3 
)    *prog++ = (SUB | IMMED | RS1(R1) | S13(IMM) | RD(R3))

Definition at line 306 of file bpf_jit_comp.c.

#define emit_write_y (   REG)    *prog++ = WR_Y | IMMED | RS1(REG) | S13(0)

Definition at line 289 of file bpf_jit_comp.c.

#define F1 (   X)    OP(X)

Definition at line 50 of file bpf_jit_comp.c.

#define F2 (   X,
 
)    (OP(X) | OP2(Y))

Definition at line 51 of file bpf_jit_comp.c.

#define F3 (   X,
 
)    (OP(X) | OP3(Y))

Definition at line 52 of file bpf_jit_comp.c.

#define IMMED   0x00002000

Definition at line 42 of file bpf_jit_comp.c.

#define JMPL   F3(2, 0x38)

Definition at line 106 of file bpf_jit_comp.c.

#define LD16   F3(3, 0x02)

Definition at line 114 of file bpf_jit_comp.c.

#define LD16I   (LD16 | IMMED)

Definition at line 128 of file bpf_jit_comp.c.

#define LD32   F3(3, 0x00)

Definition at line 112 of file bpf_jit_comp.c.

#define LD32I   (LD32 | IMMED)

Definition at line 126 of file bpf_jit_comp.c.

#define LD64   F3(3, 0x0b)

Definition at line 115 of file bpf_jit_comp.c.

#define LD64I   (LD64 | IMMED)

Definition at line 129 of file bpf_jit_comp.c.

#define LD8   F3(3, 0x01)

Definition at line 113 of file bpf_jit_comp.c.

#define LD8I   (LD8 | IMMED)

Definition at line 127 of file bpf_jit_comp.c.

#define LDPTR   LD32

Definition at line 122 of file bpf_jit_comp.c.

#define LDPTRI   (LDPTR | IMMED)

Definition at line 130 of file bpf_jit_comp.c.

#define MUL   F3(2, 0x0a) /* umul */

Definition at line 102 of file bpf_jit_comp.c.

#define OP (   X)    ((X) << 30)

Definition at line 46 of file bpf_jit_comp.c.

#define OP2 (   X)    ((X) << 22)

Definition at line 47 of file bpf_jit_comp.c.

#define OP3 (   X)    ((X) << 19)

Definition at line 48 of file bpf_jit_comp.c.

#define OR   F3(2, 0x02)

Definition at line 98 of file bpf_jit_comp.c.

#define OR_LO (   K,
  REG 
)    (F3(2, 0x02) | IMMED | RS1(REG) | ((K) & 0x3ff) | RD(REG))

Definition at line 92 of file bpf_jit_comp.c.

#define RD (   X)    ((X) << 25)

Definition at line 43 of file bpf_jit_comp.c.

#define RD_Y   F3(2, 0x28)

Definition at line 109 of file bpf_jit_comp.c.

#define RS1 (   X)    ((X) << 14)

Definition at line 44 of file bpf_jit_comp.c.

#define RS2 (   X)    ((X))

Definition at line 45 of file bpf_jit_comp.c.

#define S13 (   X)    ((X) & 0x1fff)

Definition at line 41 of file bpf_jit_comp.c.

#define SEEN_DATAREF   1 /* might call external helpers */

Definition at line 37 of file bpf_jit_comp.c.

#define SEEN_MEM   4 /* use mem[] for temporary storage */

Definition at line 39 of file bpf_jit_comp.c.

#define SEEN_XREG   2 /* ebx is used */

Definition at line 38 of file bpf_jit_comp.c.

#define SETHI (   K,
  REG 
)    (F2(0, 0x4) | RD(REG) | (((K) >> 10) & 0x3fffff))

Definition at line 90 of file bpf_jit_comp.c.

#define SLL   F3(2, 0x25)

Definition at line 104 of file bpf_jit_comp.c.

#define SRL   F3(2, 0x26)

Definition at line 105 of file bpf_jit_comp.c.

#define ST32   F3(3, 0x04)

Definition at line 116 of file bpf_jit_comp.c.

#define ST32I   (ST32 | IMMED)

Definition at line 131 of file bpf_jit_comp.c.

#define SUB   F3(2, 0x04)

Definition at line 100 of file bpf_jit_comp.c.

#define SUBCC   F3(2, 0x14)

Definition at line 101 of file bpf_jit_comp.c.

#define WDISP22 (   X)    (((X) >> 2) & 0x3fffff)

Definition at line 74 of file bpf_jit_comp.c.

#define WR_Y   F3(2, 0x30)

Definition at line 110 of file bpf_jit_comp.c.

#define XOR   F3(2, 0x03)

Definition at line 99 of file bpf_jit_comp.c.

Function Documentation

void bpf_jit_compile ( struct sk_filter fp)

Definition at line 350 of file bpf_jit_comp.c.

void bpf_jit_free ( struct sk_filter fp)

Definition at line 802 of file bpf_jit_comp.c.

Variable Documentation

int bpf_jit_enable __read_mostly

Definition at line 12 of file bpf_jit_comp.c.