162 lines
2.6 KiB
C
162 lines
2.6 KiB
C
/*++
|
||
|
||
Copyright (c) 1995 Intel Corporation
|
||
|
||
Module Name:
|
||
|
||
i64bus.c
|
||
|
||
Abstract:
|
||
|
||
This module implements the routines to support the management
|
||
of bus resources and translation of bus addresses.
|
||
|
||
Author:
|
||
|
||
14-Apr-1995
|
||
|
||
Environment:
|
||
|
||
Kernel mode
|
||
|
||
Revision History:
|
||
|
||
Based on simbus.c
|
||
|
||
--*/
|
||
|
||
#include "halp.h"
|
||
#include "hal.h"
|
||
|
||
UCHAR HalName[] = "ACPI 1.0 - APIC platform";
|
||
extern WCHAR HalHardwareIdString[];
|
||
|
||
VOID
|
||
HalpInitializePciBus (
|
||
VOID
|
||
);
|
||
|
||
VOID
|
||
HalpInheritBusAddressMapInfo (
|
||
VOID
|
||
);
|
||
|
||
VOID
|
||
HalpInitBusAddressMapInfo (
|
||
VOID
|
||
);
|
||
|
||
BOOLEAN
|
||
HalpTranslateSystemBusAddress (
|
||
IN PVOID BusHandler,
|
||
IN PVOID RootHandler,
|
||
IN PHYSICAL_ADDRESS BusAddress,
|
||
IN OUT PULONG AddressSpace,
|
||
OUT PPHYSICAL_ADDRESS TranslatedAddress
|
||
);
|
||
|
||
VOID
|
||
KeFlushWriteBuffer(
|
||
VOID
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
KeFlushWriteBuffer
|
||
Flushes all write buffers and/or other data storing or reordering
|
||
hardware on the current processor. This ensures that all previous
|
||
writes will occur before any new reads or writes are completed.
|
||
|
||
In the simulation environment, there is no write buffer and nothing
|
||
needs to be done.
|
||
|
||
Arguments:
|
||
|
||
None
|
||
|
||
Return Value:
|
||
|
||
None.
|
||
|
||
--*/
|
||
{
|
||
__mf();
|
||
return;
|
||
}
|
||
|
||
VOID
|
||
HalReportResourceUsage (
|
||
VOID
|
||
)
|
||
/*++
|
||
|
||
Routine Description:
|
||
The registery is now enabled - time to report resources which are
|
||
used by the HAL.
|
||
|
||
Arguments:
|
||
|
||
Return Value:
|
||
|
||
--*/
|
||
{
|
||
ANSI_STRING AHalName;
|
||
UNICODE_STRING UHalName;
|
||
INTERFACE_TYPE interfacetype;
|
||
|
||
//
|
||
// Set type
|
||
//
|
||
|
||
switch (HalpBusType) {
|
||
case MACHINE_TYPE_ISA: interfacetype = Isa; break;
|
||
case MACHINE_TYPE_EISA: interfacetype = Eisa; break;
|
||
case MACHINE_TYPE_MCA: interfacetype = MicroChannel; break;
|
||
default: interfacetype = Internal; break;
|
||
}
|
||
|
||
//
|
||
// Report HALs resource usage
|
||
//
|
||
|
||
RtlInitAnsiString (&AHalName, HalName);
|
||
RtlAnsiStringToUnicodeString (&UHalName, &AHalName, TRUE);
|
||
|
||
HalpReportResourceUsage (
|
||
&UHalName, // descriptive name
|
||
interfacetype
|
||
);
|
||
|
||
RtlFreeUnicodeString (&UHalName);
|
||
|
||
//
|
||
// Turn on MCA support if present
|
||
//
|
||
|
||
HalpMcaInit();
|
||
|
||
//
|
||
// Registry is now intialized, see if there are any PCI buses
|
||
//
|
||
|
||
HalpInitializePciBus ();
|
||
#ifdef notyet
|
||
//
|
||
// Update supported address info with MPS bus address map
|
||
//
|
||
|
||
HalpInitBusAddressMapInfo ();
|
||
|
||
//
|
||
// Inherit any bus address mappings from MPS hierarchy descriptors
|
||
//
|
||
|
||
HalpInheritBusAddressMapInfo ();
|
||
#endif // notyet
|
||
|
||
HalpRegisterPciDebuggingDeviceInfo();
|
||
}
|
||
|