summaryrefslogtreecommitdiff
path: root/include/asm-x86/smp.h
diff options
context:
space:
mode:
authorGlauber Costa <gcosta@redhat.com>2008-03-27 14:05:58 -0300
committerIngo Molnar <mingo@elte.hu>2008-04-17 17:41:32 +0200
commit1b00084386878f25c2c591ad19cb625880d4089d (patch)
tree86dd602eb31a10d64a1b7e07fa6ea2f272d6c25b /include/asm-x86/smp.h
parent2ba95bcbe68d692f549fb10809f15681a25ff6fb (diff)
x86: merge hard/logical_smp_processor_id
The code is now the same between i386 and x86_64. We already know what happens when it reaches this point: They go away from the arch-specific headers, and suddenly appears in the common header. Signed-off-by: Glauber Costa <gcosta@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/asm-x86/smp.h')
-rw-r--r--include/asm-x86/smp.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/include/asm-x86/smp.h b/include/asm-x86/smp.h
index ef26911dc22a..e5534f19c312 100644
--- a/include/asm-x86/smp.h
+++ b/include/asm-x86/smp.h
@@ -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);