Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

218 lines
6.6 KiB

  1. /*++
  2. Copyright (c) 1993-1999 Digital Equipment Corporation
  3. Module Name:
  4. alpharef.h
  5. Abstract:
  6. This module defines the reference hardware definitions for Alpha AXP
  7. platforms. Any platform that adheres to these interfaces will be
  8. capable of running all of the common drivers.
  9. Author:
  10. Joe Notarangelo 15-Feb-1993
  11. Revision History:
  12. John DeRosa [DEC] 2-July-1993
  13. Added firmware vendor call definitions that are generic to all Alpha
  14. platforms.
  15. --*/
  16. #ifndef _ALPHAREF_
  17. #define _ALPHAREF_
  18. //
  19. // Define interesting device addresses.
  20. //
  21. #define KEYBOARD_PHYSICAL_BASE 0x60
  22. //
  23. // Define DMA device channels.
  24. //
  25. #define SCSI_CHANNEL 0x0 // SCSI DMA channel number
  26. #define FLOPPY_CHANNEL 0x2 // Floppy DMA channel
  27. #define SOUND_CHANNEL_A 0x2 // Sound DMA channel A
  28. #define SOUND_CHANNEL_B 0x3 // Sound DMA channel B
  29. //
  30. // Define the interrupt request levels.
  31. //
  32. #define FLOPPY_LEVEL 6 // The floppy
  33. #define CLOCK_LEVEL 5 // Interval clock level
  34. #define PROFILE_LEVEL 3 // Profiling level
  35. #define PCI_DEVICE_LEVEL 3 // PCI bus interrupt level
  36. #define EISA_DEVICE_LEVEL 3 // EISA bus interrupt level
  37. #define ISA_DEVICE_LEVEL 3 // ISA bus interrupt level
  38. #define DEVICE_LEVEL 3 // Generic device interrupt level
  39. #define DEVICE_LOW_LEVEL 3 // I/O device interrupt level low
  40. #define DEVICE_HIGH_LEVEL 4 // I/O device interrupt level high
  41. #define IPI_LEVEL 6 // Inter-processor interrupt level
  42. #define POWER_LEVEL 7 // Powerfail level
  43. #define EISA_NMI_LEVEL POWER_LEVEL // Eisa NMI failures
  44. #define CLOCK2_LEVEL CLOCK_LEVEL //
  45. //
  46. // Define EISA device interrupt vectors.
  47. //
  48. #define EISA_VECTORS 48
  49. //
  50. // Define the EISA interrupt request levels. Levels 1,8 and 13 are not
  51. // defined. Level 0 is also the timer. Level 2 is not assignable because
  52. // it receives the vector from the second PIC bank.
  53. //
  54. #define EISA_IRQL0_VECTOR (0 + EISA_VECTORS) // Eisa interrupt request level 0
  55. #define EISA_IRQL3_VECTOR (3 + EISA_VECTORS)
  56. #define EISA_IRQL4_VECTOR (4 + EISA_VECTORS)
  57. #define EISA_IRQL5_VECTOR (5 + EISA_VECTORS)
  58. #define EISA_IRQL6_VECTOR (6 + EISA_VECTORS)
  59. #define EISA_IRQL7_VECTOR (7 + EISA_VECTORS)
  60. #define EISA_IRQL9_VECTOR (9 + EISA_VECTORS)
  61. #define EISA_IRQL10_VECTOR (10 + EISA_VECTOR)
  62. #define EISA_IRQL11_VECTOR (11 + EISA_VECTORS)
  63. #define EISA_IRQL12_VECTOR (12 + EISA_VECTORS)
  64. #define EISA_IRQL14_VECTOR (14 + EISA_VECTORS)
  65. #define EISA_IRQL15_VECTOR (15 + EISA_VECTORS)
  66. #define MAXIMUM_EISA_VECTOR (16 + EISA_VECTORS) // maximum EISA vector
  67. //
  68. // The parallel port is at IRQL1 by default.
  69. //
  70. #define PARALLEL_VECTOR (1 + EISA_VECTORS) // Parallel device interrupt vector
  71. //
  72. // Define ISA device interrupt vectors.
  73. //
  74. #define ISA_VECTORS 48
  75. #define KEYBOARD_VECTOR 1
  76. #define MOUSE_VECTOR 12
  77. //
  78. // Define the EISA interrupt request levels. Levels 1,8 and 13 are not
  79. // defined. Level 0 is also the timer. Level 2 is not assignable because
  80. // it receives the vector from the second PIC bank.
  81. //
  82. #define ISA_IRQL0_VECTOR (0 + ISA_VECTORS)
  83. #define ISA_IRQL3_VECTOR (3 + ISA_VECTORS)
  84. #define ISA_IRQL4_VECTOR (4 + ISA_VECTORS)
  85. #define ISA_IRQL5_VECTOR (5 + ISA_VECTORS)
  86. #define ISA_IRQL6_VECTOR (6 + ISA_VECTORS)
  87. #define ISA_IRQL7_VECTOR (7 + ISA_VECTORS)
  88. #define ISA_IRQL9_VECTOR (9 + ISA_VECTORS)
  89. #define ISA_IRQL10_VECTOR (10 + ISA_VECTORS)
  90. #define ISA_IRQL11_VECTOR (11 + ISA_VECTORS)
  91. #define ISA_IRQL12_VECTOR (12 + ISA_VECTORS)
  92. #define ISA_IRQL14_VECTOR (14 + ISA_VECTORS)
  93. #define ISA_IRQL15_VECTOR (15 + ISA_VECTORS)
  94. #define MAXIMUM_ISA_VECTOR (16 + ISA_VECTORS) // maximum ISA vector
  95. //
  96. // Define PCI device interrupt vectors.
  97. //
  98. #define PCI_VECTORS 100
  99. #define MAXIMUM_PCI_VECTOR (64 + PCI_VECTORS) // maximum PCI vector
  100. //
  101. // Define I/O device interrupt level.
  102. //
  103. //
  104. // Define device interrupt vectors.
  105. //
  106. #define DEVICE_VECTORS 0 // starting builtin device vector
  107. #define PASSIVE_VECTOR (0) // Passive release vector
  108. #define APC_VECTOR (1) // APC Interrupt vector
  109. #define DISPATCH_VECTOR (2) // Dispatch Interrupt vector
  110. #define SCI_VECTOR (3 + DEVICE_VECTORS) // SCI Interrupt vector
  111. #define SERIAL_VECTOR (4 + DEVICE_VECTORS) // Serial device 1 interrupt vector
  112. #define CLOCK_VECTOR (5 + DEVICE_VECTORS) // Clock interrupt vector
  113. #define PC0_VECTOR (6 + DEVICE_VECTORS) // Performance counter 0
  114. #define EISA_NMI_VECTOR (7 + DEVICE_VECTORS) // NMI vector
  115. #define PC1_VECTOR (8 + DEVICE_VECTORS) // Performance counter 1
  116. #define IPI_VECTOR (9 + DEVICE_VECTORS) // Inter-processor interrupt
  117. #define PIC_VECTOR (10 + DEVICE_VECTORS) // Programmable Interrupt Ctrler
  118. #define PC0_SECONDARY_VECTOR (11 + DEVICE_VECTORS) // Performance counter 0
  119. #define ERROR_VECTOR (12 + DEVICE_VECTORS) // Error interrupt vector
  120. #define PC1_SECONDARY_VECTOR (13 + DEVICE_VECTORS) // Performance counter 1
  121. #define HALT_VECTOR (14 + DEVICE_VECTORS) // Halt Button interrupt vector
  122. #define PC2_VECTOR (15 + DEVICE_VECTORS) // Performance counter 2
  123. #define PC2_SECONDARY_VECTOR (16 + DEVICE_VECTORS) // Performance counter 2
  124. #define PC4_VECTOR (17 + DEVICE_VECTORS) // Performance counter 4
  125. #define PC5_VECTOR (18 + DEVICE_VECTORS) // Performance counter 5
  126. #define CORRECTABLE_VECTOR (19 + DEVICE_VECTORS) //correctable
  127. #define UNUSED_VECTOR (20 + DEVICE_VECTORS) // Highest possible builtin vector
  128. #define MAXIMUM_BUILTIN_VECTOR UNUSED_VECTOR // maximum builtin vector
  129. //
  130. // The following vectors can be used for primary processor interrupt
  131. // dispatch.
  132. //
  133. #define PRIMARY_VECTORS (20)
  134. #define PRIMARY0_VECTOR (0 + PRIMARY_VECTORS)
  135. #define PRIMARY1_VECTOR (1 + PRIMARY_VECTORS)
  136. #define PRIMARY2_VECTOR (2 + PRIMARY_VECTORS)
  137. #define PRIMARY3_VECTOR (3 + PRIMARY_VECTORS)
  138. #define PRIMARY4_VECTOR (4 + PRIMARY_VECTORS)
  139. #define PRIMARY5_VECTOR (5 + PRIMARY_VECTORS)
  140. #define PRIMARY6_VECTOR (6 + PRIMARY_VECTORS)
  141. #define PRIMARY7_VECTOR (7 + PRIMARY_VECTORS)
  142. #define PRIMARY8_VECTOR (8 + PRIMARY_VECTORS)
  143. #define PRIMARY9_VECTOR (9 + PRIMARY_VECTORS)
  144. //
  145. // Define profile intervals.
  146. //
  147. #define DEFAULT_PROFILE_COUNT 0x40000000 // ~= 20 seconds @50mhz
  148. #define DEFAULT_PROFILE_INTERVAL (10 * 500) // 500 microseconds
  149. #define MAXIMUM_PROFILE_INTERVAL (10 * 1000 * 1000) // 1 second
  150. #define MINIMUM_PROFILE_INTERVAL (10 * 40) // 40 microseconds
  151. //
  152. // Define the QVA selector bits which indicate an address is a
  153. // "QVA" - quasi-virtual address.
  154. //
  155. #define QVA_ENABLE 0xA0000000
  156. #endif // _ALPHAREF_