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.

530 lines
20 KiB

  1. title "PC+MP configuration table processing"
  2. ;++
  3. ;
  4. ;Copyright (c) 1991 Microsoft Corporation
  5. ;Copyright (c) 1992 Intel Corporation
  6. ;All rights reserved
  7. ;
  8. ;INTEL CORPORATION PROPRIETARY INFORMATION
  9. ;
  10. ;This software is supplied to Microsoft under the terms
  11. ;of a license agreement with Intel Corporation and may not be
  12. ;copied nor disclosed except in accordance with the terms
  13. ;of that agreement.
  14. ;
  15. ;
  16. ;Module Name:
  17. ;
  18. ; mpconfig.asm
  19. ;
  20. ;Abstract:
  21. ;
  22. ; Build the default PC+MP configuration tables defined in the PC+MP
  23. ; specification. This file contains no code. It statically builds the
  24. ; default PC+MP configurations in data. C code declaring structures to
  25. ; use these tables must use the "pack(1)" pragma to ensure they are byte
  26. ; aligned.
  27. ;
  28. ;
  29. ;Author:
  30. ;
  31. ; Rajesh Shah (Intel) Oct 1993
  32. ;
  33. ;Revision History:
  34. ;
  35. ;--
  36. .386p
  37. include pcmp.inc
  38. include apic.inc
  39. ;
  40. ; Entry size in bytes for Bus entries, Io Apic entries, Io Apic interrupt
  41. ; input entries and Local Apic interrupt input entries in the PC+MP table.
  42. ;
  43. COMMON_ENTRY_SIZE equ 08H
  44. ;
  45. ; Default values for Processor entries in the PC+MP table.
  46. ;
  47. DEFAULT_NUM_CPUS equ 02H
  48. PROC_ENTRY_SIZE equ 14H
  49. CPU_i486 equ 0421H
  50. CPU_FEATURES equ 01H ; On-chip FPU
  51. ;
  52. ; Default Apic Version values.
  53. ;
  54. VERSION_82489DX equ 01H ; 8 bit APIC version register value.
  55. VERSION_INTEGRATED equ 11H ; 8 bit APIC version register value.
  56. ;
  57. ; Default values for Bus entries in the PC+MP table
  58. ;
  59. BUS_ID_0 equ 0H
  60. BUS_INTI_POLARITY equ 0H
  61. BUS_INTI_LEVEL equ 0H
  62. ; Macros to emit the 6 byte bus type string. The string is not
  63. ; NULL terminated. If the Bus string consists of less than 6
  64. ; characters, it is padded with space characters(ASCII 20h).
  65. BUS_TYPE_EISA macro
  66. db "EISA "
  67. endm
  68. BUS_TYPE_ISA macro
  69. db "ISA "
  70. endm
  71. BUS_TYPE_PCI macro
  72. db "PCI "
  73. endm
  74. BUS_TYPE_MCA macro
  75. db "MCA "
  76. endm
  77. ;
  78. ; Macros to build the different parts of the PC+MP table. See pcmp.inc
  79. ; for the layout of the table and its entries.
  80. ; Macro to build the HEADER part of the PC+MP table.
  81. ; It takes a parameter (NumOfEntries) that specifies the total number of
  82. ; data entries in the table. Processor entries are 20(decimal) bytes long,
  83. ; all other entry types are 8 bytes long. All default configurations have
  84. ; 2 processors. The table length is computed based on the NumOfEntries
  85. ; parameter.
  86. ;
  87. Header macro NumEntries
  88. dd PCMP_SIGNATURE ;; ASCII "PCMP"
  89. dw ( (DEFAULT_NUM_CPUS * PROC_ENTRY_SIZE) \
  90. + ((NumEntries - DEFAULT_NUM_CPUS) * COMMON_ENTRY_SIZE)\
  91. + HEADER_SIZE ) ;; Total table length
  92. db 1 ;; PC+MP spec. revision
  93. db 0 ;; Checksum
  94. db 8 dup (0) ;; OEM Id
  95. db 12 dup (0) ;; OEM Product Id
  96. dd 0 ;; OEM table pointer
  97. dw 0 ;; OEM table size
  98. dw NumOfEntries ;; Number of entries in DATA portion
  99. dd LU_BASE_ADDRESS ;; Default Loacal Apic address
  100. dd 0 ;; Reserved (Not Used)
  101. endm ;;Header
  102. ;
  103. ; Macro to build Processor entries of the PC+MP table
  104. ;
  105. ; Parameter ApicVersion specifes the Apic version (82489DX or integrated)
  106. ; Parameter IsBsp is used in the CPU Flags field, and specifies if this
  107. ; processor is the BSP processor
  108. ;
  109. Processor macro LocalApicId, ApicVersion, IsBspCpu
  110. db ENTRY_PROCESSOR ;; Processor entry type
  111. db LocalApicId ;; ID of Loacal Apic unit.
  112. db ApicVersion ;; Must agree with IO Apic Version
  113. db CPU_ENABLED OR IsBspCpu ;; CpuFlags
  114. dd CPU_i486 ;; Default CPU type
  115. dd CPU_FEATURES ;; Default CPU features
  116. db 8 dup (0) ;; Reserved
  117. endm ;Processor
  118. ;
  119. ; Macro to build Bus entries of the PC+MP table
  120. ;
  121. Bus macro BusId, BusString
  122. db ENTRY_BUS ;; Bus entry type
  123. db BusId ;; ID of this bus
  124. BusString ;; This parameter is a macro that
  125. ;; emits the 6 byte bus type string.
  126. endm ;Bus
  127. ;
  128. ; Macro to build Io Apic entries of the PC+MP table
  129. ; Parameter IoApicVersion specifes the Apic version (82489DX or integrated)
  130. ; All default configurations have a single IO Apic.
  131. ;
  132. IoApic macro IoApicVersion
  133. db ENTRY_IOAPIC ;; IO APIC entry type
  134. db IOUNIT_APIC_ID ;; Default Io Apic ID
  135. db IoApicVersion ;; Must agree with Local APIC ver.
  136. db IO_APIC_ENABLED ;; enable the IO APIC by default,
  137. dd IO_BASE_ADDRESS ;; Default physical address of 1st
  138. ;; IO APIC.
  139. endm ;IoApic
  140. ;
  141. ; Macro to build Io Apic interrupt input entries of the PC+MP table
  142. ; Since all default configurations have a single IO Apic, all the IO Apic
  143. ; interrput input entries are built for the default IO Apic. For all default
  144. ; configurations, the interrupt source bus is assumed to have a bus ID 0.
  145. ;
  146. IoApicInti macro IntType,SourceBusIrq,ApicInti
  147. db ENTRY_INTI ;; IO Apic interrupt input entry type
  148. db IntType ;; NMI,SMI,ExtINT or INTR
  149. dw BUS_INTI_POLARITY OR BUS_INTI_LEVEL ;; Default polarity and level
  150. db BUS_ID_0 ;; Bus Id on which interrupt arrives
  151. db SourceBusIrq ;; Bus relative IRQ at which
  152. ;; interrupt arrives
  153. db IOUNIT_APIC_ID ;; Apic Id of destination IO Apic
  154. db ApicInti ;; Io Apic Interrupt input pin
  155. ;; number this interrupt goes to
  156. endm ;IoApicInti
  157. ;
  158. ; Macro to build Io Apic interrupt input entries of the PC+MP table
  159. ; Since all default configurations have a single IO Apic, all the IO Apic
  160. ; interrput input entries are built for the default IO Apic. For all default
  161. ; configurations, the interrupt source bus is assumed to have a bus ID 0.
  162. ;
  163. ApicInti macro IntType,SourceBusId,SourceBusIrq,AInti
  164. db ENTRY_INTI ;; IO Apic interrupt input entry type
  165. db IntType ;; NMI,SMI,ExtINT or INTR
  166. dw BUS_INTI_POLARITY OR BUS_INTI_LEVEL ;; Default polarity and level
  167. db SourceBusId ;; Bus Id on which interrupt arrives
  168. db SourceBusIrq ;; Bus relative IRQ at which
  169. ;; interrupt arrives
  170. db IOUNIT_APIC_ID ;; Apic Id of destination IO Apic
  171. db AInti ;; Io Apic Interrupt input pin
  172. ;; number this interrupt goes to
  173. endm ;ApicInti
  174. ;
  175. ; Macro to build Local Apic interruptinput entries of the PC+MP table
  176. ;
  177. Linti macro IntType,SourceBusId,SourceBusIrq,LocalApicId,ApicInti
  178. db ENTRY_LINTI ;; Local Apic Interrupt Input
  179. db IntType ;; NMI,SMI,ExtINT or INTR.
  180. dw BUS_INTI_POLARITY OR BUS_INTI_LEVEL ;; Polarity and level
  181. db SourceBusId ;; Bus Id on which interrupt arrives
  182. db SourceBusIrq ;; Bus relative IRQ at which
  183. ;; interrupt arrives
  184. db LocalApicId ;; Apic Id of destination Local Apic
  185. db ApicInti ;; Local Apic Interrupt input pin
  186. ;; number this interrupt goes to
  187. endm ;Linti
  188. PAGELK SEGMENT DWORD PUBLIC 'CODE'
  189. ; The PC+MP table consists of a fixed size HEADER and a variable
  190. ; number of DATA entries. The order of the DATA entries is as
  191. ; follows:
  192. ;
  193. ; 1) Processor entries (20 decimal bytes long). The Boot Strap
  194. ; Processor (BSP) entry must be the first entry.
  195. ; 2) Bus entries (8 bytes long).
  196. ; 3) IO Apic entries (8 bytes long).
  197. ; 4) IO Apic interrupt input entries (8 bytes long).
  198. ; 5) Local Apic interrupt input entries (8 bytes long).
  199. ;
  200. ; All interrupting devices are connected to Bus ID 0 in the
  201. ; default configurations.
  202. ;
  203. ; Any C code using these tables must use the pack(1) pragma.
  204. ;
  205. ; PC+MP default configuration 1: ISA bus, 82489DX Apic.
  206. ;
  207. public _PcMpDefaultConfig1
  208. _PcMpDefaultConfig1 label byte
  209. ; Create table HEADER.
  210. Header 14h
  211. ; Create processor entries
  212. Processor 0, VERSION_82489DX, BSP_CPU
  213. Processor 1, VERSION_82489DX, 0
  214. ; Create bus entries
  215. Bus 0, BUS_TYPE_ISA
  216. ; Create IO Apic entries.
  217. IoApic VERSION_82489DX
  218. ; Create IO Apic interrupt input entries.
  219. IoApicInti INT_TYPE_INTR,1,1 ; IO APIC IRQ 1, INTIN 1
  220. IoApicInti INT_TYPE_INTR,0,2 ; IO APIC IRQ 0, INTIN 2
  221. IoApicInti INT_TYPE_INTR,3,3 ; IO APIC IRQ 3, INTIN 3
  222. IoApicInti INT_TYPE_INTR,4,4 ; IO APIC IRQ 4, INTIN 4
  223. IoApicInti INT_TYPE_INTR,5,5 ; IO APIC IRQ 5, INTIN 5
  224. IoApicInti INT_TYPE_INTR,6,6 ; IO APIC IRQ 6, INTIN 6
  225. IoApicInti INT_TYPE_INTR,7,7 ; IO APIC IRQ 7, INTIN 7
  226. IoApicInti INT_TYPE_INTR,8,8 ; IO APIC IRQ 8, INTIN 8
  227. IoApicInti INT_TYPE_INTR,9,9 ; IO APIC IRQ 9, INTIN 9
  228. IoApicInti INT_TYPE_INTR,0ah,0ah ; IO APIC IRQ 10, INTIN 10
  229. IoApicInti INT_TYPE_INTR,0bh,0bh ; IO APIC IRQ 11, INTIN 11
  230. IoApicInti INT_TYPE_INTR,0ch,0ch ; IO APIC IRQ 12, INTIN 12
  231. IoApicInti INT_TYPE_INTR,0dH,0dH ; IO APIC IRQ 13, INTIN 13
  232. IoApicInti INT_TYPE_INTR,0eH,0eH ; IO APIC IRQ 14, INTIN 14
  233. IoApicInti INT_TYPE_INTR,0fH,0fH ; IO APIC IRQ 15, INTIN 15
  234. ; Create Local Apic interrupt input entries.
  235. Linti INT_TYPE_NMI,0,2,0,1 ; IRQ 2,LocalApicId 0,Linti 1
  236. ;
  237. ; PC+MP default configuration 2: EISA bus, 82489DX Apic.
  238. ;
  239. public _PcMpDefaultConfig2
  240. _PcMpDefaultConfig2 label byte
  241. ; Create table HEADER.
  242. Header 14h
  243. ; Create processor entries
  244. Processor 0H, VERSION_82489DX, BSP_CPU
  245. Processor 01H, VERSION_82489DX, 0
  246. ; Create bus entries
  247. Bus 0, BUS_TYPE_EISA
  248. ; Create IO Apic entries.
  249. IoApic VERSION_82489DX
  250. ; Create IO Apic interrupt input entries.
  251. ; In configuration 2, the 8259 PIC fields the timer and DMA interrupts.
  252. ; The PIC is connected to interrupt input pin 0 of the IO Apic, so this
  253. ; IO Apic interrupt pin can get 2 different interrupts.
  254. IoApicInti INT_TYPE_EXTINT,0,0 ; IO APIC IRQ 0, INTIN 0
  255. IoApicInti INT_TYPE_EXTINT,0dh,0 ; IO APIC IRQ 13, INTIN 0
  256. IoApicInti INT_TYPE_INTR,1,1 ; IO APIC IRQ 1, INTIN 1
  257. ; In this configuration, NMI comes through IO Apic interrupt
  258. ; input pin 2. In all other configurations, NMI comes through
  259. ; the Local Apic interrupt input LINTIN1
  260. IoApicInti INT_TYPE_NMI,2,2 ; IO APIC IRQ 2, INTIN 2
  261. IoApicInti INT_TYPE_INTR,3,3 ; IO APIC IRQ 3, INTIN 3
  262. IoApicInti INT_TYPE_INTR,4,4 ; IO APIC IRQ 4, INTIN 4
  263. IoApicInti INT_TYPE_INTR,5,5 ; IO APIC IRQ 5, INTIN 5
  264. IoApicInti INT_TYPE_INTR,6,6 ; IO APIC IRQ 6, INTIN 6
  265. IoApicInti INT_TYPE_INTR,7,7 ; IO APIC IRQ 7, INTIN 7
  266. IoApicInti INT_TYPE_INTR,8,8 ; IO APIC IRQ 8, INTIN 8
  267. IoApicInti INT_TYPE_INTR,9,9 ; IO APIC IRQ 9, INTIN 9
  268. IoApicInti INT_TYPE_INTR,0ah,0ah ; IO APIC IRQ 10, INTIN 10
  269. IoApicInti INT_TYPE_INTR,0bh,0bh ; IO APIC IRQ 11, INTIN 11
  270. IoApicInti INT_TYPE_INTR,0ch,0ch ; IO APIC IRQ 12, INTIN 12
  271. IoApicInti INT_TYPE_INTR,0eH,0eH ; IO APIC IRQ 14, INTIN 14
  272. IoApicInti INT_TYPE_INTR,0fH,0fH ; IO APIC IRQ 15, INTIN 15
  273. ;
  274. ; PC+MP default configuration 3: EISA bus, 82489DX Apic, timer(Inti2)
  275. ;
  276. public _PcMpDefaultConfig3
  277. _PcMpDefaultConfig3 label byte
  278. ; Create table HEADER.
  279. Header 14h
  280. ; Create processor entries
  281. Processor 0H, VERSION_82489DX, BSP_CPU
  282. Processor 01H, VERSION_82489DX, 0
  283. ; Create bus entries
  284. Bus 0, BUS_TYPE_EISA
  285. ; Create IO Apic entries.
  286. IoApic VERSION_82489DX
  287. ; Create IO Apic interrupt input entries.
  288. IoApicInti INT_TYPE_INTR,1,1 ; IO APIC IRQ 1, INTIN 1
  289. IoApicInti INT_TYPE_INTR,0,2 ; IO APIC IRQ 0, INTIN 2
  290. IoApicInti INT_TYPE_INTR,3,3 ; IO APIC IRQ 3, INTIN 3
  291. IoApicInti INT_TYPE_INTR,4,4 ; IO APIC IRQ 4, INTIN 4
  292. IoApicInti INT_TYPE_INTR,5,5 ; IO APIC IRQ 5, INTIN 5
  293. IoApicInti INT_TYPE_INTR,6,6 ; IO APIC IRQ 6, INTIN 6
  294. IoApicInti INT_TYPE_INTR,7,7 ; IO APIC IRQ 7, INTIN 7
  295. IoApicInti INT_TYPE_INTR,8,8 ; IO APIC IRQ 8, INTIN 8
  296. IoApicInti INT_TYPE_INTR,9,9 ; IO APIC IRQ 9, INTIN 9
  297. IoApicInti INT_TYPE_INTR,0ah,0ah ; IO APIC IRQ 10, INTIN 10
  298. IoApicInti INT_TYPE_INTR,0bh,0bh ; IO APIC IRQ 11, INTIN 11
  299. IoApicInti INT_TYPE_INTR,0ch,0ch ; IO APIC IRQ 12, INTIN 12
  300. IoApicInti INT_TYPE_INTR,0dH,0dH ; IO APIC IRQ 13, INTIN 13
  301. IoApicInti INT_TYPE_INTR,0eH,0eH ; IO APIC IRQ 14, INTIN 14
  302. IoApicInti INT_TYPE_INTR,0fH,0fH ; IO APIC IRQ 15, INTIN 15
  303. ; Create Local Apic interrupt input entries.
  304. Linti INT_TYPE_NMI,0,2,0,1 ; IRQ 2,LocalApicId 0,Linti 1
  305. ;
  306. ; PC+MP default configuration 4: MCA bus, 82489DX Apic.
  307. ;
  308. public _PcMpDefaultConfig4
  309. _PcMpDefaultConfig4 label byte
  310. ; Create table HEADER.
  311. Header 14h
  312. ; Create processor entries
  313. Processor 0H, VERSION_82489DX, BSP_CPU
  314. Processor 01H, VERSION_82489DX, 0
  315. ; Create bus entries
  316. Bus 0, BUS_TYPE_MCA
  317. ; Create IO Apic entries.
  318. IoApic VERSION_82489DX
  319. ; Create IO Apic interrupt input entries.
  320. IoApicInti INT_TYPE_INTR,1,1 ; IO APIC IRQ 1, INTIN 1
  321. IoApicInti INT_TYPE_INTR,0,2 ; IO APIC IRQ 0, INTIN 2
  322. IoApicInti INT_TYPE_INTR,3,3 ; IO APIC IRQ 3, INTIN 3
  323. IoApicInti INT_TYPE_INTR,4,4 ; IO APIC IRQ 4, INTIN 4
  324. IoApicInti INT_TYPE_INTR,5,5 ; IO APIC IRQ 5, INTIN 5
  325. IoApicInti INT_TYPE_INTR,6,6 ; IO APIC IRQ 6, INTIN 6
  326. IoApicInti INT_TYPE_INTR,7,7 ; IO APIC IRQ 7, INTIN 7
  327. IoApicInti INT_TYPE_INTR,8,8 ; IO APIC IRQ 8, INTIN 8
  328. IoApicInti INT_TYPE_INTR,9,9 ; IO APIC IRQ 9, INTIN 9
  329. IoApicInti INT_TYPE_INTR,0ah,0ah ; IO APIC IRQ 10, INTIN 10
  330. IoApicInti INT_TYPE_INTR,0bh,0bh ; IO APIC IRQ 11, INTIN 11
  331. IoApicInti INT_TYPE_INTR,0ch,0ch ; IO APIC IRQ 12, INTIN 12
  332. IoApicInti INT_TYPE_INTR,0dH,0dH ; IO APIC IRQ 13, INTIN 13
  333. IoApicInti INT_TYPE_INTR,0eH,0eH ; IO APIC IRQ 14, INTIN 14
  334. IoApicInti INT_TYPE_INTR,0fH,0fH ; IO APIC IRQ 15, INTIN 15
  335. ; Create Local Apic interrupt input entries.
  336. Linti INT_TYPE_NMI,0,2,0,1 ; IRQ 2,LocalApicId 0,Linti 1
  337. ;
  338. ; PC+MP default configuration 5: ISA & PCI bus, Integrated Local Apic
  339. ;
  340. public _PcMpDefaultConfig5
  341. _PcMpDefaultConfig5 label byte
  342. ; Create table HEADER.
  343. Header 15h
  344. ; Create processor entries
  345. Processor 0H, VERSION_INTEGRATED, BSP_CPU
  346. Processor 01H, VERSION_INTEGRATED, 0
  347. ; Create bus entries
  348. Bus 1, BUS_TYPE_ISA
  349. Bus 0, BUS_TYPE_PCI
  350. ; Create IO Apic entries.
  351. IoApic VERSION_INTEGRATED
  352. ; Create IO Apic interrupt input entries.
  353. ApicInti INT_TYPE_INTR,1,1,1 ; IO APIC IRQ 1, INTIN 1
  354. ApicInti INT_TYPE_INTR,1,0,2 ; IO APIC IRQ 0, INTIN 2
  355. ApicInti INT_TYPE_INTR,1,3,3 ; IO APIC IRQ 3, INTIN 3
  356. ApicInti INT_TYPE_INTR,1,4,4 ; IO APIC IRQ 4, INTIN 4
  357. ApicInti INT_TYPE_INTR,1,5,5 ; IO APIC IRQ 5, INTIN 5
  358. ApicInti INT_TYPE_INTR,1,6,6 ; IO APIC IRQ 6, INTIN 6
  359. ApicInti INT_TYPE_INTR,1,7,7 ; IO APIC IRQ 7, INTIN 7
  360. ApicInti INT_TYPE_INTR,1,8,8 ; IO APIC IRQ 8, INTIN 8
  361. ApicInti INT_TYPE_INTR,1,9,9 ; IO APIC IRQ 9, INTIN 9
  362. ApicInti INT_TYPE_INTR,1,0ah,0ah ; IO APIC IRQ 10, INTIN 10
  363. ApicInti INT_TYPE_INTR,1,0bh,0bh ; IO APIC IRQ 11, INTIN 11
  364. ApicInti INT_TYPE_INTR,1,0ch,0ch ; IO APIC IRQ 12, INTIN 12
  365. ApicInti INT_TYPE_INTR,1,0dH,0dH ; IO APIC IRQ 13, INTIN 13
  366. ApicInti INT_TYPE_INTR,1,0eH,0eH ; IO APIC IRQ 14, INTIN 14
  367. ApicInti INT_TYPE_INTR,1,0fH,0fH ; IO APIC IRQ 15, INTIN 15
  368. ; Create Local Apic interrupt input entries.
  369. Linti INT_TYPE_NMI,1,2,0,1 ; IRQ 2,LocalApicId 0,Linti 1
  370. ;
  371. ; PC+MP default configuration 6 EISA & PCI bus, Integrated Local Apic
  372. ;
  373. public _PcMpDefaultConfig6
  374. _PcMpDefaultConfig6 label byte
  375. ; Create table HEADER.
  376. Header 15h
  377. ; Create processor entries
  378. Processor 0H, VERSION_INTEGRATED, BSP_CPU
  379. Processor 1H, VERSION_INTEGRATED, 0
  380. ; Create bus entries
  381. Bus 1, BUS_TYPE_EISA
  382. Bus 0, BUS_TYPE_PCI
  383. ; Create IO Apic entries.
  384. IoApic VERSION_INTEGRATED
  385. ; Create IO Apic interrupt input entries.
  386. ApicInti INT_TYPE_INTR,1,1,1 ; IO APIC IRQ 1, INTIN 1
  387. ApicInti INT_TYPE_INTR,1,0,2 ; IO APIC IRQ 0, INTIN 2
  388. ApicInti INT_TYPE_INTR,1,3,3 ; IO APIC IRQ 3, INTIN 3
  389. ApicInti INT_TYPE_INTR,1,4,4 ; IO APIC IRQ 4, INTIN 4
  390. ApicInti INT_TYPE_INTR,1,5,5 ; IO APIC IRQ 5, INTIN 5
  391. ApicInti INT_TYPE_INTR,1,6,6 ; IO APIC IRQ 6, INTIN 6
  392. ApicInti INT_TYPE_INTR,1,7,7 ; IO APIC IRQ 7, INTIN 7
  393. ApicInti INT_TYPE_INTR,1,8,8 ; IO APIC IRQ 8, INTIN 8
  394. ApicInti INT_TYPE_INTR,1,9,9 ; IO APIC IRQ 9, INTIN 9
  395. ApicInti INT_TYPE_INTR,1,0ah,0ah ; IO APIC IRQ 10, INTIN 10
  396. ApicInti INT_TYPE_INTR,1,0bh,0bh ; IO APIC IRQ 11, INTIN 11
  397. ApicInti INT_TYPE_INTR,1,0ch,0ch ; IO APIC IRQ 12, INTIN 12
  398. ApicInti INT_TYPE_INTR,1,0dH,0dH ; IO APIC IRQ 13, INTIN 13
  399. ApicInti INT_TYPE_INTR,1,0eH,0eH ; IO APIC IRQ 14, INTIN 14
  400. ApicInti INT_TYPE_INTR,1,0fH,0fH ; IO APIC IRQ 15, INTIN 15
  401. ; Create Local Apic interrupt input entries.
  402. Linti INT_TYPE_NMI,1,2,0,1 ; IRQ 2,LocalApicId 0,Linti 1
  403. ;
  404. ; PC+MP default configuration 7: MCA & PCI bus, Integrated Local Apic
  405. ;
  406. public _PcMpDefaultConfig7
  407. _PcMpDefaultConfig7 label byte
  408. ; Create table HEADER.
  409. Header 15h
  410. ; Create processor entries
  411. Processor 0H, VERSION_INTEGRATED, BSP_CPU
  412. Processor 01H, VERSION_INTEGRATED, 0
  413. ; Create bus entries
  414. Bus 1, BUS_TYPE_MCA
  415. Bus 0, BUS_TYPE_PCI
  416. ; Create IO Apic entries.
  417. IoApic VERSION_INTEGRATED
  418. ; Create IO Apic interrupt input entries.
  419. ApicInti INT_TYPE_INTR,1,1,1 ; IO APIC IRQ 1, INTIN 1
  420. ApicInti INT_TYPE_INTR,1,0,2 ; IO APIC IRQ 0, INTIN 2
  421. ApicInti INT_TYPE_INTR,1,3,3 ; IO APIC IRQ 3, INTIN 3
  422. ApicInti INT_TYPE_INTR,1,4,4 ; IO APIC IRQ 4, INTIN 4
  423. ApicInti INT_TYPE_INTR,1,5,5 ; IO APIC IRQ 5, INTIN 5
  424. ApicInti INT_TYPE_INTR,1,6,6 ; IO APIC IRQ 6, INTIN 6
  425. ApicInti INT_TYPE_INTR,1,7,7 ; IO APIC IRQ 7, INTIN 7
  426. ApicInti INT_TYPE_INTR,1,8,8 ; IO APIC IRQ 8, INTIN 8
  427. ApicInti INT_TYPE_INTR,1,9,9 ; IO APIC IRQ 9, INTIN 9
  428. ApicInti INT_TYPE_INTR,1,0ah,0ah ; IO APIC IRQ 10, INTIN 10
  429. ApicInti INT_TYPE_INTR,1,0bh,0bh ; IO APIC IRQ 11, INTIN 11
  430. ApicInti INT_TYPE_INTR,1,0ch,0ch ; IO APIC IRQ 12, INTIN 12
  431. ApicInti INT_TYPE_INTR,1,0dH,0dH ; IO APIC IRQ 13, INTIN 13
  432. ApicInti INT_TYPE_INTR,1,0eH,0eH ; IO APIC IRQ 14, INTIN 14
  433. ApicInti INT_TYPE_INTR,1,0fH,0fH ; IO APIC IRQ 15, INTIN 15
  434. ; Create Local Apic interrupt input entries.
  435. Linti INT_TYPE_NMI,1,2,0,1 ; IRQ 2,LocalApicId 0,Linti 1
  436. ;
  437. ; Pointers to the default configuration tables
  438. ;
  439. public _PcMpDefaultTablePtrs
  440. ; Array of pointers to the default configurations.
  441. _PcMpDefaultTablePtrs label byte
  442. dd offset _PcMpDefaultConfig1 ; Pointer to Default Config 1
  443. dd offset _PcMpDefaultConfig2 ; Pointer to Default Config 2
  444. dd offset _PcMpDefaultConfig3 ; Pointer to Default Config 3
  445. dd offset _PcMpDefaultConfig4 ; Pointer to Default Config 4
  446. dd offset _PcMpDefaultConfig5 ; Pointer to Default Config 5
  447. dd offset _PcMpDefaultConfig6 ; Pointer to Default Config 6
  448. dd offset _PcMpDefaultConfig7 ; Pointer to Default Config 7
  449. PAGELK ENDS
  450. end