summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormiod <miod@openbsd.org>2007-11-12 21:00:22 +0000
committermiod <miod@openbsd.org>2007-11-12 21:00:22 +0000
commitf761a30b0e9e7656bcb9204452b823253cdaf120 (patch)
treee304702f3be4bf34cf703e9ed1985057e4b88b6b
parentUse isa_intr_establish() to establish the SCI interrupt handler; this makes (diff)
downloadwireguard-openbsd-f761a30b0e9e7656bcb9204452b823253cdaf120.tar.xz
wireguard-openbsd-f761a30b0e9e7656bcb9204452b823253cdaf120.zip
Restart clock before invoking hardclock() and statclock(), otherwise they
drift in MP kernels.
-rw-r--r--sys/arch/mvme88k/mvme88k/m188_machdep.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/arch/mvme88k/mvme88k/m188_machdep.c b/sys/arch/mvme88k/mvme88k/m188_machdep.c
index 8596b81c3ed..5b87553897e 100644
--- a/sys/arch/mvme88k/mvme88k/m188_machdep.c
+++ b/sys/arch/mvme88k/mvme88k/m188_machdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: m188_machdep.c,v 1.37 2007/11/12 19:59:07 miod Exp $ */
+/* $OpenBSD: m188_machdep.c,v 1.38 2007/11/12 21:00:22 miod Exp $ */
/*
* Copyright (c) 1998, 1999, 2000, 2001 Steve Murphree, Jr.
* Copyright (c) 1996 Nivas Madhur
@@ -821,12 +821,12 @@ m188_clockintr(void *eframe)
CIO_LOCK();
write_cio(CIO_CSR1, CIO_GCB | CIO_CIP); /* Ack the interrupt */
- hardclock(eframe);
-
/* restart counter */
write_cio(CIO_CSR1, CIO_GCB | CIO_TCB | CIO_IE);
CIO_UNLOCK();
+ hardclock(eframe);
+
#ifdef MULTIPROCESSOR
/*
* Send an IPI to all other processors, so they can get their
@@ -849,8 +849,6 @@ m188_statintr(void *eframe)
tmp = *(volatile u_int8_t *)DART_STOPC;
tmp = *(volatile u_int8_t *)DART_ISR;
- statclock((struct clockframe *)eframe);
-
/*
* Compute new randomized interval. The intervals are
* uniformly distributed on
@@ -869,6 +867,8 @@ m188_statintr(void *eframe)
*(volatile u_int8_t *)DART_CTLR = (newint & 0xff);
tmp = *(volatile u_int8_t *)DART_STARTC;
+ statclock((struct clockframe *)eframe);
+
#ifdef MULTIPROCESSOR
/*
* Send an IPI to all other processors as well.