summaryrefslogtreecommitdiffstats
path: root/sys/ia64/include/smp.h
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2001-10-29 02:16:02 +0000
committermarcel <marcel@FreeBSD.org>2001-10-29 02:16:02 +0000
commit830dbf12d9594406beedd41668c7f2755d92ff51 (patch)
tree4e1c79f52aeff89922742b2fccaa89674395cd9c /sys/ia64/include/smp.h
parent5d44d9cff102901a7355df4382bb3717ee0572ef (diff)
downloadFreeBSD-src-830dbf12d9594406beedd41668c7f2755d92ff51.zip
FreeBSD-src-830dbf12d9594406beedd41668c7f2755d92ff51.tar.gz
o Do not parse the MADT as a side-effect in AcpiOsGetRootPointer,
do it as a side-effect of probing for MP hardware. This allows us to scan for local SAPICs early (especially before MBUF initialization). o Fix the Local SAPIC structure so that matches the Local SAPIC table entry. Now that the Local SAPIC info is the same as the Local APIC info, stop dumping the Local APIC entries. o For every Local SAPIC entry in the MADT that's not disabled, let the SMP code know about it. They represent actual CPUs. o Register the OS_BOOT_RENDEZ entry point and provide a (bogus) implementation for the entry point. o Provide a mapping for internal IPI numbers to ExtINT vectors. o In a MP system, announce the CPUs and start them by sending IPI_AP_WAKEUP to each of them. Not that it makes a difference at this time :-) o Miscellaneous style fixes and other adjustments.
Diffstat (limited to 'sys/ia64/include/smp.h')
-rw-r--r--sys/ia64/include/smp.h32
1 files changed, 17 insertions, 15 deletions
diff --git a/sys/ia64/include/smp.h b/sys/ia64/include/smp.h
index ded849f..3f99e15 100644
--- a/sys/ia64/include/smp.h
+++ b/sys/ia64/include/smp.h
@@ -7,26 +7,28 @@
#ifdef _KERNEL
/*
- * Interprocessor interrupts for SMP.
+ * Interprocessor interrupts for SMP. The following values are indices
+ * into the IPI vector table. The SAL gives us the vector used for AP
+ * wake-up. Keep the IPI_AP_WAKEUP at index 0.
*/
-#define IPI_INVLTLB 0x0001
-#define IPI_RENDEZVOUS 0x0002
-#define IPI_AST 0x0004
-#define IPI_CHECKSTATE 0x0008
-#define IPI_STOP 0x0010
+#define IPI_AP_WAKEUP 0
+#define IPI_AST 1
+#define IPI_CHECKSTATE 2
+#define IPI_INVLTLB 3
+#define IPI_RENDEZVOUS 4
+#define IPI_STOP 5
+
+#define IPI_COUNT 6
#ifndef LOCORE
-/* global data in mp_machdep.c */
-extern volatile u_int checkstate_probed_cpus;
-extern volatile u_int checkstate_need_ast;
-extern volatile u_int resched_cpus;
+extern int mp_hardware;
+extern int mp_ipi_vector[];
-void ipi_all(u_int64_t ipi);
-void ipi_all_but_self(u_int64_t ipi);
-void ipi_selected(u_int cpus, u_int64_t ipi);
-void ipi_self(u_int64_t ipi);
-void smp_init_secondary(void);
+void ipi_all(int ipi);
+void ipi_all_but_self(int ipi);
+void ipi_selected(u_int64_t cpus, int ipi);
+void ipi_self(int ipi);
#endif /* !LOCORE */
#endif /* _KERNEL */
OpenPOWER on IntegriCloud