|
@@ -123,6 +123,33 @@ void smp_store_cpu_info(int id);
|
|
|
# include "smp_64.h"
|
|
|
#endif
|
|
|
|
|
|
+#ifdef CONFIG_X86_LOCAL_APIC
|
|
|
+
|
|
|
+static inline int logical_smp_processor_id(void)
|
|
|
+{
|
|
|
+ /* we don't want to mark this access volatile - bad code generation */
|
|
|
+ return GET_APIC_LOGICAL_ID(*(u32 *)(APIC_BASE + APIC_LDR));
|
|
|
+}
|
|
|
+
|
|
|
+# ifdef APIC_DEFINITION
|
|
|
+extern int hard_smp_processor_id(void);
|
|
|
+# else
|
|
|
+# include <mach_apicdef.h>
|
|
|
+static inline int hard_smp_processor_id(void)
|
|
|
+{
|
|
|
+ /* we don't want to mark this access volatile - bad code generation */
|
|
|
+ return GET_APIC_ID(*(u32 *)(APIC_BASE + APIC_ID));
|
|
|
+}
|
|
|
+# endif /* APIC_DEFINITION */
|
|
|
+
|
|
|
+#else /* CONFIG_X86_LOCAL_APIC */
|
|
|
+
|
|
|
+# ifndef CONFIG_SMP
|
|
|
+# define hard_smp_processor_id() 0
|
|
|
+# endif
|
|
|
+
|
|
|
+#endif /* CONFIG_X86_LOCAL_APIC */
|
|
|
+
|
|
|
#ifdef CONFIG_HOTPLUG_CPU
|
|
|
extern void cpu_exit_clear(void);
|
|
|
extern void cpu_uninit(void);
|