smpboot.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
- #ifndef __ASM_SMPBOOT_H
- #define __ASM_SMPBOOT_H
- #ifndef clustered_apic_mode
- #ifdef CONFIG_MULTIQUAD
- #define clustered_apic_mode (1)
- #else /* !CONFIG_MULTIQUAD */
- #define clustered_apic_mode (0)
- #endif /* CONFIG_MULTIQUAD */
- #endif
-
- #ifdef CONFIG_MULTIQUAD
- #define TRAMPOLINE_LOW phys_to_virt(0x8)
- #define TRAMPOLINE_HIGH phys_to_virt(0xa)
- #else /* !CONFIG_MULTIQUAD */
- #define TRAMPOLINE_LOW phys_to_virt(0x467)
- #define TRAMPOLINE_HIGH phys_to_virt(0x469)
- #endif /* CONFIG_MULTIQUAD */
- #ifdef CONFIG_MULTIQUAD
- #define boot_cpu_apicid boot_cpu_logical_apicid
- #else /* !CONFIG_MULTIQUAD */
- #define boot_cpu_apicid boot_cpu_physical_apicid
- #endif /* CONFIG_MULTIQUAD */
- /*
- * How to map from the cpu_present_map
- */
- #ifdef CONFIG_MULTIQUAD
- #define cpu_present_to_apicid(mps_cpu) ( ((mps_cpu/4)*16) + (1<<(mps_cpu%4)) )
- #else /* !CONFIG_MULTIQUAD */
- #define cpu_present_to_apicid(apicid) (apicid)
- #endif /* CONFIG_MULTIQUAD */
- /*
- * Mappings between logical cpu number and logical / physical apicid
- * The first four macros are trivial, but it keeps the abstraction consistent
- */
- extern volatile int logical_apicid_2_cpu[];
- extern volatile int cpu_2_logical_apicid[];
- extern volatile int physical_apicid_2_cpu[];
- extern volatile int cpu_2_physical_apicid[];
- #define logical_apicid_to_cpu(apicid) logical_apicid_2_cpu[apicid]
- #define cpu_to_logical_apicid(cpu) cpu_2_logical_apicid[cpu]
- #define physical_apicid_to_cpu(apicid) physical_apicid_2_cpu[apicid]
- #define cpu_to_physical_apicid(cpu) cpu_2_physical_apicid[cpu]
- #ifdef CONFIG_MULTIQUAD /* use logical IDs to bootstrap */
- #define boot_apicid_to_cpu(apicid) logical_apicid_2_cpu[apicid]
- #define cpu_to_boot_apicid(cpu) cpu_2_logical_apicid[cpu]
- #else /* !CONFIG_MULTIQUAD */ /* use physical IDs to bootstrap */
- #define boot_apicid_to_cpu(apicid) physical_apicid_2_cpu[apicid]
- #define cpu_to_boot_apicid(cpu) cpu_2_physical_apicid[cpu]
- #endif /* CONFIG_MULTIQUAD */
- #ifdef CONFIG_MULTIQUAD
- #else /* !CONFIG_MULTIQUAD */
- #endif /* CONFIG_MULTIQUAD */
- #endif