Revision 1.27 of clock.c applies to the Intersil interrupt, not sun4m timers.

This commit is contained in:
pk 2004-07-01 09:59:00 +00:00
parent 020c431dc5
commit a61069b899
2 changed files with 14 additions and 14 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: oclock.c,v 1.8 2003/07/15 00:05:07 lukem Exp $ */ /* $NetBSD: oclock.c,v 1.9 2004/07/01 09:59:00 pk Exp $ */
/*- /*-
* Copyright (c) 2002 The NetBSD Foundation, Inc. * Copyright (c) 2002 The NetBSD Foundation, Inc.
@ -44,7 +44,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: oclock.c,v 1.8 2003/07/15 00:05:07 lukem Exp $"); __KERNEL_RCSID(0, "$NetBSD: oclock.c,v 1.9 2004/07/01 09:59:00 pk Exp $");
#include "opt_sparc_arch.h" #include "opt_sparc_arch.h"
@ -239,10 +239,20 @@ oclockintr(cap)
void *cap; void *cap;
{ {
volatile int discard; volatile int discard;
int s;
/*
* Protect the clearing of the clock interrupt. If we don't
* do this, and we're interrupted (by the zs, for example),
* the clock stops!
* XXX WHY DOES THIS HAPPEN?
*/
s = splhigh();
discard = intersil_clear(); discard = intersil_clear();
ienab_bic(IE_L10); /* clear interrupt */ ienab_bic(IE_L10); /* clear interrupt */
ienab_bis(IE_L10); /* enable interrupt */ ienab_bis(IE_L10); /* enable interrupt */
splx(s);
hardclock((struct clockframe *)cap); hardclock((struct clockframe *)cap);
return (1); return (1);

View File

@ -1,4 +1,4 @@
/* $NetBSD: timer_sun4m.c,v 1.9 2004/05/12 15:44:28 pk Exp $ */ /* $NetBSD: timer_sun4m.c,v 1.10 2004/07/01 09:59:00 pk Exp $ */
/* /*
* Copyright (c) 1992, 1993 * Copyright (c) 1992, 1993
@ -58,7 +58,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: timer_sun4m.c,v 1.9 2004/05/12 15:44:28 pk Exp $"); __KERNEL_RCSID(0, "$NetBSD: timer_sun4m.c,v 1.10 2004/07/01 09:59:00 pk Exp $");
#include <sys/param.h> #include <sys/param.h>
#include <sys/kernel.h> #include <sys/kernel.h>
@ -104,19 +104,9 @@ int
clockintr_4m(void *cap) clockintr_4m(void *cap)
{ {
volatile int discard; volatile int discard;
int s;
/*
* Protect the clearing of the clock interrupt. If we don't
* do this, and we're interrupted (by the zs, for example),
* the clock stops!
* XXX WHY DOES THIS HAPPEN?
*/
s = splhigh();
/* read the limit register to clear the interrupt */ /* read the limit register to clear the interrupt */
discard = timerreg4m->t_limit; discard = timerreg4m->t_limit;
splx(s);
hardclock((struct clockframe *)cap); hardclock((struct clockframe *)cap);
return (1); return (1);