192 lines
3.3 KiB
C
192 lines
3.3 KiB
C
|
/*++
|
|||
|
|
|||
|
Copyright (c) 1991 Microsoft Corporation
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
ixsproc.c
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
Stub functions for UP hals.
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
Ken Reneris (kenr) 22-Jan-1991
|
|||
|
|
|||
|
Environment:
|
|||
|
|
|||
|
Kernel mode only.
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
#include "halp.h"
|
|||
|
|
|||
|
#ifdef ALLOC_DATA_PRAGMA
|
|||
|
#pragma data_seg("INITCONST") // INITCONST is OK to use for data_seg
|
|||
|
#endif // ALLOC_DATA_PRAGMA
|
|||
|
WCHAR HalHardwareIdString[] = L"e_isa_up\0";
|
|||
|
|
|||
|
#ifdef ALLOC_DATA_PRAGMA
|
|||
|
#pragma data_seg()
|
|||
|
#endif // ALLOC_DATA_PRAGMA
|
|||
|
|
|||
|
const UCHAR HalName[] = "PC Compatible Eisa/Isa HAL";
|
|||
|
#define HalName L"PC Compatible Eisa/Isa HAL"
|
|||
|
ULONG HalDisplayBusRanges;
|
|||
|
|
|||
|
BOOLEAN
|
|||
|
HalpInitMP (
|
|||
|
IN ULONG Phase,
|
|||
|
IN PLOADER_PARAMETER_BLOCK LoaderBlock
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
HalpMcaInit (
|
|||
|
VOID
|
|||
|
);
|
|||
|
|
|||
|
VOID HalpInitOtherBuses (VOID);
|
|||
|
VOID HalpInitializePciBus (VOID);
|
|||
|
VOID HalpInitializePciStubs (VOID);
|
|||
|
|
|||
|
#ifdef ALLOC_PRAGMA
|
|||
|
#pragma alloc_text(INIT,HalpInitMP)
|
|||
|
#pragma alloc_text(INIT,HalStartNextProcessor)
|
|||
|
#pragma alloc_text(INIT,HalAllProcessorsStarted)
|
|||
|
#pragma alloc_text(INIT,HalReportResourceUsage)
|
|||
|
#pragma alloc_text(INIT,HalpInitOtherBuses)
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
|
|||
|
BOOLEAN
|
|||
|
HalpInitMP (
|
|||
|
IN ULONG Phase,
|
|||
|
IN PLOADER_PARAMETER_BLOCK LoaderBlock
|
|||
|
)
|
|||
|
{
|
|||
|
// do nothing
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
VOID
|
|||
|
HalpResetAllProcessors (
|
|||
|
VOID
|
|||
|
)
|
|||
|
{
|
|||
|
// Just return, that will invoke the standard PC reboot code
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
BOOLEAN
|
|||
|
HalStartNextProcessor (
|
|||
|
IN PLOADER_PARAMETER_BLOCK pLoaderBlock,
|
|||
|
IN PKPROCESSOR_STATE pProcessorState
|
|||
|
)
|
|||
|
{
|
|||
|
// no other processors
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
|
|||
|
BOOLEAN
|
|||
|
HalAllProcessorsStarted (
|
|||
|
VOID
|
|||
|
)
|
|||
|
{
|
|||
|
if (HalpFeatureBits & HAL_NO_SPECULATION) {
|
|||
|
|
|||
|
//
|
|||
|
// Processor doesn't perform speculative execeution,
|
|||
|
// remove fences in critical code paths
|
|||
|
//
|
|||
|
|
|||
|
HalpRemoveFences ();
|
|||
|
}
|
|||
|
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
VOID
|
|||
|
HalReportResourceUsage (
|
|||
|
VOID
|
|||
|
)
|
|||
|
{
|
|||
|
INTERFACE_TYPE interfacetype;
|
|||
|
UNICODE_STRING UHalName;
|
|||
|
|
|||
|
HalInitSystemPhase2 ();
|
|||
|
|
|||
|
//
|
|||
|
// Turn on MCA support if present
|
|||
|
//
|
|||
|
|
|||
|
HalpMcaInit();
|
|||
|
|
|||
|
//
|
|||
|
// Registry is now intialized, see if there are any PCI buses
|
|||
|
//
|
|||
|
|
|||
|
HalpInitializePciBus ();
|
|||
|
HalpInitializePciStubs ();
|
|||
|
|
|||
|
//
|
|||
|
// Complete ALL bus initialization before reporting resource usage.
|
|||
|
//
|
|||
|
|
|||
|
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;
|
|||
|
}
|
|||
|
|
|||
|
RtlInitUnicodeString (&UHalName, HalName);
|
|||
|
HalpReportResourceUsage (
|
|||
|
&UHalName, // descriptive name
|
|||
|
interfacetype // device space interface type
|
|||
|
);
|
|||
|
|
|||
|
#if DBG
|
|||
|
//
|
|||
|
// Display all buses & ranges
|
|||
|
//
|
|||
|
|
|||
|
if (HalDisplayBusRanges) {
|
|||
|
HalpDisplayAllBusRanges ();
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
//
|
|||
|
// Declare that we are capable of
|
|||
|
// hibernation.
|
|||
|
//
|
|||
|
HalpRegisterHibernate ();
|
|||
|
|
|||
|
HalpRegisterPciDebuggingDeviceInfo();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
VOID
|
|||
|
HalpInitOtherBuses (
|
|||
|
VOID
|
|||
|
)
|
|||
|
{
|
|||
|
// no other internal buses supported
|
|||
|
}
|
|||
|
|
|||
|
ULONG
|
|||
|
FASTCALL
|
|||
|
HalSystemVectorDispatchEntry (
|
|||
|
IN ULONG Vector,
|
|||
|
OUT PKINTERRUPT_ROUTINE **FlatDispatch,
|
|||
|
OUT PKINTERRUPT_ROUTINE *NoConnection
|
|||
|
)
|
|||
|
{
|
|||
|
return FALSE;
|
|||
|
}
|