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.
107 lines
2.2 KiB
107 lines
2.2 KiB
/*++
|
|
|
|
Copyright (c) 1989-2000 Microsoft Corporation
|
|
|
|
Component Name:
|
|
|
|
HALIA64
|
|
|
|
Module Name:
|
|
|
|
xxhal.c
|
|
|
|
Abstract:
|
|
|
|
This module determines the HAL IA64 common features based on processor
|
|
and platform types. This exposes the processor and system features
|
|
that the HAL would use to enable / disable its own features.
|
|
By the mean of HAL exported interfaces or exported global variables,
|
|
the HAL exposes its supported features.
|
|
|
|
Author:
|
|
|
|
David N. Cutler (davec) 5-Mar-1989
|
|
|
|
Environment:
|
|
|
|
ToBeSpecified
|
|
|
|
Revision History:
|
|
|
|
3/23/2000 Thierry Fevrier ([email protected]):
|
|
|
|
Initial version
|
|
|
|
--*/
|
|
|
|
#include "halp.h"
|
|
|
|
extern ULONG HalpMaxCPEImplemented;
|
|
extern HALP_SAL_PAL_DATA HalpSalPalData;
|
|
|
|
#ifdef ALLOC_PRAGMA
|
|
#pragma alloc_text(INIT,HalpGetFeatureBits)
|
|
#endif
|
|
|
|
ULONG
|
|
HalpGetFeatureBits (
|
|
VOID
|
|
)
|
|
{
|
|
ULONG bits = HALP_FEATURE_INIT;
|
|
PKPRCB prcb = KeGetCurrentPrcb();
|
|
|
|
//
|
|
// Determine Processor type and System type.
|
|
//
|
|
// For the processor, this could come from:
|
|
// - PAL_BUS_GET_FEATURES
|
|
// - PAL_DEBUG_INFO ??
|
|
// - PAL_FREQ_BASE
|
|
// - PAL_FREQ_RATIOS
|
|
// - PAL_PERF_MON_INFO
|
|
// - PAL_PROC_GET_FEATURES
|
|
// - PAL_REGISTER_INFO
|
|
// - PAL_VERSION
|
|
//
|
|
|
|
// NOT-YET...
|
|
|
|
//
|
|
// Determine Processor features:
|
|
// like support for Processor Hardware Performance Monitor Events and
|
|
// - HAL_NO_SPECULATION
|
|
// - HAL_MCA_PRESENT
|
|
|
|
// NOT-YET - should call PAL PERF_MON call.
|
|
bits |= HAL_PERF_EVENTS;
|
|
|
|
//
|
|
// Determine Platform features:
|
|
// like support for Platform Performance Monitor Events...
|
|
//
|
|
|
|
// NOT-YET - should call SAL calls.
|
|
|
|
//
|
|
// Default software HAL support for IA64 Errors (MCA, CMC, CPE).
|
|
//
|
|
// However, we already know if we found an ACPI platform interrupt entry which identifier
|
|
// is PLATFORM_INT_CPE.
|
|
//
|
|
|
|
bits |= HAL_MCA_PRESENT;
|
|
|
|
if (!(HalpSalPalData.Flags & HALP_SALPAL_CMC_BROKEN)) {
|
|
|
|
bits |= HAL_CMC_PRESENT;
|
|
}
|
|
|
|
if (!(HalpSalPalData.Flags & HALP_SALPAL_CPE_BROKEN)) {
|
|
|
|
bits |= HAL_CPE_PRESENT;
|
|
}
|
|
|
|
return bits;
|
|
|
|
} // HalpGetFeatureBits()
|