powerpc/bpf_jit: Reuse instruction macros from ppc-opcode.h
[linux-2.6-microblaze.git] / arch / powerpc / net / bpf_jit_comp64.c
index be3517e..f721fbe 100644 (file)
@@ -239,7 +239,7 @@ static void bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32
         * if (index >= array->map.max_entries)
         *   goto out;
         */
-       PPC_LWZ(b2p[TMP_REG_1], b2p_bpf_array, offsetof(struct bpf_array, map.max_entries));
+       EMIT(PPC_RAW_LWZ(b2p[TMP_REG_1], b2p_bpf_array, offsetof(struct bpf_array, map.max_entries)));
        PPC_RLWINM(b2p_index, b2p_index, 0, 0, 31);
        PPC_CMPLW(b2p_index, b2p[TMP_REG_1]);
        PPC_BCC(COND_GE, out);
@@ -260,7 +260,7 @@ static void bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32
 
        /* prog = array->ptrs[index]; */
        PPC_MULI(b2p[TMP_REG_1], b2p_index, 8);
-       PPC_ADD(b2p[TMP_REG_1], b2p[TMP_REG_1], b2p_bpf_array);
+       EMIT(PPC_RAW_ADD(b2p[TMP_REG_1], b2p[TMP_REG_1], b2p_bpf_array));
        PPC_BPF_LL(b2p[TMP_REG_1], b2p[TMP_REG_1], offsetof(struct bpf_array, ptrs));
 
        /*
@@ -340,7 +340,7 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
                 */
                case BPF_ALU | BPF_ADD | BPF_X: /* (u32) dst += (u32) src */
                case BPF_ALU64 | BPF_ADD | BPF_X: /* dst += src */
-                       PPC_ADD(dst_reg, dst_reg, src_reg);
+                       EMIT(PPC_RAW_ADD(dst_reg, dst_reg, src_reg));
                        goto bpf_alu32_trunc;
                case BPF_ALU | BPF_SUB | BPF_X: /* (u32) dst -= (u32) src */
                case BPF_ALU64 | BPF_SUB | BPF_X: /* dst -= src */
@@ -357,7 +357,7 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
                                        PPC_ADDI(dst_reg, dst_reg, IMM_L(imm));
                                else {
                                        PPC_LI32(b2p[TMP_REG_1], imm);
-                                       PPC_ADD(dst_reg, dst_reg, b2p[TMP_REG_1]);
+                                       EMIT(PPC_RAW_ADD(dst_reg, dst_reg, b2p[TMP_REG_1]));
                                }
                        }
                        goto bpf_alu32_trunc;
@@ -689,9 +689,9 @@ emit_clear:
                        PPC_ADDI(b2p[TMP_REG_1], dst_reg, off);
                        tmp_idx = ctx->idx * 4;
                        /* load value from memory into TMP_REG_2 */
-                       PPC_BPF_LWARX(b2p[TMP_REG_2], 0, b2p[TMP_REG_1], 0);
+                       EMIT(PPC_RAW_LWARX(b2p[TMP_REG_2], 0, b2p[TMP_REG_1], 0));
                        /* add value from src_reg into this */
-                       PPC_ADD(b2p[TMP_REG_2], b2p[TMP_REG_2], src_reg);
+                       EMIT(PPC_RAW_ADD(b2p[TMP_REG_2], b2p[TMP_REG_2], src_reg));
                        /* store result back */
                        PPC_BPF_STWCX(b2p[TMP_REG_2], 0, b2p[TMP_REG_1]);
                        /* we're done if this succeeded */
@@ -701,9 +701,9 @@ emit_clear:
                case BPF_STX | BPF_XADD | BPF_DW:
                        PPC_ADDI(b2p[TMP_REG_1], dst_reg, off);
                        tmp_idx = ctx->idx * 4;
-                       PPC_BPF_LDARX(b2p[TMP_REG_2], 0, b2p[TMP_REG_1], 0);
-                       PPC_ADD(b2p[TMP_REG_2], b2p[TMP_REG_2], src_reg);
-                       PPC_BPF_STDCX(b2p[TMP_REG_2], 0, b2p[TMP_REG_1]);
+                       EMIT(PPC_RAW_LDARX(b2p[TMP_REG_2], 0, b2p[TMP_REG_1], 0));
+                       EMIT(PPC_RAW_ADD(b2p[TMP_REG_2], b2p[TMP_REG_2], src_reg));
+                       EMIT(PPC_RAW_STDCX(b2p[TMP_REG_2], 0, b2p[TMP_REG_1]));
                        PPC_BCC_SHORT(COND_NE, tmp_idx);
                        break;
 
@@ -724,7 +724,7 @@ emit_clear:
                        break;
                /* dst = *(u32 *)(ul) (src + off) */
                case BPF_LDX | BPF_MEM | BPF_W:
-                       PPC_LWZ(dst_reg, src_reg, off);
+                       EMIT(PPC_RAW_LWZ(dst_reg, src_reg, off));
                        if (insn_is_zext(&insn[i + 1]))
                                addrs[++i] = ctx->idx * 4;
                        break;