Subject: Re: when to change microtime_func from i8254_microtime to cc_microtime
To: Erik E. Fair <fair@netbsd.org>
From: Jason Thorpe <thorpej@shagadelic.org>
List: port-i386
Date: 07/06/2005 10:23:27
On Jul 5, 2005, at 9:56 PM, Erik E. Fair wrote:
> Here are proposed diffs to move the setup of microtime to use TSC
> until *after* CPU initialization, so that if TSC is shut off in
> identifycpu() (as it is for some chips), we don't go using TSC for
> microtime(9) on those platforms:
This patch looks good to me.
>
> *** sys/arch/i386/i386/cpu.c.orig Sun Jun 19 14:34:44 2005
> --- sys/arch/i386/i386/cpu.c Tue Jul 5 21:49:25 2005
> ***************
> *** 409,414 ****
> --- 409,424 ----
> if (ci->ci_cpu_class >= CPUCLASS_486)
> lcr0(rcr0() | CR0_WP);
> #endif
> + #if defined(I586_CPU) || defined(I686_CPU)
> + #ifndef NO_TSC_TIME
> + /*
> + * On systems with a cycle counter, use that for
> + * interval timing inbetween hz ticks in microtime(9)
> + */
> + if (cpu_feature & TSC)
> + microtime_func = cc_microtime;
> + #endif
> + #endif
> #if defined(I686_CPU)
> /*
> * On a P6 or above, enable global TLB caching if the
> *** sys/arch/i386/i386/identcpu.c.orig Sun Jun 19 14:34:44 2005
> --- sys/arch/i386/i386/identcpu.c Tue Jul 5 21:45:49 2005
> ***************
> *** 1198,1206 ****
> last_tsc = rdtsc();
> delay(100000);
> ci->ci_tsc_freq = (rdtsc() - last_tsc) * 10;
> - #ifndef NO_TSC_TIME
> - microtime_func = cc_microtime;
> - #endif
> }
> /* XXX end XXX */
> #endif
> --- 1198,1203 ----
>
>
> Your comments would be appreciated.
>
> Erik <fair@clock.org>
>
-- thorpej