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.

475 lines
13 KiB

4 years ago
  1. #ident "@(#) NEC r98reg.h 1.8 95/02/20 17:25:49"
  2. /*++
  3. Copyright (c) 1991-1993 Microsoft Corporation
  4. Module Name:
  5. r98reg.h
  6. Abstract:
  7. This module is the header file that structure I/O registers for the r98.
  8. Author:
  9. Revision History:
  10. --*/
  11. /*
  12. ***********************************************************************
  13. *
  14. * S001 6/10 T.Samezima
  15. *
  16. * Del Compile err
  17. *
  18. ***********************************************************************
  19. *
  20. * S002 6/10 T.Samezima
  21. *
  22. * Add I/O access macro
  23. *
  24. ***********************************************************************
  25. *
  26. * S003 7/5 T.Samezima
  27. *
  28. * Chg define miss
  29. * structure define miss
  30. ***********************************************************************
  31. *
  32. * S004 7/12 T.Samezima
  33. *
  34. * Chg structure define change
  35. *
  36. ***********************************************************************
  37. *
  38. * S005 7/14 T.Samezima
  39. *
  40. * Chg structure define change
  41. *
  42. ***********************************************************************
  43. *
  44. * S006 7/22 T.Samezima
  45. *
  46. * Add define IOB and SIC register dummy read macro
  47. * (correspondence PMC3 bug)
  48. *
  49. * S007 12/24 T.Samezima
  50. * Add define EIFR register define.
  51. *
  52. * S008 '95.1/7 T.Samezima
  53. * Add define EIF0,STS2 register define.
  54. *
  55. * S009 '95.1/11 T.Samezima
  56. * Del miss define
  57. *
  58. *
  59. */
  60. #ifndef _R98REG_
  61. #define _R98REG_
  62. //
  63. // Define PMC register structure.
  64. //
  65. typedef struct _PMC_REGISTER {
  66. ULONG Long;
  67. ULONG Fill;
  68. } PMC_REGISTER, *PPMC_REGISTER;
  69. typedef struct _PMC_LARGE_REGISTER {
  70. // Start S005
  71. ULONG High;
  72. ULONG Low;
  73. // End S005
  74. } PMC_LARGE_REGISTER, *PPMC_LARGE_REGISTER;
  75. typedef volatile struct _PMC_REGISTERS1 {
  76. // offset(H)
  77. PMC_LARGE_REGISTER IPR; // 0
  78. PMC_LARGE_REGISTER MKR; // 8
  79. PMC_LARGE_REGISTER IPRR; // 10
  80. PMC_REGISTER IPSR; // 18
  81. PMC_REGISTER MKRR; // 20
  82. PMC_REGISTER MKSR; // 28
  83. PMC_REGISTER NMIR; // 30
  84. PMC_REGISTER NMIRST; // 38
  85. PMC_REGISTER TMSR1; // 40
  86. PMC_REGISTER TMR1; // 48
  87. PMC_REGISTER TOVCT1; // 50
  88. PMC_REGISTER TMCR1; // 58
  89. PMC_REGISTER TMSR2; // 60
  90. PMC_REGISTER TMR2; // 68
  91. PMC_REGISTER TOVCT2; // 70
  92. PMC_REGISTER TMCR2; // 78
  93. PMC_REGISTER WDTSR; // 80
  94. PMC_REGISTER WDT; // 88
  95. PMC_REGISTER WDTCR; // 90
  96. PMC_REGISTER Reserved1[13]; // 98-F8
  97. PMC_REGISTER IntIR; // 100
  98. PMC_REGISTER Reserved2; // 108
  99. PMC_REGISTER TCIR; // 110
  100. PMC_REGISTER Reserved3[29]; // 118-1F8
  101. PMC_REGISTER CTAddr; // 200
  102. PMC_REGISTER CTData; // 208
  103. PMC_REGISTER CTCTL; // 210
  104. PMC_REGISTER EVCNT1H; // 218
  105. PMC_REGISTER EVCNT1L; // 220
  106. PMC_REGISTER EVCNTCR1; // 228
  107. PMC_REGISTER Reserved4[26]; // 230-2F8
  108. PMC_REGISTER CNFG; // 300
  109. PMC_REGISTER STSR; // 308
  110. PMC_REGISTER ERRRST; // 310
  111. PMC_REGISTER ERR; // 318
  112. PMC_REGISTER AERR; // 320
  113. PMC_REGISTER ERRMK; // 328
  114. PMC_REGISTER TOSR; // 330
  115. PMC_REGISTER EVCNT0H; // 338
  116. PMC_REGISTER EVCNT0L; // 340
  117. PMC_REGISTER EVCNTCR0; // 348
  118. } PMC_REGISTERS1, *PPMC_REGISTERS1;
  119. typedef volatile struct _PMC_REGISTERS2 {
  120. // offset(H)
  121. PMC_REGISTER RRMT0H; // 0
  122. PMC_REGISTER RRMT0L; // 8
  123. PMC_REGISTER RRMT1H; // 10
  124. PMC_REGISTER RRMT1L; // 18
  125. PMC_REGISTER RRMT2H; // 20
  126. PMC_REGISTER RRMT2L; // 28
  127. PMC_REGISTER RRMT3H; // 30
  128. PMC_REGISTER RRMT3L; // 38
  129. PMC_REGISTER RRMT4H; // 40
  130. PMC_REGISTER RRMT4L; // 48
  131. PMC_REGISTER RRMT5H; // 50
  132. PMC_REGISTER RRMT5L; // 58
  133. PMC_REGISTER RRMT6H; // 60
  134. PMC_REGISTER RRMT6L; // 68
  135. PMC_REGISTER RRMT7H; // 70
  136. PMC_REGISTER RRMT7L; // 78
  137. PMC_REGISTER Reserved1[2]; // 80-88
  138. PMC_REGISTER DISCON; // 90
  139. PMC_REGISTER Reserved2[3]; // 98-a8
  140. PMC_REGISTER EADRH; // b0
  141. PMC_REGISTER EADRL; // b8
  142. PMC_REGISTER Reserved3[2]; // c0-c8
  143. PMC_REGISTER RTYCNT; // d0
  144. } PMC_REGISTERS2, *PPMC_REGISTERS2;
  145. //
  146. // Define pointer to PMC registers.
  147. //
  148. #define PMC_GLOBAL_CONTROL1 ((volatile PPMC_REGISTERS1)(KSEG1_BASE | PMC_PHYSICAL_BASE1))
  149. #define PMC_GLOBAL_CONTROL2 ((volatile PPMC_REGISTERS2)(KSEG1_BASE | PMC_PHYSICAL_BASE2))
  150. /* Start S002 */
  151. #define PMC_GLOBAL_CONTROL1_OR(x) ((volatile PPMC_REGISTERS1)(KSEG1_BASE | PMC_PHYSICAL_BASE1 | (x) ))
  152. #define PMC_GLOBAL_CONTROL2_OR(x) ((volatile PPMC_REGISTERS2)(KSEG1_BASE | PMC_PHYSICAL_BASE2 | (x) ))
  153. /* End S002 */
  154. /* Start S001 */
  155. #define PMC_CONTROL1 ((volatile PPMC_REGISTERS1)((ULONG)PMC_GLOBAL_CONTROL1 | PMC_LOCAL_OFFSET))
  156. #define PMC_CONTROL2 ((volatile PPMC_REGISTERS2)((ULONG)PMC_GLOBAL_CONTROL2 | PMC_LOCAL_OFFSET))
  157. /* End S001 */
  158. /* Start S002 */
  159. #define PMC_CONTROL1_OR(x) ((volatile PPMC_REGISTERS1)((ULONG)PMC_GLOBAL_CONTROL1 | PMC_LOCAL_OFFSET | (x) ))
  160. #define PMC_CONTROL2_OR(x) ((volatile PPMC_REGISTERS2)((ULONG)PMC_GLOBAL_CONTROL2 | PMC_LOCAL_OFFSET | (x) ))
  161. /* End S002 */
  162. /* Start S006 */
  163. //
  164. // Define dummy read macro. This macro use to not lead to time out of PMC
  165. //
  166. #define IOB_DUMMY_READ READ_REGISTER_ULONG(PMC_DUMMY_READ_ADDR)
  167. #define SIC_DUMMY_READ READ_REGISTER_ULONG(PMC_DUMMY_READ_ADDR)
  168. /* End S006 */
  169. //
  170. // Define IOB register structure.
  171. //
  172. typedef struct _IOB_REGISTER {
  173. ULONG Long;
  174. ULONG Fill;
  175. } IOB_REGISTER, *PIOB_REGISTER;
  176. typedef volatile struct _IOB_REGISTERS {
  177. // offset(H)
  178. IOB_REGISTER AIMR; // 0
  179. IOB_REGISTER AII0; // 8
  180. IOB_REGISTER AII1; // 10
  181. IOB_REGISTER AII2; // 18
  182. IOB_REGISTER AII3; // 20
  183. IOB_REGISTER AISR; // 28
  184. IOB_REGISTER ITRR; // 30
  185. IOB_REGISTER ADC0; // 38
  186. IOB_REGISTER ADC1; // 40
  187. IOB_REGISTER ADC2; // 48
  188. IOB_REGISTER ADC3; // 50
  189. IOB_REGISTER AMMD; // 58
  190. IOB_REGISTER ANMD; // 60
  191. IOB_REGISTER IERR; // 68
  192. IOB_REGISTER IEMR; // 70
  193. IOB_REGISTER IEER; // 78
  194. IOB_REGISTER AMAL; // 80
  195. IOB_REGISTER AMAH; // 88
  196. IOB_REGISTER ANAL; // 90
  197. IOB_REGISTER ANAH; // 98
  198. IOB_REGISTER AMRC; // a0
  199. IOB_REGISTER ANRC; // a8
  200. IOB_REGISTER AMRT; // b0
  201. IOB_REGISTER ANMT; // b8
  202. IOB_REGISTER ANST; // c0
  203. IOB_REGISTER Reserved1[7]; // c8-f8
  204. IOB_REGISTER ADG0; // 100
  205. IOB_REGISTER ADG1; // 108
  206. IOB_REGISTER CNTD; // 110
  207. IOB_REGISTER CNTE; // 118
  208. IOB_REGISTER CABS; // 120
  209. IOB_REGISTER CAWS; // 128
  210. IOB_REGISTER CTGL; // 130
  211. IOB_REGISTER CTGH; // 138
  212. IOB_REGISTER ARMS; // 140
  213. IOB_REGISTER ARML; // 148
  214. IOB_REGISTER ARMH; // 150
  215. IOB_REGISTER Reserved2[21]; // 158-1f8
  216. IOB_REGISTER SCFR; // 200
  217. IOB_REGISTER MPER; // 208
  218. IOB_REGISTER EIMR; // 210
  219. IOB_REGISTER EIFR; // 218
  220. IOB_REGISTER Reserved3[28]; // 220-2f8
  221. // DCDW; // 300
  222. // IOB_REGISTER ATCNF; // 400
  223. } IOB_REGISTERS, *PIOB_REGISTERS;
  224. // S007 vvv
  225. //
  226. // Define EIFR register
  227. //
  228. typedef struct _EIFR_REGISTER {
  229. ULONG Reserved : 21;
  230. ULONG MPDISCN : 1;
  231. ULONG IOBERR : 1;
  232. ULONG Reserved2 : 1;
  233. ULONG EISANMI : 1;
  234. ULONG LRERR : 1;
  235. ULONG SIC1ERR : 1;
  236. ULONG SIC0ERR : 1;
  237. ULONG PMC3ERR : 1;
  238. ULONG PMC2ERR : 1;
  239. ULONG PMC1ERR : 1;
  240. ULONG PMC0ERR : 1;
  241. } EIFR_REGISTER, *PEIFR_REGISTER;
  242. // S007 ^^^
  243. //
  244. // Define pointer to IOB registers.
  245. //
  246. #define IOB_CONTROL ((volatile PIOB_REGISTERS)(KSEG1_BASE | IOB_PHYSICAL_BASE))
  247. //
  248. // Define SIC register structure.
  249. //
  250. typedef struct _SIC_REGISTER {
  251. ULONG Long;
  252. ULONG Fill;
  253. } SIC_REGISTER, *PSIC_REGISTER;
  254. typedef volatile struct _SIC_ERR_REGISTERS {
  255. // offset(H)
  256. SIC_REGISTER EIF0; // 0
  257. SIC_REGISTER EIF1; // 8
  258. SIC_REGISTER CKE0; // 10
  259. SIC_REGISTER CKE1; // 18
  260. SIC_REGISTER SECT; // 20
  261. SIC_REGISTER Reserved; // 28
  262. SIC_REGISTER STS1; // 30
  263. SIC_REGISTER STS2; // 38
  264. SIC_REGISTER RSRG; // 40
  265. } SIC_ERR_REGISTERS, *PSIC_ERR_REGISTERS;
  266. typedef volatile struct _SIC_DATA_REGISTERS {
  267. // offset(H)
  268. SIC_REGISTER DPCM; // 0
  269. SIC_REGISTER DSRG; // 8
  270. SIC_REGISTER SDLM; // 10
  271. // SIC_REGISTER Reserved[3]; // 18-28 // S009
  272. // SIC_REGISTER SDCR; // 30 // S009
  273. } SIC_DATA_REGISTERS, *PSIC_DATA_REGISTERS;
  274. // S008 vvv
  275. //
  276. // Define EIF0 register
  277. //
  278. typedef struct _EIF0_REGISTER {
  279. ULONG Reserved : 2;
  280. ULONG EXTD0MBE : 1;
  281. ULONG EXTD0SBE : 1;
  282. ULONG Reserved1 : 1;
  283. ULONG INTD0PTE : 1;
  284. ULONG INTD0MBE : 1;
  285. ULONG INTD0SBE : 1;
  286. ULONG ICEC : 1;
  287. ULONG CPEC : 1;
  288. ULONG APEC : 1;
  289. ULONG RE1C : 1;
  290. ULONG RE0C : 1;
  291. ULONG SREC : 1;
  292. ULONG RSEC : 1;
  293. ULONG DTEJ : 1;
  294. ULONG RSEJ : 1;
  295. ULONG USYC : 1;
  296. ULONG Reserved2 : 4;
  297. ULONG IRMC : 1;
  298. ULONG IRRC : 1;
  299. ULONG Reserved3 : 3;
  300. ULONG SBE : 1;
  301. ULONG DPCG : 1;
  302. ULONG APCG : 1;
  303. ULONG MPRG : 1;
  304. ULONG SWRG : 1;
  305. } EIF0_REGISTER, *PEIF0_REGISTER;
  306. //
  307. // Define STS2 register
  308. //
  309. typedef struct _STS2_REGISTER {
  310. ULONG COL0_9 : 10;
  311. ULONG COL10 : 1;
  312. ULONG LOW0_9 : 10;
  313. ULONG LOW10 : 1;
  314. ULONG Reserved : 2;
  315. ULONG RW : 1;
  316. ULONG EXTMBE0 : 1;
  317. ULONG EXTSBE0 : 1;
  318. ULONG MBE0 : 1;
  319. ULONG SBE0 : 1;
  320. ULONG SIMN : 1;
  321. ULONG ARE : 2;
  322. } STS2_REGISTER, *PSTS2_REGISTER;
  323. // S008 ^^^
  324. //
  325. // Define pointer to SIC registers.
  326. //
  327. #define SIC_ERR_CONTROL ((volatile PSIC_ERR_REGISTERS)(KSEG1_BASE | SIC_PHYSICAL_BASE | SIC_ERR_OFFSET))
  328. #define SIC_DATA_CONTROL ((volatile PSIC_DATA_REGISTERS)(KSEG1_BASE | SIC_PHYSICAL_BASE | SIC_DATA_OFFSET))
  329. /* Start S002 */
  330. #define SIC_ERR_CONTROL_OR(x) ((volatile PSIC_ERR_REGISTERS)(KSEG1_BASE | SIC_PHYSICAL_BASE | SIC_ERR_OFFSET | (x) ))
  331. #define SIC_DATA_CONTROL_OR(x) ((volatile PSIC_DATA_REGISTERS)(KSEG1_BASE | SIC_PHYSICAL_BASE | SIC_DATA_OFFSET | (x) ))
  332. /* End S002 */
  333. //
  334. // Define LR4360 register structure.
  335. //
  336. typedef volatile struct _LR_REGISTERS1 {
  337. /* Start S004 */
  338. // offset(H)
  339. ULONG RSTC; // 0x0
  340. ULONG DPRC; // 0x4
  341. ULONG Reserved[1024]; // 0x8-0x1004
  342. ULONG ERRS; // 0x1008
  343. /* End S004 */
  344. } LR_REGISTERS1, *PLR_REGISTERS1;
  345. typedef volatile struct _LR_REGISTERS2 {
  346. // offset(H)
  347. ULONG iRPo; // 0
  348. ULONG iRED; // 4
  349. ULONG iRRE; // 8
  350. ULONG iREN; // c
  351. ULONG iRSF; // 10
  352. ULONG iPoE; // 14
  353. ULONG Reserved0[2]; // 18-1c
  354. ULONG iFGE; // 20
  355. ULONG iFGi; // 24
  356. ULONG iRCS0; // 28
  357. ULONG iRCS1; // 2c
  358. } LR_REGISTERS2, *PLR_REGISTERS2;
  359. typedef volatile struct _LR_PCI_DEVICE_REGISTERS {
  360. // offset(H)
  361. ULONG PTBAR0; // 0
  362. ULONG PTBAR1; // 4
  363. ULONG PTBAR2; // 8
  364. ULONG PTBAR3; // c
  365. ULONG PTBAR4; // 10
  366. ULONG PTBAR5; // 14
  367. ULONG PTBAR6; // 18
  368. ULONG PTBAR7; // 1c
  369. ULONG PTSZR; // 20
  370. ULONG TPASZR; // 24
  371. ULONG TFLR; // 28
  372. ULONG PABAR; // 2c
  373. ULONG AEAR; // 30
  374. ULONG PEAR; // 34
  375. } LR_PCI_DEVICE_REGISTERS, *PLR_PCI_DEVICE_REGISTERS;
  376. //
  377. // Define Bbus LR4360 DMA channel register structure.
  378. //
  379. typedef struct _DMA_CHANNEL { // offset(H)
  380. ULONG CnCF; // 0
  381. ULONG CnDF; // 4
  382. ULONG CnDC; // 8
  383. ULONG Reserved1; // c
  384. ULONG CnMA; // 10
  385. ULONG CnBC; // 14
  386. ULONG CnAK; // 18
  387. ULONG CnFA; // 1c
  388. ULONG CnCA; // 20
  389. } DMA_CHANNEL, *PDMA_CHANNEL;
  390. //
  391. // Define Device Channel # DMA Configuration register (CnDF register)
  392. //
  393. typedef struct _LR_DMA_CONFIG {
  394. ULONG SWAP :1;
  395. ULONG ASET :1;
  396. ULONG ACKP :1;
  397. ULONG REQP :1;
  398. ULONG EOPCF :2;
  399. ULONG EOPHO :1;
  400. ULONG BUOFF :1;
  401. ULONG EDEDE :1;
  402. ULONG EXEDi :1;
  403. ULONG iNEDE :1;
  404. ULONG iNEDi :1;
  405. ULONG CPUTi :1;
  406. ULONG Reserved1 :3;
  407. ULONG TMODE :2;
  408. ULONG Reserved2 :14;
  409. } LR_DMA_CONFIG,*PLR_DMA_CONFIG;
  410. //
  411. // Define Device Channel # DMA Control register (CnDC register)
  412. //
  413. typedef struct _LR_DMA_CONTROL {
  414. ULONG REQiE :1;
  415. ULONG REQii :1;
  416. ULONG REQWE :1;
  417. ULONG REQiS :1;
  418. ULONG MEMWT :1;
  419. ULONG MEMWE :1;
  420. ULONG Reserved1:2;
  421. ULONG EXEDS :1;
  422. ULONG iNEDS :1;
  423. ULONG CREQS :1;
  424. ULONG CERRS :1;
  425. ULONG BFiFo :4;
  426. ULONG FiFoV :1;
  427. ULONG FiFoD :1;
  428. ULONG FiFoF :1;
  429. ULONG CHACOM :1;
  430. ULONG Reserved2 :12;
  431. } LR_DMA_CONTROL,*PLR_DMA_CONTROL;
  432. //
  433. // Define pointer to LR4360 registers.
  434. //
  435. #define LR_CONTROL1 ((volatile PLR_REGISTERS1)(KSEG1_BASE | LR_PHYSICAL_CMNBASE1))
  436. #define LR_CONTROL2 ((volatile PLR_REGISTERS2)(KSEG1_BASE | LR_PHYSICAL_CMNBASE2))
  437. #define LR_PCI_DEV_REG_CONTROL ((volatile PLR_PCI_DEVICE_REGISTERS)(KSEG1_BASE | LR_PHYSICAL_PCI_DEV_REG_BASE))
  438. #endif // _R98REG_