Commit f48012f1 authored by Hengqi Chen's avatar Hengqi Chen Committed by Huacai Chen
Browse files

LoongArch: BPF: Support sign-extension mov instructions



Add support for sign-extension mov instructions.

Signed-off-by: default avatarHengqi Chen <hengqi.chen@gmail.com>
Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
parent 7111afe8
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -472,9 +472,24 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, bool ext
	/* dst = src */
	case BPF_ALU | BPF_MOV | BPF_X:
	case BPF_ALU64 | BPF_MOV | BPF_X:
		switch (off) {
		case 0:
			move_reg(ctx, dst, src);
			emit_zext_32(ctx, dst, is32);
			break;
		case 8:
			move_reg(ctx, t1, src);
			emit_insn(ctx, extwb, dst, t1);
			break;
		case 16:
			move_reg(ctx, t1, src);
			emit_insn(ctx, extwh, dst, t1);
			break;
		case 32:
			emit_insn(ctx, addw, dst, src, LOONGARCH_GPR_ZERO);
			break;
		}
		break;

	/* dst = imm */
	case BPF_ALU | BPF_MOV | BPF_K: