aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKATO Takenori <kato@FreeBSD.org>2001-05-02 13:51:49 +0000
committerKATO Takenori <kato@FreeBSD.org>2001-05-02 13:51:49 +0000
commit3520a2a0e2a00bdefc719bd27b04796cacd4c4da (patch)
treef12a973362c90078e7635fb72ab1cff826182300
parent281238b184f094043d3d8cc70bd531929374f53b (diff)
Notes
-rw-r--r--sys/pc98/cbus/clock.c16
-rw-r--r--sys/pc98/cbus/pcrtc.c16
-rw-r--r--sys/pc98/pc98/clock.c16
3 files changed, 45 insertions, 3 deletions
diff --git a/sys/pc98/cbus/clock.c b/sys/pc98/cbus/clock.c
index ae1a3c68cfb2..69c4b49b9252 100644
--- a/sys/pc98/cbus/clock.c
+++ b/sys/pc98/cbus/clock.c
@@ -236,6 +236,10 @@ clkintr(struct clockframe frame)
mtx_unlock_spin(&clock_lock);
}
timer_func(&frame);
+#ifdef SMP
+ if (timer_func == hardclock)
+ forward_hardclock();
+#endif
switch (timer0_state) {
case RELEASED:
@@ -246,6 +250,9 @@ clkintr(struct clockframe frame)
>= hardclock_max_count) {
timer0_prescaler_count -= hardclock_max_count;
hardclock(&frame);
+#ifdef SMP
+ forward_hardclock();
+#endif
}
break;
@@ -278,6 +285,9 @@ clkintr(struct clockframe frame)
timer_func = hardclock;
timer0_state = RELEASED;
hardclock(&frame);
+#ifdef SMP
+ forward_hardclock();
+#endif
}
break;
}
@@ -435,8 +445,12 @@ release_timer2()
static void
rtcintr(struct clockframe frame)
{
- while (rtcin(RTC_INTR) & RTCIR_PERIOD)
+ while (rtcin(RTC_INTR) & RTCIR_PERIOD) {
statclock(&frame);
+#ifdef SMP
+ forward_statclock();
+#endif
+ }
}
#include "opt_ddb.h"
diff --git a/sys/pc98/cbus/pcrtc.c b/sys/pc98/cbus/pcrtc.c
index ae1a3c68cfb2..69c4b49b9252 100644
--- a/sys/pc98/cbus/pcrtc.c
+++ b/sys/pc98/cbus/pcrtc.c
@@ -236,6 +236,10 @@ clkintr(struct clockframe frame)
mtx_unlock_spin(&clock_lock);
}
timer_func(&frame);
+#ifdef SMP
+ if (timer_func == hardclock)
+ forward_hardclock();
+#endif
switch (timer0_state) {
case RELEASED:
@@ -246,6 +250,9 @@ clkintr(struct clockframe frame)
>= hardclock_max_count) {
timer0_prescaler_count -= hardclock_max_count;
hardclock(&frame);
+#ifdef SMP
+ forward_hardclock();
+#endif
}
break;
@@ -278,6 +285,9 @@ clkintr(struct clockframe frame)
timer_func = hardclock;
timer0_state = RELEASED;
hardclock(&frame);
+#ifdef SMP
+ forward_hardclock();
+#endif
}
break;
}
@@ -435,8 +445,12 @@ release_timer2()
static void
rtcintr(struct clockframe frame)
{
- while (rtcin(RTC_INTR) & RTCIR_PERIOD)
+ while (rtcin(RTC_INTR) & RTCIR_PERIOD) {
statclock(&frame);
+#ifdef SMP
+ forward_statclock();
+#endif
+ }
}
#include "opt_ddb.h"
diff --git a/sys/pc98/pc98/clock.c b/sys/pc98/pc98/clock.c
index ae1a3c68cfb2..69c4b49b9252 100644
--- a/sys/pc98/pc98/clock.c
+++ b/sys/pc98/pc98/clock.c
@@ -236,6 +236,10 @@ clkintr(struct clockframe frame)
mtx_unlock_spin(&clock_lock);
}
timer_func(&frame);
+#ifdef SMP
+ if (timer_func == hardclock)
+ forward_hardclock();
+#endif
switch (timer0_state) {
case RELEASED:
@@ -246,6 +250,9 @@ clkintr(struct clockframe frame)
>= hardclock_max_count) {
timer0_prescaler_count -= hardclock_max_count;
hardclock(&frame);
+#ifdef SMP
+ forward_hardclock();
+#endif
}
break;
@@ -278,6 +285,9 @@ clkintr(struct clockframe frame)
timer_func = hardclock;
timer0_state = RELEASED;
hardclock(&frame);
+#ifdef SMP
+ forward_hardclock();
+#endif
}
break;
}
@@ -435,8 +445,12 @@ release_timer2()
static void
rtcintr(struct clockframe frame)
{
- while (rtcin(RTC_INTR) & RTCIR_PERIOD)
+ while (rtcin(RTC_INTR) & RTCIR_PERIOD) {
statclock(&frame);
+#ifdef SMP
+ forward_statclock();
+#endif
+ }
}
#include "opt_ddb.h"