summaryrefslogtreecommitdiffstats
path: root/sys/i386
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2008-08-12 20:12:59 +0000
committerjkim <jkim@FreeBSD.org>2008-08-12 20:12:59 +0000
commit6872e8fc85deae982056048a9c87659bd50c3f83 (patch)
treef228997f79d0db57b7d0f8312fb8a7eb6dcc5232 /sys/i386
parent5bf34e3e87fc944decb9cd18e97fe744117ac2f0 (diff)
downloadFreeBSD-src-6872e8fc85deae982056048a9c87659bd50c3f83.zip
FreeBSD-src-6872e8fc85deae982056048a9c87659bd50c3f83.tar.gz
Reduce number of stack usages with unused %edi.
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/i386/bpf_jit_machdep.c15
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);
OpenPOWER on IntegriCloud