windows-nt/Source/XPSP1/NT/base/hals/halx86/i386/ixproc.c
2020-09-26 16:20:57 +08:00

192 lines
3.3 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*++
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;
}