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.
159 lines
2.7 KiB
159 lines
2.7 KiB
/*++
|
|
|
|
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"
|
|
|
|
const UCHAR HalName[] = "ACPI 2.0 - APIC platform";
|
|
#define HalName L"ACPI 2.0 - APIC platform"
|
|
|
|
const ULONG HalDisableFirmwareMapper = 1;
|
|
|
|
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:
|
|
|
|
--*/
|
|
{
|
|
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
|
|
//
|
|
|
|
RtlInitUnicodeString (&UHalName, HalName);
|
|
|
|
HalpReportResourceUsage (
|
|
&UHalName, // descriptive name
|
|
interfacetype
|
|
);
|
|
|
|
//
|
|
// 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();
|
|
}
|
|
|