Windows NT 4.0 source code leak
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.

141 lines
7.9 KiB

4 years ago
  1. //#pragma comment(exestr, "$Header: /usr4/winnt/SOURCES/ddk35/src/hal/halsni/mips/RCS/minidef.h,v 1.2 1994/11/09 07:54:26 holli Exp $")
  2. /*+++
  3. Copyright (c) 1993-1994 Siemens Nixdorf Informationssysteme AG
  4. Module Name:
  5. MINIdef.h
  6. Abstract:
  7. This file describes hardware addresses
  8. for SNI Minitower and RM400-Tower which are not common
  9. to all SNI machines.
  10. ---*/
  11. #ifndef _MINIDEF_
  12. #define _MINIDEF_
  13. //
  14. // define various masks for the interrupt sources register
  15. //
  16. /*
  17. The interrupt Source Register on an MiniTower has the following bits:
  18. 7 6 5 4 3 2 1 0
  19. +-------------------------------+
  20. | 1 | 0 | 1 | 0 | 0 | x | 0 | 0 | 0 Low Activ; 1 High activ; x not connected
  21. +-------------------------------+
  22. |________ EISA/ ISA Interrupt (HalpEisaDispatch)
  23. |____________ SCSI Interrupt (SCSI Driver)
  24. |________________ EIP Interrupt (RM400 Tower Only/ Unused on Minitower)
  25. |____________________ Timer 0 (HalpClockInterrupt1 on MULTI)
  26. |________________________ Timer 1 (unused)
  27. |____________________________ Ethernet (Net driver)
  28. |________________________________ Push Button/Timeouts (HalpInt0Dispatch or HalpInt1Dispatch)
  29. |____________________________________ Irq 9 (unused)
  30. The second source for Interrupt Information is the MachineStatusRegister, which has the following bits:
  31. 7 6 5 4 3 2 1 0
  32. +-------------------------------+
  33. | x | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 Low Activ; 1 High activ; x not connected
  34. +-------------------------------+
  35. |________ ColdStart (unused)
  36. |____________ OverTemperature Int. (dismiss only / unused on Tower)
  37. |________________ EIP Interrupt (RM400 Tower Only/ unused on Minitower)
  38. |____________________ Timer 1 (unused)
  39. |________________________ Timer 0 (HalpClockInterrupt1 on MULTI)
  40. |____________________________ PushButton (HalpInt0Dispatch or HalpInt1Dispatch)
  41. |________________________________ Timeouts (HalpInt0Dispatch or HalpInt1Dispatch)
  42. |____________________________________ not connected (unused)
  43. */
  44. #define RM400_EISA_MASK 0x01 // these are the interrupts from the Eisa PC core
  45. #define RM400_SCSI_MASK 0x02
  46. #define RM400_SCSI_EISA_MASK 0x03
  47. #define RM400_NET_MASK 0x20
  48. #define RM400_PB_MASK 0x40
  49. #define RM400_MSR_TEMP_MASK 0x02 // OverTemperature Interrupt in the MSR (RM400MT only) (high active)
  50. #define RM400_MSR_EIP_MASK 0x04 // EIP Interrupt in the MSR (RM400 Tower only) (low active)
  51. #define RM400_MSR_TIMER0_MASK 0x10 // Timer 0 Interrupt in the MachineStatusRegister (low active)
  52. #define RM400_MSR_TIMER1_MASK 0x08 // Timer 1 Interrupt in the MachineStatusRegister (low active)
  53. #define RM400_MSR_PB_MASK 0x20 // PushButton is also reported in the MachineStatusRegister (low actice)
  54. #define RM400_MSR_TIMEOUT_MASK 0x40 // Timeout's are indicated in the MachineStatusRegister (low active)
  55. #define RM400_INTERRUPT_MASK 0x5f
  56. #define RM400_MSR_MASK 0xfc // 11111100 -> xor gives High active bits
  57. #define RM400_TOWER_EISA_MASK 0x01
  58. #define RM400_TOWER_SCSI_MASK 0x02
  59. #define RM400_TOWER_SCSI_EISA_MASK 0x03
  60. #define RM400_TOWER_EIP_MASK 0x04 // this is the famous EIP Interrupt ... (tower only)
  61. #define RM400_TOWER_NET_MASK 0x20
  62. #define RM400_TOWER_PB_MASK 0x40
  63. #define RM400_TOWER_TIMEOUT_MASK 0x40
  64. #define RM400_TOWER_INTERRUPT_MASK 0x5f
  65. #define RM400_ONBOARD_CONTROL_PHYSICAL_BASE EISA_CONTROL_PHYSICAL_BASE
  66. #define RM400_ONBOARD_MEMORY_PHYSICAL_BASE EISA_MEMORY_PHYSICAL_BASE
  67. #define RM400_ONBOARD_IO (ONBOARD_CONTROL_PHYSICAL_BASE | KSEG1_BASE)
  68. #define RM400_ONBOARD_MEMORY (ONBOARD_MEMORY_PHYSICAL_BASE | KSEG1_BASE)
  69. //
  70. // SNI ASIC registers
  71. //
  72. #define RM400_INTERRUPT_ACK_PHYSICAL_BASE 0x1c000000 // physical base of interrupt (ext. request) register
  73. #define RM400_INTERRUPT_ACK_REGISTER 0xbc000000 // physical base | KSEG1_BASE
  74. #define RM400_EISA_INT_ACK_PHYSICAL_BASE 0x1a000000 // physical base of EISA interrupt ack for the chipset
  75. #define RM400_EISA_INT_ACK_REGISTER 0xba000000 // physical base | KSEG1_BASE
  76. #define RM400_ONBOARD_INT_ACK_PHYSICAL_BASE RM400_EISA_INT_ACK_PHYSICAL_BASE // physical base of EISA interrupt ack for the chipset
  77. #define RM400_ONBOARD_INT_ACK_REGISTER RM400_EISA_INT_ACK_REGISTER // physical base | KSEG1_BASE
  78. #define RM400_INTERRUPT_SOURCE_PHYSICAL_BASE 0x1c020000 // physical base of interrupt source register
  79. #define RM400_INTERRUPT_SOURCE_REGISTER 0xbc020000 // physical base | KSEG1_BASE
  80. #define RM400_VESA_MAP_PHYSICAL_BASE 0x1c010000 // physical base of VLB map register
  81. #define RM400_VESA_MAP 0xbc010000 // physical base | KSEG1_BASE
  82. #define RM400_ISA_MAP_PHYSICAL_BASE 0x1c0e0000 // physical base of ISA map register (for BusMaster Devices)
  83. #define RM400_ISA_MAP 0xbc0e0000 // physical base | KSEG1_BASE
  84. #define RM400_LED_PHYSICAL_ADDR 0x1c090000 // LED Register physical
  85. #define RM400_LED_ADDR 0xbc090000 // LED Register | KSEG1_BASE
  86. #define RM400_MCR_PHYSICAL_ADDR 0x1c0b0000 // MachineConfigRegister
  87. #define RM400_MCR_ADDR 0xbc0b0000 // MachineConfigRegister | KSEG1
  88. #define RM400_MSR_PHYSICAL_ADDR 0x1c0a0000 // machine status register
  89. #define RM400_MSR_ADDR 0xbc0a0000 // machine status register | KSEG1
  90. //
  91. // System Timer (i82C54) and RealTimeClock Chip on RM400-10 and Minitower
  92. //
  93. #define RM400_TIMER0_MASK 0x10
  94. #define RM400_TIMER1_MASK 0x08
  95. #define RM400_TIMER_MASK 0x18 // Timer0 and Timer1
  96. #define RM400_EXTRA_TIMER_PHYSICAL_ADDR 0x1c040000 // physical base of Timer for system Clock
  97. #define RM400_EXTRA_TIMER_ADDR 0xbc040000 // Timer for system Clock |KSEG1_BASE
  98. #define RM400_TIMER0_ACK_ADDR 0xbc050000 // reset Timer0 Interrupt |KSEG1_BASE
  99. #define RM400_TIMER1_ACK_ADDR 0xbc060000 // reset Timer1 Interrupt |KSEG1_BASE
  100. #define RM400_NVRAM_PHYSICAL_BASE 0x1c080000 // physical base of nonvolatile RAM and RTC
  101. #define RM400_REAL_TIME_CLOCK_ADDRESS 0x1c080000 // physical base of RTC
  102. #define RM400_REAL_TIME_CLOCK 0xbc080000 // physical base of RTC | KSEG1_BASE
  103. #define RM400_RESET_DBG_BUT 0xbc0f0000 // reset debugger int | KSEG1_BASE
  104. #define RM400_RESET_TEMPBAT_INTR 0xbc0f0000 // reset Temperature/Battery int | KSEG1
  105. //
  106. // RM400 Tower (M8032)
  107. // specific Addresses
  108. //
  109. #define RM400_TOWER_INTERRUPT_SOURCE_PHYSICAL_BASE 0x1c010000 // physical base of interrupt source register
  110. #define RM400_TOWER_INTERRUPT_SOURCE_REGISTER 0xbc010000 // physical base | KSEG1_BASE
  111. #define RM400_TOWER_VESA0_MAP_PHYSICAL_BASE 0x1c0c0000 // physical base of Vesa Slot 0 map register
  112. #define RM400_TOWER_VESA0_MAP 0xbc0c0000 // physical base | KSEG1_BASE
  113. #define RM400_TOWER_VESA1_MAP_PHYSICAL_BASE 0x1c0d0000 // physical base of Vesa Slot 1 map register
  114. #define RM400_TOWER_VESA1_MAP 0xbc0d0000 // physical base | KSEG1_BASE
  115. #endif // _MINIDEF_