smp.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * BK Id: SCCS/s.smp.h 1.14 03/28/02 16:54:23 hozer
  3.  */
  4. /* smp.h: PPC specific SMP stuff.
  5.  *
  6.  * Original was a copy of sparc smp.h.  Now heavily modified
  7.  * for PPC.
  8.  *
  9.  * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
  10.  * Copyright (C) 1996-2001 Cort Dougan <cort@fsmlabs.com>
  11.  */
  12. #ifdef __KERNEL__
  13. #ifndef _PPC_SMP_H
  14. #define _PPC_SMP_H
  15. #include <linux/config.h>
  16. #include <linux/kernel.h>
  17. #ifdef CONFIG_SMP
  18. #ifndef __ASSEMBLY__
  19. struct cpuinfo_PPC {
  20. unsigned long loops_per_jiffy;
  21. unsigned long pvr;
  22. unsigned long *pgd_cache;
  23. unsigned long *pte_cache;
  24. unsigned long pgtable_cache_sz;
  25. };
  26. extern struct cpuinfo_PPC cpu_data[NR_CPUS];
  27. extern unsigned long cpu_online_map;
  28. extern unsigned long smp_proc_in_lock[NR_CPUS];
  29. extern volatile unsigned long cpu_callin_map[NR_CPUS];
  30. extern int smp_tb_synchronized;
  31. extern void smp_store_cpu_info(int id);
  32. extern void smp_send_tlb_invalidate(int);
  33. extern void smp_send_xmon_break(int cpu);
  34. struct pt_regs;
  35. extern void smp_message_recv(int, struct pt_regs *);
  36. extern void smp_local_timer_interrupt(struct pt_regs *);
  37. #define NO_PROC_ID 0xFF            /* No processor magic marker */
  38. #define PROC_CHANGE_PENALTY 20
  39. /* 1 to 1 mapping on PPC -- Cort */
  40. #define cpu_logical_map(cpu) (cpu)
  41. #define cpu_number_map(x) (x)
  42. #define smp_processor_id() (current->processor)
  43. extern int smp_hw_index[NR_CPUS];
  44. #define hard_smp_processor_id() (smp_hw_index[smp_processor_id()])
  45. struct klock_info_struct {
  46. unsigned long kernel_flag;
  47. unsigned char akp;
  48. };
  49. extern struct klock_info_struct klock_info;
  50. #define KLOCK_HELD       0xffffffff
  51. #define KLOCK_CLEAR      0x0
  52. #ifdef CONFIG_750_SMP
  53. #define smp_send_tlb_invalidate(x) smp_ppc750_send_tlb_invalidate(x)
  54. #else
  55. #define smp_send_tlb_invalidate(x) do {} while(0)
  56. #endif
  57. #endif /* __ASSEMBLY__ */
  58. #else /* !(CONFIG_SMP) */
  59. #endif /* !(CONFIG_SMP) */
  60. #endif /* !(_PPC_SMP_H) */
  61. #endif /* __KERNEL__ */