From 16263f7a8b7c05dbb7f2aba0fa06703ada7c067e Mon Sep 17 00:00:00 2001 From: Bruce Evans Date: Mon, 17 Jun 1996 12:50:22 +0000 Subject: In getit(), use read_eflags()/write_eflags() to preserve the interrupt enable flag instead of enable_intr() to restore it to its usual state. getit() is only called from DELAY() so there is no point in optimising its speed (this wasn't so clear when it was extern), and using enable_intr() made it inconvenient to call DELAY() from probes that need to run with interrupts disabled. --- sys/amd64/amd64/tsc.c | 11 ++++++++--- sys/amd64/isa/clock.c | 11 ++++++++--- sys/i386/i386/tsc.c | 11 ++++++++--- sys/i386/isa/clock.c | 11 ++++++++--- sys/isa/atrtc.c | 11 ++++++++--- 5 files changed, 40 insertions(+), 15 deletions(-) (limited to 'sys') diff --git a/sys/amd64/amd64/tsc.c b/sys/amd64/amd64/tsc.c index 21b9e36966a0..1b1c2d815091 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.59 1996/06/11 16:02:55 pst Exp $ + * $Id: clock.c,v 1.60 1996/06/11 16:11:27 pst Exp $ */ /* @@ -286,14 +286,19 @@ DDB_printrtc(void) static int getit(void) { + u_long ef; int high, low; + ef = read_eflags(); disable_intr(); - /* select timer0 and latch counter value */ + + /* Select timer0 and latch counter value. */ outb(TIMER_MODE, TIMER_SEL0); + low = inb(TIMER_CNTR0); high = inb(TIMER_CNTR0); - enable_intr(); + + write_eflags(ef); return ((high << 8) | low); } diff --git a/sys/amd64/isa/clock.c b/sys/amd64/isa/clock.c index 21b9e36966a0..1b1c2d815091 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.59 1996/06/11 16:02:55 pst Exp $ + * $Id: clock.c,v 1.60 1996/06/11 16:11:27 pst Exp $ */ /* @@ -286,14 +286,19 @@ DDB_printrtc(void) static int getit(void) { + u_long ef; int high, low; + ef = read_eflags(); disable_intr(); - /* select timer0 and latch counter value */ + + /* Select timer0 and latch counter value. */ outb(TIMER_MODE, TIMER_SEL0); + low = inb(TIMER_CNTR0); high = inb(TIMER_CNTR0); - enable_intr(); + + write_eflags(ef); return ((high << 8) | low); } diff --git a/sys/i386/i386/tsc.c b/sys/i386/i386/tsc.c index 21b9e36966a0..1b1c2d815091 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.59 1996/06/11 16:02:55 pst Exp $ + * $Id: clock.c,v 1.60 1996/06/11 16:11:27 pst Exp $ */ /* @@ -286,14 +286,19 @@ DDB_printrtc(void) static int getit(void) { + u_long ef; int high, low; + ef = read_eflags(); disable_intr(); - /* select timer0 and latch counter value */ + + /* Select timer0 and latch counter value. */ outb(TIMER_MODE, TIMER_SEL0); + low = inb(TIMER_CNTR0); high = inb(TIMER_CNTR0); - enable_intr(); + + write_eflags(ef); return ((high << 8) | low); } diff --git a/sys/i386/isa/clock.c b/sys/i386/isa/clock.c index 21b9e36966a0..1b1c2d815091 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.59 1996/06/11 16:02:55 pst Exp $ + * $Id: clock.c,v 1.60 1996/06/11 16:11:27 pst Exp $ */ /* @@ -286,14 +286,19 @@ DDB_printrtc(void) static int getit(void) { + u_long ef; int high, low; + ef = read_eflags(); disable_intr(); - /* select timer0 and latch counter value */ + + /* Select timer0 and latch counter value. */ outb(TIMER_MODE, TIMER_SEL0); + low = inb(TIMER_CNTR0); high = inb(TIMER_CNTR0); - enable_intr(); + + write_eflags(ef); return ((high << 8) | low); } diff --git a/sys/isa/atrtc.c b/sys/isa/atrtc.c index 21b9e36966a0..1b1c2d815091 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.59 1996/06/11 16:02:55 pst Exp $ + * $Id: clock.c,v 1.60 1996/06/11 16:11:27 pst Exp $ */ /* @@ -286,14 +286,19 @@ DDB_printrtc(void) static int getit(void) { + u_long ef; int high, low; + ef = read_eflags(); disable_intr(); - /* select timer0 and latch counter value */ + + /* Select timer0 and latch counter value. */ outb(TIMER_MODE, TIMER_SEL0); + low = inb(TIMER_CNTR0); high = inb(TIMER_CNTR0); - enable_intr(); + + write_eflags(ef); return ((high << 8) | low); } -- cgit v1.3