diff options
author | Michael Shalayeff <mickey@cvs.openbsd.org> | 2006-05-29 09:54:21 +0000 |
---|---|---|
committer | Michael Shalayeff <mickey@cvs.openbsd.org> | 2006-05-29 09:54:21 +0000 |
commit | 3d23607e341b0c5daa94bc47338771cc3e4f8833 (patch) | |
tree | 6e13dc87ea2c952a230bbdc53af1db4628c72c33 /sys/arch/i386/include | |
parent | 6b97fa5185775cce92425a955bfcfdcba88958ff (diff) |
implement reliable microtime on smp (joint work w/ otto):
send a bcast ipi from the cpu0 to all others to timestamp tsc
on every clock intr. this way using local tsc provides accurate
microtime() measurements. thus gettimeofday test passes now.
otto@ deraadt@ ok
Diffstat (limited to 'sys/arch/i386/include')
-rw-r--r-- | sys/arch/i386/include/cpu.h | 11 | ||||
-rw-r--r-- | sys/arch/i386/include/intr.h | 3 |
2 files changed, 8 insertions, 6 deletions
diff --git a/sys/arch/i386/include/cpu.h b/sys/arch/i386/include/cpu.h index 10ce69a46ea..50251739c00 100644 --- a/sys/arch/i386/include/cpu.h +++ b/sys/arch/i386/include/cpu.h @@ -1,4 +1,4 @@ -/* $OpenBSD: cpu.h,v 1.77 2006/05/19 19:43:41 dim Exp $ */ +/* $OpenBSD: cpu.h,v 1.78 2006/05/29 09:54:20 mickey Exp $ */ /* $NetBSD: cpu.h,v 1.35 1996/05/05 19:29:26 christos Exp $ */ /*- @@ -114,10 +114,11 @@ struct cpu_info { u_int32_t ci_imask[NIPL]; u_int32_t ci_iunmask[NIPL]; - paddr_t ci_idle_pcb_paddr; /* PA of idle PCB */ - u_long ci_flags; /* flags; see below */ - u_int32_t ci_ipis; /* interprocessor interrupts pending */ - int sc_apic_version; /* local APIC version */ + paddr_t ci_idle_pcb_paddr; /* PA of idle PCB */ + u_long ci_flags; /* flags; see below */ + u_int32_t ci_ipis; /* interprocessor interrupts pending */ + int sc_apic_version;/* local APIC version */ + u_int64_t ci_tscbase; u_int32_t ci_level; u_int32_t ci_vendor[4]; diff --git a/sys/arch/i386/include/intr.h b/sys/arch/i386/include/intr.h index 78d079ba87b..242fa7b169c 100644 --- a/sys/arch/i386/include/intr.h +++ b/sys/arch/i386/include/intr.h @@ -1,4 +1,4 @@ -/* $OpenBSD: intr.h,v 1.26 2006/03/12 02:04:15 brad Exp $ */ +/* $OpenBSD: intr.h,v 1.27 2006/05/29 09:54:20 mickey Exp $ */ /* $NetBSD: intr.h,v 1.5 1996/05/13 06:11:28 mycroft Exp $ */ /* @@ -152,6 +152,7 @@ int i386_send_ipi(struct cpu_info *, int); void i386_broadcast_ipi(int); void i386_multicast_ipi(int, int); void i386_ipi_handler(void); +void i386_ipi_microset(struct cpu_info *); void i386_intlock(int); void i386_intunlock(int); void i386_softintlock(void); |