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
;
69 HalpEnableInterruptHandler(IN UCHAR Flags
,
71 IN ULONG SystemVector
,
74 IN KINTERRUPT_MODE Mode
)
78 /* Convert the vector into the IDT entry */
79 Entry
= HalVectorToIDTEntry(SystemVector
);
81 /* Register the vector */
82 HalpRegisterVector(Flags
, BusVector
, SystemVector
, Irql
);
84 /* Connect the interrupt */
85 ((PKIPCR
)KeGetPcr())->IDT
[Entry
].ExtendedOffset
= (USHORT
)(((ULONG_PTR
)Handler
>> 16) & 0xFFFF);
86 ((PKIPCR
)KeGetPcr())->IDT
[Entry
].Offset
= (USHORT
)((ULONG_PTR
)Handler
);
88 /* Enable the interrupt */
89 HalEnableSystemInterrupt(SystemVector
, Irql
, Mode
);
98 HalReportResourceUsage(VOID
)
100 INTERFACE_TYPE InterfaceType
;
101 UNICODE_STRING HalString
;
103 /* FIXME: Initialize DMA 64-bit support */
105 /* FIXME: Initialize MCA bus */
107 /* Initialize PCI bus. */
108 HalpInitializePciBus();
110 /* Initialize the stubs */
111 HalpInitializePciStubs();
113 /* What kind of bus is this? */
117 case MACHINE_TYPE_ISA
:
122 case MACHINE_TYPE_EISA
:
123 InterfaceType
= Eisa
;
127 case MACHINE_TYPE_MCA
:
128 InterfaceType
= MicroChannel
;
133 InterfaceType
= Internal
;
137 /* Build HAL usage */
138 RtlInitUnicodeString(&HalString
, L
"PC Compatible Eisa/Isa HAL");
139 HalpReportResourceUsage(&HalString
, InterfaceType
);
141 /* FIXME: Setup PCI debugging and Hibernation */