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

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* 
  2.  * smp.h: PPC64 specific SMP code.
  3.  *
  4.  * Original was a copy of sparc smp.h.  Now heavily modified
  5.  * for PPC.
  6.  *
  7.  * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
  8.  * Copyright (C) 1996-2001 Cort Dougan <cort@fsmlabs.com>
  9.  *
  10.  * This program is free software; you can redistribute it and/or
  11.  * modify it under the terms of the GNU General Public License
  12.  * as published by the Free Software Foundation; either version
  13.  * 2 of the License, or (at your option) any later version.
  14.  */
  15. #ifdef __KERNEL__
  16. #ifndef _PPC64_SMP_H
  17. #define _PPC64_SMP_H
  18. #include <linux/config.h>
  19. #include <linux/kernel.h>
  20. #ifdef CONFIG_SMP
  21. #ifndef __ASSEMBLY__
  22. #include <asm/paca.h>
  23. struct current_set_struct {
  24. struct task_struct *task;
  25. unsigned long *sp_real;
  26. };
  27. extern unsigned long cpu_online_map;
  28. extern void smp_message_pass(int target, int msg, unsigned long data, int wait);
  29. extern void smp_store_cpu_info(int id);
  30. extern void smp_send_tlb_invalidate(int);
  31. extern void smp_send_xmon_break(int cpu);
  32. struct pt_regs;
  33. extern void smp_message_recv(int, struct pt_regs *);
  34. #define NO_PROC_ID 0xFF            /* No processor magic marker */
  35. #define PROC_CHANGE_PENALTY 20
  36. /* 1 to 1 mapping on PPC -- Cort */
  37. #define cpu_logical_map(cpu) (cpu)
  38. #define cpu_number_map(x) (x)
  39. extern volatile unsigned long cpu_callin_map[NR_CPUS];
  40. #define smp_processor_id() (get_paca()->xPacaIndex)
  41. #define hard_smp_processor_id() (get_paca()->xHwProcNum)
  42. #define get_hard_smp_processor_id(CPU) (paca[(CPU)].xHwProcNum)
  43. /* Since OpenPIC has only 4 IPIs, we use slightly different message numbers.
  44.  *
  45.  * Make sure this matches openpic_request_IPIs in open_pic.c, or what shows up
  46.  * in /proc/interrupts will be wrong!!! --Troy */
  47. #define PPC_MSG_CALL_FUNCTION   0
  48. #define PPC_MSG_RESCHEDULE      1
  49. #define PPC_MSG_INVALIDATE_TLB  2
  50. #define PPC_MSG_XMON_BREAK      3
  51. void smp_init_iSeries(void);
  52. void smp_init_pSeries(void);
  53. #endif /* __ASSEMBLY__ */
  54. #endif /* !(CONFIG_SMP) */
  55. #endif /* !(_PPC64_SMP_H) */
  56. #endif /* __KERNEL__ */