summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2004-06-28 02:00:21 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2004-06-28 02:00:21 +0000
commit8009b38d960c8a938b3dce37a497f81efac1d208 (patch)
tree52f2b66323e938a7648ab495e9a2dd34f923dee2
parent760935674b4c54f743c3d357264d07fdd56cfbaf (diff)
move from unsafe ev_count32 to safe ev_count; aaron ok
-rw-r--r--sys/arch/i386/i386/apicvec.s8
-rw-r--r--sys/arch/i386/i386/genassym.cf4
-rw-r--r--sys/arch/i386/i386/lapic.c4
-rw-r--r--sys/arch/i386/i386/vector.s5
4 files changed, 13 insertions, 8 deletions
diff --git a/sys/arch/i386/i386/apicvec.s b/sys/arch/i386/i386/apicvec.s
index c2fadf429be..4ab84c31def 100644
--- a/sys/arch/i386/i386/apicvec.s
+++ b/sys/arch/i386/i386/apicvec.s
@@ -1,4 +1,4 @@
-/* $OpenBSD: apicvec.s,v 1.2 2004/06/13 21:49:15 niklas Exp $ */
+/* $OpenBSD: apicvec.s,v 1.3 2004/06/28 02:00:20 deraadt Exp $ */
/* $NetBSD: apicvec.s,v 1.1.2.2 2000/02/21 21:54:01 sommerfeld Exp $ */
/*-
@@ -199,8 +199,12 @@ _C_LABEL(Xintr_/**/name/**/num): \
pushl %eax ;\
call *IH_FUN(%ebx) /* call it */ ;\
addl $4,%esp /* toss the arg */ ;\
+ orl %eax,%eax /* should it be counted? */ ;\
+ jz 4f ;\
+ addl $1,IH_COUNT(%ebx) /* count the intrs */ ;\
+ adcl $0,IH_COUNT+4(%ebx) ;\
+4: \
UNLOCK_KERNEL ;\
- incl IH_COUNT(%ebx) /* count the intrs */ ;\
movl IH_NEXT(%ebx),%ebx /* next handler in chain */ ;\
testl %ebx,%ebx ;\
jnz 7b ;\
diff --git a/sys/arch/i386/i386/genassym.cf b/sys/arch/i386/i386/genassym.cf
index e59ee379c90..c29811bf5e1 100644
--- a/sys/arch/i386/i386/genassym.cf
+++ b/sys/arch/i386/i386/genassym.cf
@@ -1,4 +1,4 @@
-# $OpenBSD: genassym.cf,v 1.15 2004/06/28 01:41:52 aaron Exp $
+# $OpenBSD: genassym.cf,v 1.16 2004/06/28 02:00:20 deraadt Exp $
#
# Copyright (c) 1982, 1990 The Regents of the University of California.
# All rights reserved.
@@ -172,7 +172,7 @@ if NISA > 0
struct intrhand
member ih_fun
member ih_arg
-member IH_COUNT ih_count.ec_count32
+member IH_COUNT ih_count.ec_count
member ih_next
endif
diff --git a/sys/arch/i386/i386/lapic.c b/sys/arch/i386/i386/lapic.c
index bc58300a73b..99e9ad57bdf 100644
--- a/sys/arch/i386/i386/lapic.c
+++ b/sys/arch/i386/i386/lapic.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: lapic.c,v 1.4 2004/06/28 01:41:53 aaron Exp $ */
+/* $OpenBSD: lapic.c,v 1.5 2004/06/28 02:00:20 deraadt Exp $ */
/* $NetBSD: lapic.c,v 1.1.2.8 2000/02/23 06:10:50 sommerfeld Exp $ */
/*-
@@ -204,7 +204,7 @@ lapic_clockintr(arg)
hardclock(frame);
- clk_count.ec_count32++;
+ clk_count.ec_count++;
}
void
diff --git a/sys/arch/i386/i386/vector.s b/sys/arch/i386/i386/vector.s
index 71e48ecd589..0c46cea7fd4 100644
--- a/sys/arch/i386/i386/vector.s
+++ b/sys/arch/i386/i386/vector.s
@@ -1,4 +1,4 @@
-/* $OpenBSD: vector.s,v 1.3 2004/06/20 16:30:51 aaron Exp $ */
+/* $OpenBSD: vector.s,v 1.4 2004/06/28 02:00:20 deraadt Exp $ */
/* $NetBSD: vector.s,v 1.32 1996/01/07 21:29:47 mycroft Exp $ */
/*
@@ -124,7 +124,8 @@ Xresume_/**/name/**/num/**/: ;\
STRAY_INTEGRATE /* maybe he claimed it */ ;\
orl %eax,%eax /* should it be counted? */ ;\
jz 5f /* no, skip it */ ;\
- incl IH_COUNT(%ebx) /* count the intrs */ ;\
+ addl $1,IH_COUNT(%ebx) /* count the intrs */ ;\
+ adcl $0,IH_COUNT+4(%ebx) ;\
5: movl IH_NEXT(%ebx),%ebx /* next handler in chain */ ;\
testl %ebx,%ebx ;\
jnz 7b ;\