From owner-FreeBSD-users-jp@jp.freebsd.org  Tue Nov  5 11:51:08 1996
Received: by jaz.jp.freebsd.org (8.7.3+2.6Wbeta5/8.7.3) id LAA14094
	Tue, 5 Nov 1996 11:51:08 +0900 (JST)
Received: by jaz.jp.freebsd.org (8.7.3+2.6Wbeta5/8.7.3) with ESMTP id LAA14089
	for <FreeBSD-users-jp@jp.freebsd.org>; Tue, 5 Nov 1996 11:51:07 +0900 (JST)
Received: from localhost (matusita@localhost [127.0.0.1]) by skylark.ics.es.osaka-u.ac.jp (8.8.2+2.6Wbeta9+DYNAMIC_TOBUF/3.5W/ICS-2.2Wv7-SKYLARK) with ESMTP id LAA21704 for <FreeBSD-users-jp@jp.freebsd.org>; Tue, 5 Nov 1996 11:51:06 +0900 (JST)
To: FreeBSD-users-jp@jp.freebsd.org
In-Reply-To: Your message of "Mon, 4 Nov 1996 18:43:10 +0900 (JST)"
References: <199611040943.SAA09521@at_ohasi.mickey.ai.kyutech.ac.jp>
X-Mailer: Mew version 1.06 on Emacs 19.28.1, Mule 2.3
X-FaceAnim: (-O_O-)(O_O- )(_O-  )(O-   )(-   -)(   -O)(  -O_)( -O_O)(-O_O-)
X-Fingerprint: 0C AC 93 FC E3 9D 9E 5B  3D B8 AC 5C 4A 79 D8 A6
Mime-Version: 1.0
Content-Type: Multipart/Mixed;
	boundary="--Next_Part(Tue_Nov__5_11:50:53_1996)--"
Message-Id: <19961105115104V/matusita@ics.es.osaka-u.ac.jp>
Date: Tue, 05 Nov 1996 11:51:04 +0900
From: Makoto MATSUSHITA <matusita@ics.es.osaka-u.ac.jp>
X-Dispatcher: impost version 0.92+ (Aug. 9, 1996)
Lines: 91
Reply-To: FreeBSD-users-jp@jp.freebsd.org
X-Distribute: distribute [version 2.1 (Alpha) patchlevel=19]
X-Sequence: FreeBSD-users-jp 5921
Subject: [FreeBSD-users-jp 5921] Re: DELAY() (Re: )
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org

----Next_Part(Tue_Nov__5_11:50:53_1996)--
Content-Type: Text/Plain; charset=iso-2022-jp


$B$3$s$I$3$=$O!E!E$J$N$+$J$"!%(B

ohashi> DELAY()$B$r;H$&$H$-$K$O(B"$BBT$A(B"$B$rF~$l$?$$$H$-$J$N$G!"(Bcpu_type$B$K9g(B
ohashi> $B$;$F(Boffset$B$r@_Dj$9$k$h$&$K$7$F$_$^$7$?!%>e5-%3%a%s%H$r;29M$K(B
ohashi> offset$B$NCM$rE,Ev$K7h$a$^$7$?$N$1$I:#$^$G$h$j$O$:$C$H$^$7$@$H;W(B
ohashi> $B$$$^$9!%(B

$B$H$j$"$($::rF|$+$i2TF/$5$;$F$$$^$9$,!$$$$^$N=jLdBj$O$"$j$^$;$s!%$O$d$$(B
$B$&$A$K(B commit $B$r$<$R!E!E(B

ohashi> /usr/src/sys/i386/isa/cloc.c $B$KEv$F$F$/$@$5$$!%(B22-961014-SNAP 
ohashi> $BMQ$G$9$,<j$GEv$F$F$b$?$$$7$?$3$H$J$$$G$9!%(B

2.1.5-RELEASE $B$G$"$F$h$&$H$5$l$kJ}$O!$(B2.2-961014-SNAP $B$N3:Ev(B source
code $B$r$b$C$F$-$F$*$+$J$$$H0lBN$I$&$9$j$c$$$$$N$h>uBV$K$J$l$^$9(B($B$J$<$J(B
$B$i!$(Breject $B$5$l$?$d$D$,0lBN$I$3$K=q$+$l$k$Y$-$J$N$+$,$=$l$r8+$?$@$1$G(B
$B$O$o$+$i$J$$$+$i(B)$B!%:G8e$K(B 2.1.5-RELEASE $B$K$"$F$?$d$D$r$D$1$F$_$^$9!%(B

-- -
Makoto `MAR_kun' MATSUSHITA


----Next_Part(Tue_Nov__5_11:50:53_1996)--
Content-Type: Text/Plain; charset=us-ascii

--- clock.c.dist	Tue Apr 23 04:48:26 1996
+++ clock.c	Tue Nov  5 01:21:06 1996
@@ -52,6 +52,7 @@
 #include <sys/time.h>
 #include <sys/kernel.h>
 #include <machine/clock.h>
+#include <machine/cpu.h>
 #include <machine/frame.h>
 #include <i386/isa/icu.h>
 #include <i386/isa/isa.h>
@@ -121,6 +122,7 @@
 static 	char	timer0_state = 0;
 static	char	timer2_state = 0;
 static 	void	(*timer_func) __P((struct clockframe *frame)) = hardclock;
+static	u_int	delay_offset = 20;	/* 20usec for i386 */
 
 #if 0
 void
@@ -304,6 +306,32 @@
 	 * XX lose if the clock rate is not nearly a multiple of 1000000.
 	 */
 	pentium_mhz = ((count - last_count) + 500000) / 1000000;
+
+	switch(cpu_class) {
+#if defined(I386_CPU)
+	case CPUCLASS_386:
+		delay_offset = 20;
+		break;
+#endif
+#if defined(I486_CPU)
+	case CPUCLASS_486:
+		delay_offset = 9;
+		break;
+#endif
+#if defined(I586_CPU)
+	case CPUCLASS_586:
+		delay_offset = 5;
+		break;
+#endif
+#if defined(I686_CPU)
+	case CPUCLASS_686:
+		delay_offset = 2;
+		break;
+#endif
+        default:
+		delay_offset = 0;
+		break;
+        }
 }
 #endif
 
@@ -339,7 +367,7 @@
 	 * multiplications and divisions to scale the count take a while).
 	 */
 	prev_tick = getit();
-	n -= 20;
+	n = (n <= delay_offset) ? 1 : (n - delay_offset);
 	/*
 	 * Calculate (n * (TIMER_FREQ / 1e6)) without using floating point
 	 * and without any avoidable overflows.

----Next_Part(Tue_Nov__5_11:50:53_1996)----
