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.

221 lines
4.8 KiB

  1. /* title "IA64 Hal static data"
  2. ;++
  3. ;
  4. ; Copyright (c) 1998 Intel Corporation
  5. ;
  6. ; Module Name:
  7. ;
  8. ; i64dat.c (derived from nthals\halx86\ixdat.c)
  9. ;
  10. ; Abstract:
  11. ;
  12. ; Declares various INIT or pagable data
  13. ;
  14. ; Author:
  15. ;
  16. ; Todd Kjos (v-tkjos) 5-Mar-1998
  17. ;
  18. ; Environment:
  19. ;
  20. ; Kernel mode only.
  21. ;
  22. ; Revision History:
  23. ;
  24. ;--
  25. */
  26. #include "halp.h"
  27. #include "pci.h"
  28. #include "pcip.h"
  29. #include "iosapic.h"
  30. #ifdef ALLOC_DATA_PRAGMA
  31. #pragma data_seg("INIT")
  32. #endif
  33. //
  34. // The following data is only valid during system initialiation
  35. // and the memory will be re-claimed by the system afterwards
  36. //
  37. ADDRESS_USAGE HalpDefaultPcIoSpace = {
  38. NULL, CmResourceTypePort, InternalUsage,
  39. {
  40. 0x000, 0x10, // ISA DMA
  41. 0x0C0, 0x10, // ISA DMA
  42. 0x080, 0x10, // DMA
  43. 0x020, 0x2, // PIC
  44. 0x0A0, 0x2, // Cascaded PIC
  45. 0x040, 0x4, // Timer1, Referesh, Speaker, Control Word
  46. 0x048, 0x4, // Timer2, Failsafe
  47. 0x092, 0x1, // system control port A
  48. 0x070, 0x2, // Cmos/NMI enable
  49. 0x0F0, 0x10, // coprocessor ports
  50. 0xCF8, 0x8, // PCI Config Space Access Pair
  51. 0,0
  52. }
  53. };
  54. ADDRESS_USAGE HalpEisaIoSpace = {
  55. NULL, CmResourceTypePort, InternalUsage,
  56. {
  57. 0x0D0, 0x10, // DMA
  58. 0x400, 0x10, // DMA
  59. 0x480, 0x10, // DMA
  60. 0x4C2, 0xE, // DMA
  61. 0x4D4, 0x2C, // DMA
  62. 0x461, 0x2, // Extended NMI
  63. 0x464, 0x2, // Last Eisa Bus Muster granted
  64. 0x4D0, 0x2, // edge/level control registers
  65. 0xC84, 0x1, // System board enable
  66. 0, 0
  67. }
  68. };
  69. ADDRESS_USAGE HalpImcrIoSpace = {
  70. NULL, CmResourceTypeMemory, InternalUsage,
  71. {
  72. 0x022, 0x02, // ICMR ports
  73. 0, 0
  74. }
  75. };
  76. //
  77. // From usage.c
  78. //
  79. WCHAR HalpSzSystem[] = L"\\Registry\\Machine\\Hardware\\Description\\System";
  80. WCHAR HalpSzSerialNumber[] = L"Serial Number";
  81. ADDRESS_USAGE *HalpAddressUsageList;
  82. IDTUsage HalpIDTUsage[MAXIMUM_IDTVECTOR+1];
  83. //
  84. // From ixpcibus.c
  85. //
  86. WCHAR rgzMultiFunctionAdapter[] = L"\\Registry\\Machine\\Hardware\\Description\\System\\MultifunctionAdapter";
  87. WCHAR rgzConfigurationData[] = L"Configuration Data";
  88. WCHAR rgzIdentifier[] = L"Identifier";
  89. WCHAR rgzPCIIndetifier[] = L"PCI";
  90. WCHAR rgzPCICardList[] = L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\PnP\\PCI\\CardList";
  91. //
  92. // From ixpcibrd.c
  93. //
  94. WCHAR rgzReservedResources[] = L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\SystemResources\\ReservedResources";
  95. //
  96. // From ixinfo.c
  97. //
  98. WCHAR rgzSuspendCallbackName[] = L"\\Callback\\SuspendHibernateSystem";
  99. //
  100. // Strings used for boot.ini options
  101. // from mphal.c
  102. //
  103. UCHAR HalpSzBreak[] = "BREAK";
  104. UCHAR HalpSzOneCpu[] = "ONECPU";
  105. UCHAR HalpSzPciLock[] = "PCILOCK";
  106. UCHAR HalpSzTimerRes[] = "TIMERES";
  107. UCHAR HalpGenuineIntel[]= "GenuineIntel";
  108. UCHAR HalpSzInterruptAffinity[]= "INTAFFINITY";
  109. UCHAR HalpSzForceClusterMode[]= "MAXPROCSPERCLUSTER";
  110. //
  111. // From ixcmos.asm
  112. //
  113. UCHAR HalpSerialLen;
  114. UCHAR HalpSerialNumber[31];
  115. //
  116. // From mpaddr.c
  117. //
  118. USHORT HalpIoCompatibleRangeList0[] = {
  119. 0x0100, 0x03ff, 0x0500, 0x07FF, 0x0900, 0x0BFF, 0x0D00, 0x0FFF,
  120. 0, 0
  121. };
  122. USHORT HalpIoCompatibleRangeList1[] = {
  123. 0x03B0, 0x03BB, 0x03C0, 0x03DF, 0x07B0, 0x07BB, 0x07C0, 0x07DF,
  124. 0x0BB0, 0x0BBB, 0x0BC0, 0x0BDF, 0x0FB0, 0x0FBB, 0x0FC0, 0x0FDF,
  125. 0, 0
  126. };
  127. //
  128. // Error messages
  129. //
  130. UCHAR rgzNoMpsTable[] = "HAL: No MPS Table Found\n";
  131. UCHAR rgzNoApic[] = "HAL: No IO SAPIC Found\n";
  132. UCHAR rgzBadApicVersion[] = "HAL: Bad SAPIC Version\n";
  133. UCHAR rgzApicNotVerified[] = "HAL: IO SAPIC not verified\n";
  134. UCHAR rgzRTCNotFound[] = "HAL: No RTC device interrupt\n";
  135. //
  136. // From ixmca.c
  137. //
  138. UCHAR MsgCMCPending[] = MSG_CMC_PENDING;
  139. UCHAR MsgCPEPending[] = MSG_CPE_PENDING;
  140. WCHAR rgzSessionManager[] = L"Session Manager";
  141. WCHAR rgzEnableMCA[] = L"EnableMCA";
  142. WCHAR rgzEnableCMC[] = L"EnableCMC";
  143. WCHAR rgzEnableCPE[] = L"EnableCPE";
  144. WCHAR rgzNoMCABugCheck[] = L"NoMCABugCheck";
  145. WCHAR rgzEnableMCEOemDrivers[] = L"EnableMCEOemDrivers";
  146. #ifdef ALLOC_DATA_PRAGMA
  147. #pragma data_seg()
  148. #endif
  149. ULONG HalpFeatureBits = HALP_FEATURE_INIT;
  150. volatile BOOLEAN HalpHiberInProgress = FALSE;
  151. //
  152. // Stuff that we only need while we
  153. // sleep or hibernate.
  154. //
  155. #ifdef notyet
  156. MOTHERBOARD_CONTEXT HalpMotherboardState = {0};
  157. #endif //notyet
  158. //
  159. // PAGELK handle
  160. //
  161. PVOID HalpSleepPageLock = NULL;
  162. USHORT HalpPciIrqMask = 0;
  163. USHORT HalpEisaIrqMask = 0;
  164. USHORT HalpEisaIrqIgnore = 0x1000;
  165. PULONG_PTR *HalEOITable[HAL_MAXIMUM_PROCESSOR];
  166. PROCESSOR_INFO HalpProcessorInfo[HAL_MAXIMUM_PROCESSOR];
  167. //
  168. // HAL private Mask of all of the active processors.
  169. //
  170. // The specific processors bits are based on their _KPCR.Number values.
  171. KAFFINITY HalpActiveProcessors;