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

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * BK Id: %F% %I% %G% %U% %#%
  3.  */
  4. /*
  5.  *  arch/ppc/kernel/open_pic.h -- OpenPIC Interrupt Handling
  6.  *
  7.  *  Copyright (C) 1997 Geert Uytterhoeven
  8.  *
  9.  *  This file is subject to the terms and conditions of the GNU General Public
  10.  *  License.  See the file COPYING in the main directory of this archive
  11.  *  for more details.
  12.  *  
  13.  */
  14. #ifndef _PPC_KERNEL_OPEN_PIC_H
  15. #define _PPC_KERNEL_OPEN_PIC_H
  16. #include <linux/config.h>
  17. #include <linux/irq.h>
  18. #define OPENPIC_SIZE 0x40000
  19. /*
  20.  *  Non-offset'ed vector numbers
  21.  */
  22. #define OPENPIC_VEC_TIMER 64 /* and up */
  23. #define OPENPIC_VEC_IPI 72 /* and up */
  24. #define OPENPIC_VEC_SPURIOUS 127
  25. /* OpenPIC IRQ controller structure */
  26. extern struct hw_interrupt_type open_pic;
  27. /* OpenPIC IPI controller structure */
  28. #ifdef CONFIG_SMP
  29. extern struct hw_interrupt_type open_pic_ipi;
  30. #endif /* CONFIG_SMP */
  31. extern u_int OpenPIC_NumInitSenses;
  32. extern u_char *OpenPIC_InitSenses;
  33. extern void* OpenPIC_Addr;
  34. /* Exported functions */
  35. extern void openpic_set_sources(int first_irq, int num_irqs, void *isr);
  36. extern void openpic_init(int, int, unsigned char *, int);
  37. extern u_int openpic_irq(void);
  38. extern void openpic_eoi(void);
  39. extern void openpic_request_IPIs(void);
  40. extern void do_openpic_setup_cpu(void);
  41. extern int openpic_get_irq(struct pt_regs *regs);
  42. extern void openpic_reset_processor_phys(u_int cpumask);
  43. extern void openpic_setup_ISU(int isu_num, unsigned long addr);
  44. extern void openpic_cause_IPI(u_int ipi, u_int cpumask);
  45. extern void smp_openpic_message_pass(int target, int msg, unsigned long data,
  46.      int wait);
  47. extern inline int openpic_to_irq(int irq)
  48. {
  49. /* IRQ 0 usually means 'disabled'.. don't mess with it 
  50.  * exceptions to this (sandpoint maybe?) 
  51.  * shouldn't use openpic_to_irq 
  52.  */
  53. if (irq != 0){
  54. return irq += NUM_8259_INTERRUPTS;
  55. } else {
  56. return 0;
  57. }
  58. }
  59. /*extern int open_pic_irq_offset;*/
  60. #endif /* _PPC_KERNEL_OPEN_PIC_H */