home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / alpha / include / asm / smp.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.4 KB  |  63 lines

  1. #ifndef __ASM_SMP_H
  2. #define __ASM_SMP_H
  3.  
  4. #include <linux/threads.h>
  5. #include <linux/cpumask.h>
  6. #include <linux/bitops.h>
  7. #include <asm/pal.h>
  8.  
  9. /* HACK: Cabrio WHAMI return value is bogus if more than 8 bits used.. :-( */
  10.  
  11. static __inline__ unsigned char
  12. __hard_smp_processor_id(void)
  13. {
  14.     register unsigned char __r0 __asm__("$0");
  15.     __asm__ __volatile__(
  16.         "call_pal %1 #whami"
  17.         : "=r"(__r0)
  18.         :"i" (PAL_whami)
  19.         : "$1", "$22", "$23", "$24", "$25");
  20.     return __r0;
  21. }
  22.  
  23. #ifdef CONFIG_SMP
  24.  
  25. #include <asm/irq.h>
  26.  
  27. struct cpuinfo_alpha {
  28.     unsigned long loops_per_jiffy;
  29.     unsigned long last_asn;
  30.     int need_new_asn;
  31.     int asn_lock;
  32.     unsigned long ipi_count;
  33.     unsigned long prof_multiplier;
  34.     unsigned long prof_counter;
  35.     unsigned char mcheck_expected;
  36.     unsigned char mcheck_taken;
  37.     unsigned char mcheck_extra;
  38. } __attribute__((aligned(64)));
  39.  
  40. extern struct cpuinfo_alpha cpu_data[NR_CPUS];
  41.  
  42. #define PROC_CHANGE_PENALTY     20
  43.  
  44. #define hard_smp_processor_id()    __hard_smp_processor_id()
  45. #define raw_smp_processor_id()    (current_thread_info()->cpu)
  46.  
  47. extern int smp_num_cpus;
  48. #define cpu_possible_map    cpu_present_map
  49.  
  50. extern void arch_send_call_function_single_ipi(int cpu);
  51. extern void arch_send_call_function_ipi(cpumask_t mask);
  52.  
  53. #else /* CONFIG_SMP */
  54.  
  55. #define hard_smp_processor_id()        0
  56. #define smp_call_function_on_cpu(func,info,wait,cpu)    ({ 0; })
  57.  
  58. #endif /* CONFIG_SMP */
  59.  
  60. #define NO_PROC_ID    (-1)
  61.  
  62. #endif
  63.