Lines Matching +full:8 +full:k

68 #define SETHI(K, REG)	\  argument
69 (F2(0, 0x4) | RD(REG) | (((K) >> 10) & 0x3fffff))
70 #define OR_LO(K, REG) \ argument
71 (F3(2, 0x02) | IMMED | RS1(REG) | ((K) & 0x3ff) | RD(REG))
126 #define emit_set_const(K, REG) \ argument
127 do { /* sethi %hi(K), REG */ \
128 *prog++ = SETHI(K, REG); \
129 /* or REG, %lo(K), REG */ \
130 *prog++ = OR_LO(K, REG); \
145 * OP r_A, K, r_A
149 * sethi %hi(K), r_TMP
150 * or r_TMP, %lo(K), r_TMP
153 * depending upon whether K fits in a signed 13-bit
154 * immediate instruction field. Emit nothing if K
157 #define emit_alu_K(OPCODE, K) \ argument
159 if (K || OPCODE == AND || OPCODE == MUL) { \
162 if (is_simm13(K)) { \
163 *prog++ = _insn | IMMED | S13(K); \
165 emit_set_const(K, r_TMP); \
171 #define emit_loadimm(K, DEST) \ argument
173 if (is_simm13(K)) { \
174 /* or %g0, K, DEST */ \
175 *prog++ = OR | IMMED | RS1(G0) | S13(K) | RD(DEST); \
177 emit_set_const(K, DEST); \
241 do { void *_here = image + addrs[i] - 8; \
248 do { unsigned int _here = addrs[i] - 8; \
308 * destination - (addrs[i] - 8)
310 * This "addrs[i] - 8" is the address of the branch itself or
311 * what "." would be in assembler notation. The "8" part is
329 u32 temp[8], *prog, *func, seen = 0, pass; in bpf_jit_compile()
391 unsigned int K = filter[i].k; in bpf_jit_compile() local
402 case BPF_ALU | BPF_ADD | BPF_K: /* A += K; */ in bpf_jit_compile()
403 emit_alu_K(ADD, K); in bpf_jit_compile()
408 case BPF_ALU | BPF_SUB | BPF_K: /* A -= K */ in bpf_jit_compile()
409 emit_alu_K(SUB, K); in bpf_jit_compile()
414 case BPF_ALU | BPF_AND | BPF_K: /* A &= K */ in bpf_jit_compile()
415 emit_alu_K(AND, K); in bpf_jit_compile()
420 case BPF_ALU | BPF_OR | BPF_K: /* A |= K */ in bpf_jit_compile()
421 emit_alu_K(OR, K); in bpf_jit_compile()
427 case BPF_ALU | BPF_XOR | BPF_K: /* A ^= K */ in bpf_jit_compile()
428 emit_alu_K(XOR, K); in bpf_jit_compile()
433 case BPF_ALU | BPF_LSH | BPF_K: /* A <<= K */ in bpf_jit_compile()
434 emit_alu_K(SLL, K); in bpf_jit_compile()
439 case BPF_ALU | BPF_RSH | BPF_K: /* A >>= K */ in bpf_jit_compile()
440 emit_alu_K(SRL, K); in bpf_jit_compile()
445 case BPF_ALU | BPF_MUL | BPF_K: /* A *= K */ in bpf_jit_compile()
446 emit_alu_K(MUL, K); in bpf_jit_compile()
448 case BPF_ALU | BPF_DIV | BPF_K: /* A /= K with K != 0*/ in bpf_jit_compile()
449 if (K == 1) in bpf_jit_compile()
459 emit_alu_K(DIV, K); in bpf_jit_compile()
487 if (!K) { in bpf_jit_compile()
492 emit_loadimm(K, r_A); in bpf_jit_compile()
508 /* jmpl %r_saved_O7 + 8, %g0 */ in bpf_jit_compile()
509 emit_jmpl(r_saved_O7, 8, G0); in bpf_jit_compile()
571 emit_loadimm(K, r_A); in bpf_jit_compile()
574 emit_loadimm(K, r_X); in bpf_jit_compile()
578 emit_ldmem(K * 4, r_A); in bpf_jit_compile()
582 emit_ldmem(K * 4, r_X); in bpf_jit_compile()
586 emit_stmem(K * 4, r_A); in bpf_jit_compile()
590 emit_stmem(K * 4, r_X); in bpf_jit_compile()
593 #define CHOOSE_LOAD_FUNC(K, func) \ in bpf_jit_compile() argument
594 ((int)K < 0 ? ((int)K >= SKF_LL_OFF ? func##_negative_offset : func) : func##_positive_offset) in bpf_jit_compile()
597 func = CHOOSE_LOAD_FUNC(K, bpf_jit_load_word); in bpf_jit_compile()
599 emit_loadimm(K, r_OFF); in bpf_jit_compile()
603 func = CHOOSE_LOAD_FUNC(K, bpf_jit_load_half); in bpf_jit_compile()
606 func = CHOOSE_LOAD_FUNC(K, bpf_jit_load_byte); in bpf_jit_compile()
609 func = CHOOSE_LOAD_FUNC(K, bpf_jit_load_byte_msh); in bpf_jit_compile()
614 if (K) { in bpf_jit_compile()
615 if (is_simm13(K)) { in bpf_jit_compile()
616 emit_addi(r_X, K, r_OFF); in bpf_jit_compile()
618 emit_loadimm(K, r_TMP); in bpf_jit_compile()
633 emit_jump(addrs[i + K]); in bpf_jit_compile()
676 if (is_simm13(K)) { in bpf_jit_compile()
677 emit_cmpi(r_A, K); in bpf_jit_compile()
679 emit_loadimm(K, r_TMP); in bpf_jit_compile()
684 if (is_simm13(K)) { in bpf_jit_compile()
685 emit_btsti(r_A, K); in bpf_jit_compile()
687 emit_loadimm(K, r_TMP); in bpf_jit_compile()
694 t_offset += 8; in bpf_jit_compile()
728 cleanup_addr = proglen - 8; /* jmpl; mov r_A,%o0; */ in bpf_jit_compile()