]> err.no Git - linux-2.6/blobdiff - include/asm-x86/smp.h
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/juhl/trivial
[linux-2.6] / include / asm-x86 / smp.h
index 57b3d86dd9edb5ca3d505522ae2296b941a9bace..62ebdec394b96866d59f2d74e843721e9af052cf 100644 (file)
 #include <asm/thread_info.h>
 
 extern cpumask_t cpu_callout_map;
+extern cpumask_t cpu_initialized;
+extern cpumask_t cpu_callin_map;
+
+extern void (*mtrr_hook)(void);
+extern void zap_low_mappings(void);
 
 extern int smp_num_siblings;
 extern unsigned int num_processors;
 extern cpumask_t cpu_initialized;
 
+#ifdef CONFIG_SMP
 extern u16 x86_cpu_to_apicid_init[];
 extern u16 x86_bios_cpu_apicid_init[];
 extern void *x86_cpu_to_apicid_early_ptr;
 extern void *x86_bios_cpu_apicid_early_ptr;
+#else
+#define x86_cpu_to_apicid_early_ptr NULL
+#define x86_bios_cpu_apicid_early_ptr NULL
+#endif
 
 DECLARE_PER_CPU(cpumask_t, cpu_sibling_map);
 DECLARE_PER_CPU(cpumask_t, cpu_core_map);
@@ -35,22 +45,12 @@ DECLARE_PER_CPU(u16, cpu_llc_id);
 DECLARE_PER_CPU(u16, x86_cpu_to_apicid);
 DECLARE_PER_CPU(u16, x86_bios_cpu_apicid);
 
-/*
- * Trampoline 80x86 program as an array.
- */
-extern const unsigned char trampoline_data [];
-extern const unsigned char trampoline_end  [];
-extern unsigned char *trampoline_base;
-
 /* Static state in head.S used to set up a CPU */
 extern struct {
        void *sp;
        unsigned short ss;
 } stack_start;
 
-extern unsigned long init_rsp;
-extern unsigned long initial_code;
-
 struct smp_ops {
        void (*smp_prepare_boot_cpu)(void);
        void (*smp_prepare_cpus)(unsigned max_cpus);
@@ -118,12 +118,8 @@ int native_cpu_up(unsigned int cpunum);
 extern int __cpu_disable(void);
 extern void __cpu_die(unsigned int cpu);
 
-extern unsigned disabled_cpus;
 extern void prefill_possible_map(void);
 
-#define SMP_TRAMPOLINE_BASE 0x6000
-extern unsigned long setup_trampoline(void);
-
 void smp_store_cpu_info(int id);
 #define cpu_physical_id(cpu)   per_cpu(x86_cpu_to_apicid, cpu)
 
@@ -134,6 +130,8 @@ static inline int num_booting_cpus(void)
 }
 #endif /* CONFIG_SMP */
 
+extern unsigned disabled_cpus __cpuinitdata;
+
 #ifdef CONFIG_X86_32_SMP
 /*
  * This function is needed by all SMP systems. It must _always_ be valid
@@ -161,12 +159,6 @@ extern int safe_smp_processor_id(void);
 #define stack_smp_processor_id()       0
 #endif
 
-#ifdef CONFIG_X86_32
-# include "smp_32.h"
-#else
-# include "smp_64.h"
-#endif
-
 #ifdef CONFIG_X86_LOCAL_APIC
 
 static inline int logical_smp_processor_id(void)
@@ -175,6 +167,16 @@ static inline int logical_smp_processor_id(void)
        return GET_APIC_LOGICAL_ID(*(u32 *)(APIC_BASE + APIC_LDR));
 }
 
+#ifndef CONFIG_X86_64
+static inline unsigned int read_apic_id(void)
+{
+       return *(u32 *)(APIC_BASE + APIC_ID);
+}
+#else
+extern unsigned int read_apic_id(void);
+#endif
+
+
 # ifdef APIC_DEFINITION
 extern int hard_smp_processor_id(void);
 # else
@@ -182,7 +184,7 @@ extern int hard_smp_processor_id(void);
 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));
+       return GET_APIC_ID(read_apic_id());
 }
 # endif /* APIC_DEFINITION */