From 8dbcc994cab6a1a84b3d5e080bd1d082efda7e6d Mon Sep 17 00:00:00 2001 From: phk Date: Sat, 28 Feb 1998 21:16:13 +0000 Subject: [PATCH] Prevent the TSC from being used on APM machines, we have no idea if it runs at a constant frequency. This was less of an issue before, because the TSC only interpolated in the HZ intervals, but now where the timecounter is used all the way, this becomes much more visible. Nit: Fix a printf which triggered the bde-filter. --- sys/amd64/amd64/tsc.c | 8 ++++++-- sys/amd64/isa/clock.c | 8 ++++++-- sys/i386/i386/tsc.c | 8 ++++++-- sys/i386/isa/clock.c | 8 ++++++-- sys/isa/atrtc.c | 8 ++++++-- 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/sys/amd64/amd64/tsc.c b/sys/amd64/amd64/tsc.c index bc0b9513c55..4388c972631 100644 --- a/sys/amd64/amd64/tsc.c +++ b/sys/amd64/amd64/tsc.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)clock.c 7.2 (Berkeley) 5/12/91 - * $Id: clock.c,v 1.112 1998/02/21 20:45:27 jkh Exp $ + * $Id: clock.c,v 1.113 1998/02/23 00:11:25 bde Exp $ */ /* @@ -49,6 +49,7 @@ */ #include "opt_clock.h" +#include "apm.h" #include #include @@ -633,9 +634,9 @@ calibrate_clocks(void) tsc_freq = rdtsc(); if (bootverbose) { - printf("i8254 clock: %u Hz\n", tot_count); if (tsc_present) printf("TSC clock: %u Hz, ", tsc_freq); + printf("i8254 clock: %u Hz\n", tot_count); } return (tot_count); @@ -683,6 +684,9 @@ startrtclock() #ifdef SMP tsc_present = 0; #endif +#if NAPM > 0 + tsc_present = 0; +#endif writertc(RTC_STATUSA, rtc_statusa); writertc(RTC_STATUSB, RTCSB_24HR); diff --git a/sys/amd64/isa/clock.c b/sys/amd64/isa/clock.c index bc0b9513c55..4388c972631 100644 --- a/sys/amd64/isa/clock.c +++ b/sys/amd64/isa/clock.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)clock.c 7.2 (Berkeley) 5/12/91 - * $Id: clock.c,v 1.112 1998/02/21 20:45:27 jkh Exp $ + * $Id: clock.c,v 1.113 1998/02/23 00:11:25 bde Exp $ */ /* @@ -49,6 +49,7 @@ */ #include "opt_clock.h" +#include "apm.h" #include #include @@ -633,9 +634,9 @@ calibrate_clocks(void) tsc_freq = rdtsc(); if (bootverbose) { - printf("i8254 clock: %u Hz\n", tot_count); if (tsc_present) printf("TSC clock: %u Hz, ", tsc_freq); + printf("i8254 clock: %u Hz\n", tot_count); } return (tot_count); @@ -683,6 +684,9 @@ startrtclock() #ifdef SMP tsc_present = 0; #endif +#if NAPM > 0 + tsc_present = 0; +#endif writertc(RTC_STATUSA, rtc_statusa); writertc(RTC_STATUSB, RTCSB_24HR); diff --git a/sys/i386/i386/tsc.c b/sys/i386/i386/tsc.c index bc0b9513c55..4388c972631 100644 --- a/sys/i386/i386/tsc.c +++ b/sys/i386/i386/tsc.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)clock.c 7.2 (Berkeley) 5/12/91 - * $Id: clock.c,v 1.112 1998/02/21 20:45:27 jkh Exp $ + * $Id: clock.c,v 1.113 1998/02/23 00:11:25 bde Exp $ */ /* @@ -49,6 +49,7 @@ */ #include "opt_clock.h" +#include "apm.h" #include #include @@ -633,9 +634,9 @@ calibrate_clocks(void) tsc_freq = rdtsc(); if (bootverbose) { - printf("i8254 clock: %u Hz\n", tot_count); if (tsc_present) printf("TSC clock: %u Hz, ", tsc_freq); + printf("i8254 clock: %u Hz\n", tot_count); } return (tot_count); @@ -683,6 +684,9 @@ startrtclock() #ifdef SMP tsc_present = 0; #endif +#if NAPM > 0 + tsc_present = 0; +#endif writertc(RTC_STATUSA, rtc_statusa); writertc(RTC_STATUSB, RTCSB_24HR); diff --git a/sys/i386/isa/clock.c b/sys/i386/isa/clock.c index bc0b9513c55..4388c972631 100644 --- a/sys/i386/isa/clock.c +++ b/sys/i386/isa/clock.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)clock.c 7.2 (Berkeley) 5/12/91 - * $Id: clock.c,v 1.112 1998/02/21 20:45:27 jkh Exp $ + * $Id: clock.c,v 1.113 1998/02/23 00:11:25 bde Exp $ */ /* @@ -49,6 +49,7 @@ */ #include "opt_clock.h" +#include "apm.h" #include #include @@ -633,9 +634,9 @@ calibrate_clocks(void) tsc_freq = rdtsc(); if (bootverbose) { - printf("i8254 clock: %u Hz\n", tot_count); if (tsc_present) printf("TSC clock: %u Hz, ", tsc_freq); + printf("i8254 clock: %u Hz\n", tot_count); } return (tot_count); @@ -683,6 +684,9 @@ startrtclock() #ifdef SMP tsc_present = 0; #endif +#if NAPM > 0 + tsc_present = 0; +#endif writertc(RTC_STATUSA, rtc_statusa); writertc(RTC_STATUSB, RTCSB_24HR); diff --git a/sys/isa/atrtc.c b/sys/isa/atrtc.c index bc0b9513c55..4388c972631 100644 --- a/sys/isa/atrtc.c +++ b/sys/isa/atrtc.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)clock.c 7.2 (Berkeley) 5/12/91 - * $Id: clock.c,v 1.112 1998/02/21 20:45:27 jkh Exp $ + * $Id: clock.c,v 1.113 1998/02/23 00:11:25 bde Exp $ */ /* @@ -49,6 +49,7 @@ */ #include "opt_clock.h" +#include "apm.h" #include #include @@ -633,9 +634,9 @@ calibrate_clocks(void) tsc_freq = rdtsc(); if (bootverbose) { - printf("i8254 clock: %u Hz\n", tot_count); if (tsc_present) printf("TSC clock: %u Hz, ", tsc_freq); + printf("i8254 clock: %u Hz\n", tot_count); } return (tot_count); @@ -683,6 +684,9 @@ startrtclock() #ifdef SMP tsc_present = 0; #endif +#if NAPM > 0 + tsc_present = 0; +#endif writertc(RTC_STATUSA, rtc_statusa); writertc(RTC_STATUSB, RTCSB_24HR); -- 2.45.2