summaryrefslogtreecommitdiffstats
path: root/sys/amd64/amd64/mp_machdep.c
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2009-05-02 12:20:43 +0000
committermav <mav@FreeBSD.org>2009-05-02 12:20:43 +0000
commitbaf55d1d06ec21028f521e2a0594294a49bc3bce (patch)
treef18d346c3109119beca341888aa2edfe43eac759 /sys/amd64/amd64/mp_machdep.c
parenta5dcb177014ca524da48b6cd1ecdbde4e6b42789 (diff)
downloadFreeBSD-src-baf55d1d06ec21028f521e2a0594294a49bc3bce.zip
FreeBSD-src-baf55d1d06ec21028f521e2a0594294a49bc3bce.tar.gz
Add support for using i8254 and rtc timers as event sources for amd64 SMP
system. Redistribute hard-/stat-/profclock events to other CPUs using IPIs.
Diffstat (limited to 'sys/amd64/amd64/mp_machdep.c')
-rw-r--r--sys/amd64/amd64/mp_machdep.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c
index ffda046..7a93023 100644
--- a/sys/amd64/amd64/mp_machdep.c
+++ b/sys/amd64/amd64/mp_machdep.c
@@ -57,6 +57,7 @@ __FBSDID("$FreeBSD$");
#include <vm/vm_extern.h>
#include <machine/apicreg.h>
+#include <machine/clock.h>
#include <machine/cputypes.h>
#include <machine/cpufunc.h>
#include <machine/md_var.h>
@@ -1124,6 +1125,15 @@ ipi_bitmap_handler(struct trapframe frame)
sched_preempt(curthread);
/* Nothing to do for AST */
+
+ if (ipi_bitmap & (1 << IPI_HARDCLOCK))
+ hardclockintr(&frame);
+
+ if (ipi_bitmap & (1 << IPI_STATCLOCK))
+ statclockintr(&frame);
+
+ if (ipi_bitmap & (1 << IPI_PROFCLOCK))
+ profclockintr(&frame);
}
/*
OpenPOWER on IntegriCloud