smpboot.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #ifndef __ASM_SMPBOOT_H
  2. #define __ASM_SMPBOOT_H
  3. #ifndef clustered_apic_mode
  4.  #ifdef CONFIG_MULTIQUAD
  5.   #define clustered_apic_mode (1)
  6.  #else /* !CONFIG_MULTIQUAD */
  7.   #define clustered_apic_mode (0)
  8.  #endif /* CONFIG_MULTIQUAD */
  9. #endif 
  10.  
  11. #ifdef CONFIG_MULTIQUAD
  12.  #define TRAMPOLINE_LOW phys_to_virt(0x8)
  13.  #define TRAMPOLINE_HIGH phys_to_virt(0xa)
  14. #else /* !CONFIG_MULTIQUAD */
  15.  #define TRAMPOLINE_LOW phys_to_virt(0x467)
  16.  #define TRAMPOLINE_HIGH phys_to_virt(0x469)
  17. #endif /* CONFIG_MULTIQUAD */
  18. #ifdef CONFIG_MULTIQUAD
  19.  #define boot_cpu_apicid boot_cpu_logical_apicid
  20. #else /* !CONFIG_MULTIQUAD */
  21.  #define boot_cpu_apicid boot_cpu_physical_apicid
  22. #endif /* CONFIG_MULTIQUAD */
  23. /*
  24.  * How to map from the cpu_present_map
  25.  */
  26. #ifdef CONFIG_MULTIQUAD
  27.  #define cpu_present_to_apicid(mps_cpu) ( ((mps_cpu/4)*16) + (1<<(mps_cpu%4)) )
  28. #else /* !CONFIG_MULTIQUAD */
  29.  #define cpu_present_to_apicid(apicid) (apicid)
  30. #endif /* CONFIG_MULTIQUAD */
  31. /*
  32.  * Mappings between logical cpu number and logical / physical apicid
  33.  * The first four macros are trivial, but it keeps the abstraction consistent
  34.  */
  35. extern volatile int logical_apicid_2_cpu[];
  36. extern volatile int cpu_2_logical_apicid[];
  37. extern volatile int physical_apicid_2_cpu[];
  38. extern volatile int cpu_2_physical_apicid[];
  39. #define logical_apicid_to_cpu(apicid) logical_apicid_2_cpu[apicid]
  40. #define cpu_to_logical_apicid(cpu) cpu_2_logical_apicid[cpu]
  41. #define physical_apicid_to_cpu(apicid) physical_apicid_2_cpu[apicid]
  42. #define cpu_to_physical_apicid(cpu) cpu_2_physical_apicid[cpu]
  43. #ifdef CONFIG_MULTIQUAD /* use logical IDs to bootstrap */
  44. #define boot_apicid_to_cpu(apicid) logical_apicid_2_cpu[apicid]
  45. #define cpu_to_boot_apicid(cpu) cpu_2_logical_apicid[cpu]
  46. #else /* !CONFIG_MULTIQUAD */ /* use physical IDs to bootstrap */
  47. #define boot_apicid_to_cpu(apicid) physical_apicid_2_cpu[apicid]
  48. #define cpu_to_boot_apicid(cpu) cpu_2_physical_apicid[cpu]
  49. #endif /* CONFIG_MULTIQUAD */
  50. #ifdef CONFIG_MULTIQUAD
  51. #else /* !CONFIG_MULTIQUAD */
  52. #endif /* CONFIG_MULTIQUAD */
  53. #endif