|
|
@@ -372,12 +372,12 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
|
|
|
case BPF_ALU64 | BPF_DIV | BPF_X: /* dst /= src */
|
|
|
case BPF_ALU64 | BPF_MOD | BPF_X: /* dst %= src */
|
|
|
if (BPF_OP(code) == BPF_MOD) {
|
|
|
- PPC_DIVD(b2p[TMP_REG_1], dst_reg, src_reg);
|
|
|
+ PPC_DIVDU(b2p[TMP_REG_1], dst_reg, src_reg);
|
|
|
PPC_MULD(b2p[TMP_REG_1], src_reg,
|
|
|
b2p[TMP_REG_1]);
|
|
|
PPC_SUB(dst_reg, dst_reg, b2p[TMP_REG_1]);
|
|
|
} else
|
|
|
- PPC_DIVD(dst_reg, dst_reg, src_reg);
|
|
|
+ PPC_DIVDU(dst_reg, dst_reg, src_reg);
|
|
|
break;
|
|
|
case BPF_ALU | BPF_MOD | BPF_K: /* (u32) dst %= (u32) imm */
|
|
|
case BPF_ALU | BPF_DIV | BPF_K: /* (u32) dst /= (u32) imm */
|
|
|
@@ -405,7 +405,7 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
|
|
|
break;
|
|
|
case BPF_ALU64:
|
|
|
if (BPF_OP(code) == BPF_MOD) {
|
|
|
- PPC_DIVD(b2p[TMP_REG_2], dst_reg,
|
|
|
+ PPC_DIVDU(b2p[TMP_REG_2], dst_reg,
|
|
|
b2p[TMP_REG_1]);
|
|
|
PPC_MULD(b2p[TMP_REG_1],
|
|
|
b2p[TMP_REG_1],
|
|
|
@@ -413,7 +413,7 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
|
|
|
PPC_SUB(dst_reg, dst_reg,
|
|
|
b2p[TMP_REG_1]);
|
|
|
} else
|
|
|
- PPC_DIVD(dst_reg, dst_reg,
|
|
|
+ PPC_DIVDU(dst_reg, dst_reg,
|
|
|
b2p[TMP_REG_1]);
|
|
|
break;
|
|
|
}
|