diff options
-rw-r--r-- | sys/i386/i386/bpf_jit_machdep.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/sys/i386/i386/bpf_jit_machdep.c b/sys/i386/i386/bpf_jit_machdep.c index 8d3142d..4a33464 100644 --- a/sys/i386/i386/bpf_jit_machdep.c +++ b/sys/i386/i386/bpf_jit_machdep.c @@ -137,6 +137,7 @@ bpf_jit_compile(struct bpf_insn *prog, u_int nins, int *mem) PUSH(ESI); PUSH(EBX); MOVodd(8, EBP, EBX); + MOVodd(16, EBP, EDI); for (i = 0; i < nins; i++) { stream.bpf_pc++; @@ -164,7 +165,7 @@ bpf_jit_compile(struct bpf_insn *prog, u_int nins, int *mem) MOVid(ins->k, ECX); MOVrd(ECX, ESI); ADDib(sizeof(int), ECX); - CMPodd(0x10, EBP, ECX); + CMPrd(EDI, ECX); JLEb(7); ZEROrd(EAX); POP(EBX); @@ -180,7 +181,7 @@ bpf_jit_compile(struct bpf_insn *prog, u_int nins, int *mem) MOVid(ins->k, ECX); MOVrd(ECX, ESI); ADDib(sizeof(short), ECX); - CMPodd(0x10, EBP, ECX); + CMPrd(EDI, ECX); JLEb(5); POP(EBX); POP(ESI); @@ -193,7 +194,7 @@ bpf_jit_compile(struct bpf_insn *prog, u_int nins, int *mem) case BPF_LD|BPF_B|BPF_ABS: ZEROrd(EAX); MOVid(ins->k, ECX); - CMPodd(0x10, EBP, ECX); + CMPrd(EDI, ECX); JLEb(5); POP(EBX); POP(ESI); @@ -215,7 +216,7 @@ bpf_jit_compile(struct bpf_insn *prog, u_int nins, int *mem) ADDrd(EDX, ECX); MOVrd(ECX, ESI); ADDib(sizeof(int), ECX); - CMPodd(0x10, EBP, ECX); + CMPrd(EDI, ECX); JLEb(7); ZEROrd(EAX); POP(EBX); @@ -232,7 +233,7 @@ bpf_jit_compile(struct bpf_insn *prog, u_int nins, int *mem) ADDrd(EDX, ECX); MOVrd(ECX, ESI); ADDib(sizeof(short), ECX); - CMPodd(0x10, EBP, ECX); + CMPrd(EDI, ECX); JLEb(5); POP(EBX); POP(ESI); @@ -246,7 +247,7 @@ bpf_jit_compile(struct bpf_insn *prog, u_int nins, int *mem) ZEROrd(EAX); MOVid(ins->k, ECX); ADDrd(EDX, ECX); - CMPodd(0x10, EBP, ECX); + CMPrd(EDI, ECX); JLEb(5); POP(EBX); POP(ESI); @@ -257,7 +258,7 @@ bpf_jit_compile(struct bpf_insn *prog, u_int nins, int *mem) case BPF_LDX|BPF_MSH|BPF_B: MOVid(ins->k, ECX); - CMPodd(0x10, EBP, ECX); + CMPrd(EDI, ECX); JLEb(7); ZEROrd(EAX); POP(EBX); |