ioApic.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* ioApic.h - Intel IO APIC/xAPIC (Advanced PIC) */
  2. /* Copyright 1984-2002 Wind River Systems, Inc. */ 
  3. /*
  4. modification history
  5. --------------------
  6. 01e,15may02,hdn  removed ifdef for IOAPIC_DATA
  7. 01d,08mar02,hdn  added prototypes for HTT (spr 73738)
  8. 01c,26jun01,hdn  added support for Pentium4 IO xAPIC
  9. 01b,25may98,hdn  re-written
  10. 01a,30jun97,sub  written
  11. */
  12. #ifndef __INCioApich
  13. #define __INCioApich
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. /* IO APIC direct register offset */
  18. #define IOAPIC_DATA 0x10 /* IO window (data) - pc.h */ 
  19. #define IOAPIC_IRQPA 0x20 /* IRQ Pin Assertion Register */ 
  20. #define IOAPIC_EOI 0x40 /* EOI Register */ 
  21. /* IO APIC indirect register offset */
  22. #define IOAPIC_ID 0x00  /* IOAPIC ID */
  23. #define IOAPIC_VERS 0x01  /* IOAPIC Version */
  24. #define IOAPIC_ARB 0x02 /* IOAPIC Arbitration ID */
  25. #define IOAPIC_BOOT 0x03 /* IOAPIC Boot Configuration */
  26. #define IOAPIC_REDTBL 0x10  /* Redirection Table (24 * 64bit) */
  27. /* Interrupt delivery type */
  28. #define IOAPIC_DT_APIC 0x0 /* APIC serial bus */
  29. #define IOAPIC_DT_FS 0x1 /* Front side bus message*/
  30. /* Version register bits */
  31. #define IOAPIC_MRE_MASK 0x00ff0000 /* Max Red. entry mask */
  32. #define IOAPIC_PRQ 0x00008000 /* this has IRQ reg */
  33. #define IOAPIC_VERSION 0x000000ff /* version number */
  34. /* Redirection table entry number */
  35. #define MAX_REDTABLE_ENTRIES 32
  36. /* Redirection table entry bits: upper 32 bit */
  37. #define IOAPIC_DESTINATION 0xff000000
  38. /* Redirection table entry bits: lower 32 bit */
  39. #define IOAPIC_INT_MASK 0x00010000
  40. #define IOAPIC_LEVEL 0x00008000
  41. #define IOAPIC_EDGE 0x00000000
  42. #define IOAPIC_REMOTE 0x00004000
  43. #define IOAPIC_LOW 0x00002000
  44. #define IOAPIC_HIGH 0x00000000
  45. #define IOAPIC_LOGICAL 0x00000800
  46. #define IOAPIC_PHYSICAL 0x00000000
  47. #define IOAPIC_FIXED 0x00000000
  48. #define IOAPIC_LOWEST 0x00000100
  49. #define IOAPIC_SMI 0x00000200
  50. #define IOAPIC_NMI 0x00000400
  51. #define IOAPIC_INIT 0x00000500
  52. #define IOAPIC_EXTINT 0x00000700
  53. #define IOAPIC_VEC_MASK 0x000000ff
  54. #ifndef _ASMLANGUAGE
  55. /* variable declarations */
  56. IMPORT UINT32 ioApicVersion;
  57. IMPORT UINT32 ioApicRedEntries;
  58. #if defined(__STDC__) || defined(__cplusplus)
  59. IMPORT STATUS   ioApicInit       (void);
  60. IMPORT VOID     ioApicEnable     (BOOL enable);
  61. IMPORT STATUS ioApicIrqSet  (INT32 irq, INT32 apicId);
  62. IMPORT STATUS   ioApicRedGet     (INT32 irq, INT32 * pUpper32, INT32 * pLower32);
  63. IMPORT STATUS   ioApicRedSet     (INT32 irq, INT32 upper32, INT32 lower32);
  64. IMPORT INT32    ioApicGet        (UINT32 index, UINT32 data, INT32 offset);
  65. IMPORT void     ioApicSet        (UINT32 index, UINT32 data, INT32 offset, INT32 value);
  66. #else
  67. IMPORT STATUS   ioApicInit       ();
  68. IMPORT VOID     ioApicEnable     ();
  69. IMPORT STATUS ioApicIrqSet  ();
  70. IMPORT STATUS   ioApicRedGet     ();
  71. IMPORT STATUS   ioApicRedSet     ();
  72. IMPORT INT32    ioApicGet        ();
  73. IMPORT void     ioApicSet        ();
  74. #endif  /* __STDC__ */
  75. #endif /* _ASMLANGUAGE */
  76. #ifdef __cplusplus
  77. }
  78. #endif
  79. #endif /* __INCioApich */