From owner-FreeBSD-users-jp@jp.freebsd.org  Mon Dec  2 23:38:23 1996
Received: by jaz.jp.freebsd.org (8.8.3+2.6Wbeta9/8.7.3) id XAA25052
	Mon, 2 Dec 1996 23:38:23 +0900 (JST)
Received: by jaz.jp.freebsd.org (8.8.3+2.6Wbeta9/8.7.3) with ESMTP id XAA25047
	for <FreeBSD-users-jp@jp.freebsd.org>; Mon, 2 Dec 1996 23:38:22 +0900 (JST)
Received: from localhost (localhost [127.0.0.1]) by wine.mickey.ai.kyutech.ac.jp (8.8.2/8.8.2) with ESMTP id XAA07169 for <FreeBSD-users-jp@jp.freebsd.org>; Mon, 2 Dec 1996 23:38:15 +0900 (JST)
To: FreeBSD-users-jp@jp.freebsd.org
In-Reply-To: Your message of "Fri, 29 Nov 1996 16:57:33 +0900 (JST)"
References: <199611290757.QAA10453@sirius.sbl.cl.nec.co.jp>
Mime-Version: 1.0
From: Murata Shuuichirou <mrt@mickey.ai.kyutech.ac.jp>
X-Mailer: Mew version 1.54 on Emacs 19.33.4, Mule 2.4
Content-Type: Multipart/Mixed;
	boundary="--Next_Part(Mon_Dec__2_23:36:02_1996)--"
Content-Transfer-Encoding: 7bit
Message-Id: <19961202233814U.mrt@mickey.ai.kyutech.ac.jp>
Date: Mon, 02 Dec 1996 23:38:14 +0900
X-Dispatcher: impost version 0.95+ (Nov. 26, 1996)
Lines: 86
Reply-To: FreeBSD-users-jp@jp.freebsd.org
X-Distribute: distribute [version 2.1 (Alpha) patchlevel=19]
X-Sequence: FreeBSD-users-jp 7114
Subject: [FreeBSD-users-jp 7114] Re: 2.2-RELEASE
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org

----Next_Part(Mon_Dec__2_23:36:02_1996)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

$B$`$i$?(B@$B6e9)Bg$G$9!#(B

In message <199611290757.QAA10453@sirius.sbl.cl.nec.co.jp>,
 Naoki Hamada <nao@sbl.cl.nec.co.jp> wrote:
>   mmap $B$^$o$j$d(B DELAY $B$^$o$j$J$I!"$^$@(B commit $B$5$l$F$J$$$H$9$k$H$b$C$?(B
> $B$$$J$9$.$k$N$G!"$<$R%W%C%7%e$7$?$$$N$G$9$,!"$3$N$"$?$j$N8=>u$H$+!"$"$H(B 
> commit $B$9$k$Y$-@.2L$J$I$"$j$^$7$?$i65$($F$/$@$5$$!#(B

$B0JA0$*$*$O$7$5$s$,Ej9F$5$l$?(B clock.c $B$KBP$9$k%Q%C%A$G$9$,!"!V(BDELAY
 $B$N(B offset $B$r7W;;$G5a$a$k$h$&$K$7$F$O$I$&$+!W$H$$$&0U8+$b$"$j$^$7$?$N(B
$B$G!"$*$*$O$7$5$s$H6(NO$7$F$=$N$h$&$K=$@5$7$F$_$^$7$?!#(B
/sys/i386/isa/clock.c $B$K$"$F$F%F%9%H$7$F$_$F$/$@$5$$!#(B12/1 $B$N;~E@$G$N(B 
current $B$KBP$9$k%Q%C%A$G$9$,(B 2.2-ALPHA $B$K$b$=$N$^$^$"$?$j$^$9!#(B

$B$3$A$i$G$O(B P5-133,P6-200,486DX(clock$BK:$l$?(B)$B$G%F%9%H$7$F$&$^$/F0$$$F$$(B
$B$^$9!#(B

# P6-200 $B$N$[$&$,(B P5-133 $B$h$jCY$$$H=P$?(B:-)
-- 
$B$`$i$?$7$e$&$$$A$m$&(B


----Next_Part(Mon_Dec__2_23:36:02_1996)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

--- clock.c.orig	Sat Oct 26 09:11:57 1996
+++ clock.c	Mon Dec  2 22:58:36 1996
@@ -133,6 +133,8 @@
 static	u_char	rtc_statusa = RTCSA_DIVIDER | RTCSA_NOPROF;
 static	u_char	rtc_statusb = RTCSB_24HR | RTCSB_PINTR;
 
+static u_int delay_offset = 20;
+
 /* Values for timerX_state: */
 #define	RELEASED	0
 #define	RELEASE_PENDING	1
@@ -385,7 +387,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.
@@ -485,6 +487,7 @@
 {
 	u_int count, prev_count, tot_count;
 	int sec, start_sec, timeout;
+	int start_tic, end_tic, delay;
 
 	printf("Calibrating clock(s) relative to mc146818A clock ... ");
 	if (!(rtcin(RTC_STATUSD) & RTCSD_PWR))
@@ -564,6 +567,25 @@
 #endif
 
 	printf("i8254 clock: %u Hz\n", tot_count);
+
+	/* init delay_offset */
+	delay_offset = 0;
+	/* some machine has too small max_count */
+	delay = timer0_max_count / 10 * 1000000 / timer_freq;
+	do {
+		start_tic = getit();
+		DELAY(delay);
+		end_tic = getit();
+	} while (start_tic <= end_tic);
+	/* avoid overflow */
+	delay_offset = (start_tic - end_tic) * 1000000.0 / timer_freq - delay;
+#ifdef DELAYOFFSETDEBUG
+	printf("DELAY: %d usec\n", delay);
+	printf("DELAY offset: %u usec\n", delay_offset);
+#endif
+	if (!(0 < delay_offset || delay_offset < 20))
+		delay_offset = 20;
+
 	return (tot_count);
 
 fail:

----Next_Part(Mon_Dec__2_23:36:02_1996)----
