3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: hal/halx86/generic/usage.c
5 * PURPOSE: HAL Resource Report Routines
6 * PROGRAMMERS: Stefan Ginsberg (stefan.ginsberg@reactos.org)
9 /* INCLUDES *******************************************************************/
15 /* GLOBALS ********************************************************************/
17 PUCHAR KdComPortInUse
;
18 PADDRESS_USAGE HalpAddressUsageList
;
19 IDTUsageFlags HalpIDTUsageFlags
[MAXIMUM_IDTVECTOR
];
20 IDTUsage HalpIDTUsage
[MAXIMUM_IDTVECTOR
];
22 ADDRESS_USAGE HalpDefaultIoSpace
=
24 NULL
, CmResourceTypePort
, IDT_INTERNAL
,
26 {0x2000, 0xC000}, /* PIC?? */
27 {0xC000, 0x1000}, /* DMA 2 */
28 {0x8000, 0x1000}, /* DMA 1 */
29 {0x2000, 0x200}, /* PIC 1 */
30 {0xA000, 0x200}, /* PIC 2 */
31 {0x4000, 0x400}, /* PIT 1 */
32 {0x4800, 0x400}, /* PIT 2 */
33 {0x9200, 0x100}, /* ????? */
34 {0x7000, 0x200}, /* CMOS */
35 {0xF000, 0x1000}, /* ????? */
36 {0xCF800, 0x800}, /* PCI 0 */
41 /* FUNCTIONS ******************************************************************/
45 HalpReportResourceUsage(IN PUNICODE_STRING HalName
,
46 IN INTERFACE_TYPE InterfaceType
)
48 DbgPrint("%wZ has been initialized\n", HalName
);
53 HalpRegisterVector(IN UCHAR Flags
,
55 IN ULONG SystemVector
,
58 /* Save the vector flags */
59 HalpIDTUsageFlags
[SystemVector
].Flags
= Flags
;
61 /* Save the vector data */
62 HalpIDTUsage
[SystemVector
].Irql
= Irql
;
63 HalpIDTUsage
[SystemVector
].BusReleativeVector
= BusVector
;
68 HalpEnableInterruptHandler(IN UCHAR Flags
,
70 IN ULONG SystemVector
,
73 IN KINTERRUPT_MODE Mode
)
77 /* Convert the vector into the IDT entry */
78 Entry
= HalVectorToIDTEntry(SystemVector
);
80 /* Register the vector */
81 HalpRegisterVector(Flags
, BusVector
, SystemVector
, Irql
);
83 /* Connect the interrupt */
84 ((PKIPCR
)KeGetPcr())->IDT
[Entry
].ExtendedOffset
= (USHORT
)(((ULONG_PTR
)Handler
>> 16) & 0xFFFF);
85 ((PKIPCR
)KeGetPcr())->IDT
[Entry
].Offset
= (USHORT
)((ULONG_PTR
)Handler
);
87 /* Enable the interrupt */
88 HalEnableSystemInterrupt(SystemVector
, Irql
, Mode
);
96 HalReportResourceUsage(VOID
)
98 INTERFACE_TYPE InterfaceType
;
99 UNICODE_STRING HalString
;
101 /* FIXME: Initialize DMA 64-bit support */
103 /* FIXME: Initialize MCA bus */
105 /* Initialize PCI bus. */
106 HalpInitializePciBus();
108 /* Initialize the stubs */
109 HalpInitializePciStubs();
111 /* What kind of bus is this? */
115 case MACHINE_TYPE_ISA
:
120 case MACHINE_TYPE_EISA
:
121 InterfaceType
= Eisa
;
125 case MACHINE_TYPE_MCA
:
126 InterfaceType
= MicroChannel
;
131 InterfaceType
= Internal
;
135 /* Build HAL usage */
136 RtlInitUnicodeString(&HalString
, L
"PC Compatible Eisa/Isa HAL");
137 HalpReportResourceUsage(&HalString
, InterfaceType
);
139 /* FIXME: Setup PCI debugging and Hibernation */