/* $NoKeywords:$ */ /** * @file * * Install of CPU specific services support * * This file generates the CPU specific services tables. * * @xrefitem bom "File Content Label" "Release Content" * @e project: AGESA * @e sub-project: Include * @e \$Revision: 85962 $ @e \$Date: 2013-01-14 20:12:29 -0600 (Mon, 14 Jan 2013) $ */ /***************************************************************************** * * Copyright (c) 2008 - 2013, Advanced Micro Devices, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Advanced Micro Devices, Inc. nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ***************************************************************************/ /* NOTE: 1. This file is designed to be included multiple times in one file. So there's no includsion guard like below. #ifndef _OPTION_CPU_FAMILY_SERVICE_INSTALL_DEFAULT_H_ #define _OPTION_CPU_FAMILY_SERVICE_INSTALL_DEFAULT_H_ #endif // _OPTION_CPU_FAMILY_SERVICE_INSTALL_DEFAULT_H_ 2. This file is designed to be included in below form. // // 1st family model specific definitions // #include "OptionCpuSpecificServicesInstallReset.h" #define CpuSrvcTableName cpuFamilyModelServices // Put your service definitions "CpuSrvc" here. #define CpuSrvcDisablePstate cpuF1stM1stDisablePstate #include "OptionCpuSpecificServicesInstall.h" INSTALL_CPU_SPECIFIC_SERVICES_TABLE (CpuSrvcTableName); // // 2nd family model specific definitions // #include "OptionCpuSpecificServicesInstallReset.h" #define CpuSrvcTableName cpuFamilyModelServices // Put your service definitions "CpuSrvc" here. #define CpuSrvcDisablePstate cpuF2ndM2ndDisablePstate #include "OptionCpuSpecificServicesInstall.h" INSTALL_CPU_SPECIFIC_SERVICES_TABLE (CpuSrvcTableName); Example of CPU specific services definitions: NOTE: Members with type casting should use OvrdDfltCpuSrvc instead due to automatical "extern" limitation. #define CpuSrvcRevision (UINT16) Revision #define CpuSrvcDisablePstate (PF_CPU_DISABLE_PSTATE) DisablePstate #define CpuSrvcTransitionPstate (PF_CPU_TRANSITION_PSTATE) TransitionPstate #define CpuSrvcGetProcIddMax (PF_CPU_GET_IDD_MAX) GetProcIddMax #define CpuSrvcGetTscRate (PF_CPU_GET_TSC_RATE) GetTscRate #define CpuSrvcGetCurrentNbFrequency (PF_CPU_GET_NB_FREQ) GetCurrentNbFrequency #define CpuSrvcGetMinMaxNbFrequency (PF_CPU_GET_MIN_MAX_NB_FREQ) GetMinMaxNbFrequency #define CpuSrvcGetNbPstateInfo (PF_CPU_GET_NB_PSTATE_INFO) GetNbPstateInfo #define CpuSrvcIsNbCofInitNeeded (PF_CPU_IS_NBCOF_INIT_NEEDED) IsNbCofInitNeeded #define CpuSrvcGetNbIddMax (PF_CPU_GET_NB_IDD_MAX) GetNbIddMax #define CpuSrvcLaunchApCore (PF_CPU_AP_INITIAL_LAUNCH) LaunchApCore #define CpuSrvcGetNumberOfPhysicalCores (PF_CPU_NUMBER_OF_PHYSICAL_CORES) GetNumberOfPhysicalCores #define CpuSrvcGetApMailboxFromHardware (PF_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE) GetApMailboxFromHardware #define CpuSrvcSetApCoreNumber (PF_CPU_SET_AP_CORE_NUMBER) SetApCoreNumber #define CpuSrvcGetApCoreNumber (PF_CPU_GET_AP_CORE_NUMBER) GetApCoreNumber #define CpuSrvcTransferApCoreNumber (PF_CPU_TRANSFER_AP_CORE_NUMBER) TransferApCoreNumber #define CpuSrvcGetStoredNodeNumber (PF_CPU_GET_STORED_NODE_NUMBER) GetStoredNodeNumber #define CpuSrvcCoreIdPositionInInitialApicId (PF_CORE_ID_POSITION_IN_INITIAL_APIC_ID) CoreIdPositionInInitialApicId #define CpuSrvcSaveFeatures (PF_CPU_SAVE_FEATURES) SaveFeatures #define CpuSrvcWriteFeatures (PF_CPU_WRITE_FEATURES) WriteFeatures #define CpuSrvcSetWarmResetFlag (PF_CPU_SET_WARM_RESET_FLAG) SetWarmResetFlag #define CpuSrvcGetWarmResetFlag (PF_CPU_GET_WARM_RESET_FLAG) GetWarmResetFlag #define CpuSrvcGetBrandString1 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) GetBrandString1 #define CpuSrvcGetBrandString2 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) GetBrandString2 #define CpuSrvcGetMicroCodePatchesStruct (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) GetMicroCodePatchesStruct #define CpuSrvcGetMicrocodeEquivalenceTable (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) GetMicrocodeEquivalenceTable #define CpuSrvcGetCacheInfo (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) GetCacheInfo #define CpuSrvcGetSysPmTableStruct (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) GetSysPmTableStruct #define CpuSrvcGetWheaInitData (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) GetWheaInitData #define CpuSrvcGetPlatformTypeSpecificInfo (PF_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO) GetPlatformTypeSpecificInfo #define CpuSrvcIsNbPstateEnabled (PF_IS_NB_PSTATE_ENABLED) IsNbPstateEnabled #define CpuSrvcNextLinkHasHtPhyFeats (PF_NEXT_LINK_HAS_HTFPY_FEATS) NextLinkHasHtPhyFeats #define CpuSrvcSetHtPhyRegister (PF_SET_HT_PHY_REGISTER) SetHtPhyRegister #define CpuSrvcGetNextHtLinkFeatures (PF_GET_NEXT_HT_LINK_FEATURES) GetNextHtLinkFeatures #define CpuSrvcRegisterTableList (REGISTER_TABLE **) RegisterTableList #define CpuSrvcTableEntryTypeDescriptors (TABLE_ENTRY_TYPE_DESCRIPTOR *) TableEntryTypeDescriptors #define CpuSrvcPackageLinkMap (PACKAGE_HTLINK_MAP) PackageLinkMap #define CpuSrvcComputeUnitMap (COMPUTE_UNIT_MAP *) ComputeUnitMap #define CpuSrvcInitCacheDisabled (FAMILY_CACHE_INIT_POLICY) InitCacheDisabled #define CpuSrvcGetEarlyBeforeApLaunchInitOnCoreTable (PF_GET_EARLY_INIT_TABLE) GetEarlyInitBeforeApLaunchOnCoreTable #define CpuSrvcGetEarlyAfterApLaunchInitOnCoreTable (PF_GET_EARLY_INIT_TABLE) GetEarlyInitAfterApLaunchOnCoreTable #define CpuSrvcPatchLoaderIsSharedByCU (BOOLEAN) TRUE USAGE MODEL: // // If BUILD_CONFIG_SWITCH = TRUE // If override service is defined, use it as the final service definition. // If override service is not define, use default service (DlftCpuSrvc) as the final service definition. // // If BUILD_CONFIG_SWITCH = FALSE // Use default assert service (AssertCpuSrvc) as the final service definition for making a assertion when unsupported service is called. // // "extern" will be used for function pointer (exclude data) type serive members automatically when CpuSrvc is defined. // // Member: (MEMBER_TYPE) ServiceName #if BUILD_CONFIG_SWITCH == TRUE #ifdef CpuSrvcServiceName #define FinalCpuSrvcServiceName CpuSrvcServiceName extern MEMBER_TYPE FinalCpuSrvcServiceName; #else #define FinalCpuSrvcServiceName DfltCpuSrvcServiceName #pragma message( STRING_MACRO_DEFAULT_USED(CpuSrvcServiceName) ) #endif #else #define FinalCpuSrvcServiceName DfltAssertCpuSrvcServiceName #pragma message( STRING_MACRO_DEFAULT_ASSERT_USED(CpuSrvcServiceName) ) #endif */ #define STRING2(x) #x #define STRING(x) STRING2(x) #define CAT_STRING(a, b) a##b #define STRING_ARROW " --> " // // Verbose control for messaging CPU services at build time // #ifndef VERBOSE_CPU_SERVICES #define VERBOSE_CPU_SERVICES 1 // 0 - disable messaging, 1 - enable debugging. #endif #if VERBOSE_CPU_SERVICES #define STRING_MACRO_VALUE(Name) " " #Name " = " STRING(Name) #define STRING_OVERRIDE_MACRO_VALUE(Name) " OVERRIDE: " #Name " : " STRING(Name) STRING_ARROW STRING(Ovrd##Name) #define STRING_MACRO_DEFAULT_USED(Name) " NOT DEFINED: " #Name STRING_ARROW " DEFAULT: " STRING(FinalDflt##Name) #define STRING_MACRO_DEFAULT_ASSERT_USED(Name) " DISABLED: " #Name ", assertion is used." #define STRING_SEPARATOR1 "-----------------------------------------------------------------------------------------------" #define STRING_SEPARATOR2 "===============================================================================================" #define STRING_SEPARATOR_POUND "###############################################################################################" #else // VERBOSE_CPU_SERVICES #define STRING_MACRO_VALUE(Name) NULL_STRING #define STRING_OVERRIDE_MACRO_VALUE(Name) NULL_STRING #define STRING_MACRO_DEFAULT_USED(Name) NULL_STRING #define STRING_MACRO_DEFAULT_ASSERT_USED(Name) NULL_STRING #define NULL_STRING "" #define STRING_SEPARATOR1 NULL_STRING #define STRING_SEPARATOR2 NULL_STRING #define STRING_SEPARATOR_POUND NULL_STRING #endif // VERBOSE_CPU_SERVICES // // Handle override definitions on DfltAssertCpuSrvc // #ifdef OvrdDfltAssertCpuSrvcRevision #define FinalDfltAssertCpuSrvcRevision OvrdDfltAssertCpuSrvcRevision #else #define FinalDfltAssertCpuSrvcRevision DfltAssertCpuSrvcRevision #endif #ifdef OvrdDfltAssertCpuSrvcDisablePstate #define FinalDfltAssertCpuSrvcDisablePstate OvrdDfltAssertCpuSrvcDisablePstate #else #define FinalDfltAssertCpuSrvcDisablePstate DfltAssertCpuSrvcDisablePstate #endif #ifdef OvrdDfltAssertCpuSrvcTransitionPstate #define FinalDfltAssertCpuSrvcTransitionPstate OvrdDfltAssertCpuSrvcTransitionPstate #else #define FinalDfltAssertCpuSrvcTransitionPstate DfltAssertCpuSrvcTransitionPstate #endif #ifdef OvrdDfltAssertCpuSrvcGetProcIddMax #define FinalDfltAssertCpuSrvcGetProcIddMax OvrdDfltAssertCpuSrvcGetProcIddMax #else #define FinalDfltAssertCpuSrvcGetProcIddMax DfltAssertCpuSrvcGetProcIddMax #endif #ifdef OvrdDfltAssertCpuSrvcGetTscRate #define FinalDfltAssertCpuSrvcGetTscRate OvrdDfltAssertCpuSrvcGetTscRate #else #define FinalDfltAssertCpuSrvcGetTscRate DfltAssertCpuSrvcGetTscRate #endif #ifdef OvrdDfltAssertCpuSrvcGetCurrentNbFrequency #define FinalDfltAssertCpuSrvcGetCurrentNbFrequency OvrdDfltAssertCpuSrvcGetCurrentNbFrequency #else #define FinalDfltAssertCpuSrvcGetCurrentNbFrequency DfltAssertCpuSrvcGetCurrentNbFrequency #endif #ifdef OvrdDfltAssertCpuSrvcGetMinMaxNbFrequency #define FinalDfltAssertCpuSrvcGetMinMaxNbFrequency OvrdDfltAssertCpuSrvcGetMinMaxNbFrequency #else #define FinalDfltAssertCpuSrvcGetMinMaxNbFrequency DfltAssertCpuSrvcGetMinMaxNbFrequency #endif #ifdef OvrdDfltAssertCpuSrvcGetNbPstateInfo #define FinalDfltAssertCpuSrvcGetNbPstateInfo OvrdDfltAssertCpuSrvcGetNbPstateInfo #else #define FinalDfltAssertCpuSrvcGetNbPstateInfo DfltAssertCpuSrvcGetNbPstateInfo #endif #ifdef OvrdDfltAssertCpuSrvcIsNbCofInitNeeded #define FinalDfltAssertCpuSrvcIsNbCofInitNeeded OvrdDfltAssertCpuSrvcIsNbCofInitNeeded #else #define FinalDfltAssertCpuSrvcIsNbCofInitNeeded DfltAssertCpuSrvcIsNbCofInitNeeded #endif #ifdef OvrdDfltAssertCpuSrvcGetNbIddMax #define FinalDfltAssertCpuSrvcGetNbIddMax OvrdDfltAssertCpuSrvcGetNbIddMax #else #define FinalDfltAssertCpuSrvcGetNbIddMax DfltAssertCpuSrvcGetNbIddMax #endif #ifdef OvrdDfltAssertCpuSrvcLaunchApCore #define FinalDfltAssertCpuSrvcLaunchApCore OvrdDfltAssertCpuSrvcLaunchApCore #else #define FinalDfltAssertCpuSrvcLaunchApCore DfltAssertCpuSrvcLaunchApCore #endif #ifdef OvrdDfltAssertCpuSrvcGetNumberOfPhysicalCores #define FinalDfltAssertCpuSrvcGetNumberOfPhysicalCores OvrdDfltAssertCpuSrvcGetNumberOfPhysicalCores #else #define FinalDfltAssertCpuSrvcGetNumberOfPhysicalCores DfltAssertCpuSrvcGetNumberOfPhysicalCores #endif #ifdef OvrdDfltAssertCpuSrvcGetApMailboxFromHardware #define FinalDfltAssertCpuSrvcGetApMailboxFromHardware OvrdDfltAssertCpuSrvcGetApMailboxFromHardware #else #define FinalDfltAssertCpuSrvcGetApMailboxFromHardware DfltAssertCpuSrvcGetApMailboxFromHardware #endif #ifdef OvrdDfltAssertCpuSrvcSetApCoreNumber #define FinalDfltAssertCpuSrvcSetApCoreNumber OvrdDfltAssertCpuSrvcSetApCoreNumber #else #define FinalDfltAssertCpuSrvcSetApCoreNumber DfltAssertCpuSrvcSetApCoreNumber #endif #ifdef OvrdDfltAssertCpuSrvcGetApCoreNumber #define FinalDfltAssertCpuSrvcGetApCoreNumber OvrdDfltAssertCpuSrvcGetApCoreNumber #else #define FinalDfltAssertCpuSrvcGetApCoreNumber DfltAssertCpuSrvcGetApCoreNumber #endif #ifdef OvrdDfltAssertCpuSrvcTransferApCoreNumber #define FinalDfltAssertCpuSrvcTransferApCoreNumber OvrdDfltAssertCpuSrvcTransferApCoreNumber #else #define FinalDfltAssertCpuSrvcTransferApCoreNumber DfltAssertCpuSrvcTransferApCoreNumber #endif #ifdef OvrdDfltAssertCpuSrvcGetStoredNodeNumber #define FinalDfltAssertCpuSrvcGetStoredNodeNumber OvrdDfltAssertCpuSrvcGetStoredNodeNumber #else #define FinalDfltAssertCpuSrvcGetStoredNodeNumber DfltAssertCpuSrvcGetStoredNodeNumber #endif #ifdef OvrdDfltAssertCpuSrvcCoreIdPositionInInitialApicId #define FinalDfltAssertCpuSrvcCoreIdPositionInInitialApicId OvrdDfltAssertCpuSrvcCoreIdPositionInInitialApicId #else #define FinalDfltAssertCpuSrvcCoreIdPositionInInitialApicId DfltAssertCpuSrvcCoreIdPositionInInitialApicId #endif #ifdef OvrdDfltAssertCpuSrvcSaveFeatures #define FinalDfltAssertCpuSrvcSaveFeatures OvrdDfltAssertCpuSrvcSaveFeatures #else #define FinalDfltAssertCpuSrvcSaveFeatures DfltAssertCpuSrvcSaveFeatures #endif #ifdef OvrdDfltAssertCpuSrvcWriteFeatures #define FinalDfltAssertCpuSrvcWriteFeatures OvrdDfltAssertCpuSrvcWriteFeatures #else #define FinalDfltAssertCpuSrvcWriteFeatures DfltAssertCpuSrvcWriteFeatures #endif #ifdef OvrdDfltAssertCpuSrvcSetWarmResetFlag #define FinalDfltAssertCpuSrvcSetWarmResetFlag OvrdDfltAssertCpuSrvcSetWarmResetFlag #else #define FinalDfltAssertCpuSrvcSetWarmResetFlag DfltAssertCpuSrvcSetWarmResetFlag #endif #ifdef OvrdDfltAssertCpuSrvcGetWarmResetFlag #define FinalDfltAssertCpuSrvcGetWarmResetFlag OvrdDfltAssertCpuSrvcGetWarmResetFlag #else #define FinalDfltAssertCpuSrvcGetWarmResetFlag DfltAssertCpuSrvcGetWarmResetFlag #endif #ifdef OvrdDfltAssertCpuSrvcGetBrandString1 #define FinalDfltAssertCpuSrvcGetBrandString1 OvrdDfltAssertCpuSrvcGetBrandString1 #else #define FinalDfltAssertCpuSrvcGetBrandString1 DfltAssertCpuSrvcGetBrandString1 #endif #ifdef OvrdDfltAssertCpuSrvcGetBrandString2 #define FinalDfltAssertCpuSrvcGetBrandString2 OvrdDfltAssertCpuSrvcGetBrandString2 #else #define FinalDfltAssertCpuSrvcGetBrandString2 DfltAssertCpuSrvcGetBrandString2 #endif #ifdef OvrdDfltAssertCpuSrvcGetMicroCodePatchesStruct #define FinalDfltAssertCpuSrvcGetMicroCodePatchesStruct OvrdDfltAssertCpuSrvcGetMicroCodePatchesStruct #else #define FinalDfltAssertCpuSrvcGetMicroCodePatchesStruct DfltAssertCpuSrvcGetMicroCodePatchesStruct #endif #ifdef OvrdDfltAssertCpuSrvcGetMicrocodeEquivalenceTable #define FinalDfltAssertCpuSrvcGetMicrocodeEquivalenceTable OvrdDfltAssertCpuSrvcGetMicrocodeEquivalenceTable #else #define FinalDfltAssertCpuSrvcGetMicrocodeEquivalenceTable DfltAssertCpuSrvcGetMicrocodeEquivalenceTable #endif #ifdef OvrdDfltAssertCpuSrvcGetCacheInfo #define FinalDfltAssertCpuSrvcGetCacheInfo OvrdDfltAssertCpuSrvcGetCacheInfo #else #define FinalDfltAssertCpuSrvcGetCacheInfo DfltAssertCpuSrvcGetCacheInfo #endif #ifdef OvrdDfltAssertCpuSrvcGetSysPmTableStruct #define FinalDfltAssertCpuSrvcGetSysPmTableStruct OvrdDfltAssertCpuSrvcGetSysPmTableStruct #else #define FinalDfltAssertCpuSrvcGetSysPmTableStruct DfltAssertCpuSrvcGetSysPmTableStruct #endif #ifdef OvrdDfltAssertCpuSrvcGetWheaInitData #define FinalDfltAssertCpuSrvcGetWheaInitData OvrdDfltAssertCpuSrvcGetWheaInitData #else #define FinalDfltAssertCpuSrvcGetWheaInitData DfltAssertCpuSrvcGetWheaInitData #endif #ifdef OvrdDfltAssertCpuSrvcGetPlatformTypeSpecificInfo #define FinalDfltAssertCpuSrvcGetPlatformTypeSpecificInfo OvrdDfltAssertCpuSrvcGetPlatformTypeSpecificInfo #else #define FinalDfltAssertCpuSrvcGetPlatformTypeSpecificInfo DfltAssertCpuSrvcGetPlatformTypeSpecificInfo #endif #ifdef OvrdDfltAssertCpuSrvcIsNbPstateEnabled #define FinalDfltAssertCpuSrvcIsNbPstateEnabled OvrdDfltAssertCpuSrvcIsNbPstateEnabled #else #define FinalDfltAssertCpuSrvcIsNbPstateEnabled DfltAssertCpuSrvcIsNbPstateEnabled #endif #ifdef OvrdDfltAssertCpuSrvcNextLinkHasHtPhyFeats #define FinalDfltAssertCpuSrvcNextLinkHasHtPhyFeats OvrdDfltAssertCpuSrvcNextLinkHasHtPhyFeats #else #define FinalDfltAssertCpuSrvcNextLinkHasHtPhyFeats DfltAssertCpuSrvcNextLinkHasHtPhyFeats #endif #ifdef OvrdDfltAssertCpuSrvcSetHtPhyRegister #define FinalDfltAssertCpuSrvcSetHtPhyRegister OvrdDfltAssertCpuSrvcSetHtPhyRegister #else #define FinalDfltAssertCpuSrvcSetHtPhyRegister DfltAssertCpuSrvcSetHtPhyRegister #endif #ifdef OvrdDfltAssertCpuSrvcGetNextHtLinkFeatures #define FinalDfltAssertCpuSrvcGetNextHtLinkFeatures OvrdDfltAssertCpuSrvcGetNextHtLinkFeatures #else #define FinalDfltAssertCpuSrvcGetNextHtLinkFeatures DfltAssertCpuSrvcGetNextHtLinkFeatures #endif #ifdef OvrdDfltAssertCpuSrvcRegisterTableList #define FinalDfltAssertCpuSrvcRegisterTableList OvrdDfltAssertCpuSrvcRegisterTableList #else #define FinalDfltAssertCpuSrvcRegisterTableList DfltAssertCpuSrvcRegisterTableList #endif #ifdef OvrdDfltAssertCpuSrvcTableEntryTypeDescriptors #define FinalDfltAssertCpuSrvcTableEntryTypeDescriptors OvrdDfltAssertCpuSrvcTableEntryTypeDescriptors #else #define FinalDfltAssertCpuSrvcTableEntryTypeDescriptors DfltAssertCpuSrvcTableEntryTypeDescriptors #endif #ifdef OvrdDfltAssertCpuSrvcPackageLinkMap #define FinalDfltAssertCpuSrvcPackageLinkMap OvrdDfltAssertCpuSrvcPackageLinkMap #else #define FinalDfltAssertCpuSrvcPackageLinkMap DfltAssertCpuSrvcPackageLinkMap #endif #ifdef OvrdDfltAssertCpuSrvcComputeUnitMap #define FinalDfltAssertCpuSrvcComputeUnitMap OvrdDfltAssertCpuSrvcComputeUnitMap #else #define FinalDfltAssertCpuSrvcComputeUnitMap DfltAssertCpuSrvcComputeUnitMap #endif #ifdef OvrdDfltAssertCpuSrvcInitCacheDisabled #define FinalDfltAssertCpuSrvcInitCacheDisabled OvrdDfltAssertCpuSrvcInitCacheDisabled #else #define FinalDfltAssertCpuSrvcInitCacheDisabled DfltAssertCpuSrvcInitCacheDisabled #endif #ifdef OvrdDfltAssertCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable #define FinalDfltAssertCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable OvrdDfltAssertCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable #else #define FinalDfltAssertCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable DfltAssertCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable #endif #ifdef OvrdDfltAssertCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable #define FinalDfltAssertCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable OvrdDfltAssertCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable #else #define FinalDfltAssertCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable DfltAssertCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable #endif #ifdef OvrdDfltAssertCpuSrvcPatchLoaderIsSharedByCU #define FinalDfltAssertCpuSrvcPatchLoaderIsSharedByCU OvrdDfltAssertCpuSrvcPatchLoaderIsSharedByCU #else #define FinalDfltAssertCpuSrvcPatchLoaderIsSharedByCU DfltAssertCpuSrvcPatchLoaderIsSharedByCU #endif // // Handle override definitions on DfltCpuSrvc // #ifdef OvrdDfltCpuSrvcRevision #define FinalDfltCpuSrvcRevision OvrdDfltCpuSrvcRevision #else #define FinalDfltCpuSrvcRevision DfltCpuSrvcRevision #endif #ifdef OvrdDfltCpuSrvcDisablePstate #define FinalDfltCpuSrvcDisablePstate OvrdDfltCpuSrvcDisablePstate #else #define FinalDfltCpuSrvcDisablePstate DfltCpuSrvcDisablePstate #endif #ifdef OvrdDfltCpuSrvcTransitionPstate #define FinalDfltCpuSrvcTransitionPstate OvrdDfltCpuSrvcTransitionPstate #else #define FinalDfltCpuSrvcTransitionPstate DfltCpuSrvcTransitionPstate #endif #ifdef OvrdDfltCpuSrvcGetProcIddMax #define FinalDfltCpuSrvcGetProcIddMax OvrdDfltCpuSrvcGetProcIddMax #else #define FinalDfltCpuSrvcGetProcIddMax DfltCpuSrvcGetProcIddMax #endif #ifdef OvrdDfltCpuSrvcGetTscRate #define FinalDfltCpuSrvcGetTscRate OvrdDfltCpuSrvcGetTscRate #else #define FinalDfltCpuSrvcGetTscRate DfltCpuSrvcGetTscRate #endif #ifdef OvrdDfltCpuSrvcGetCurrentNbFrequency #define FinalDfltCpuSrvcGetCurrentNbFrequency OvrdDfltCpuSrvcGetCurrentNbFrequency #else #define FinalDfltCpuSrvcGetCurrentNbFrequency DfltCpuSrvcGetCurrentNbFrequency #endif #ifdef OvrdDfltCpuSrvcGetMinMaxNbFrequency #define FinalDfltCpuSrvcGetMinMaxNbFrequency OvrdDfltCpuSrvcGetMinMaxNbFrequency #else #define FinalDfltCpuSrvcGetMinMaxNbFrequency DfltCpuSrvcGetMinMaxNbFrequency #endif #ifdef OvrdDfltCpuSrvcGetNbPstateInfo #define FinalDfltCpuSrvcGetNbPstateInfo OvrdDfltCpuSrvcGetNbPstateInfo #else #define FinalDfltCpuSrvcGetNbPstateInfo DfltCpuSrvcGetNbPstateInfo #endif #ifdef OvrdDfltCpuSrvcIsNbCofInitNeeded #define FinalDfltCpuSrvcIsNbCofInitNeeded OvrdDfltCpuSrvcIsNbCofInitNeeded #else #define FinalDfltCpuSrvcIsNbCofInitNeeded DfltCpuSrvcIsNbCofInitNeeded #endif #ifdef OvrdDfltCpuSrvcGetNbIddMax #define FinalDfltCpuSrvcGetNbIddMax OvrdDfltCpuSrvcGetNbIddMax #else #define FinalDfltCpuSrvcGetNbIddMax DfltCpuSrvcGetNbIddMax #endif #ifdef OvrdDfltCpuSrvcLaunchApCore #define FinalDfltCpuSrvcLaunchApCore OvrdDfltCpuSrvcLaunchApCore #else #define FinalDfltCpuSrvcLaunchApCore DfltCpuSrvcLaunchApCore #endif #ifdef OvrdDfltCpuSrvcGetNumberOfPhysicalCores #define FinalDfltCpuSrvcGetNumberOfPhysicalCores OvrdDfltCpuSrvcGetNumberOfPhysicalCores #else #define FinalDfltCpuSrvcGetNumberOfPhysicalCores DfltCpuSrvcGetNumberOfPhysicalCores #endif #ifdef OvrdDfltCpuSrvcGetApMailboxFromHardware #define FinalDfltCpuSrvcGetApMailboxFromHardware OvrdDfltCpuSrvcGetApMailboxFromHardware #else #define FinalDfltCpuSrvcGetApMailboxFromHardware DfltCpuSrvcGetApMailboxFromHardware #endif #ifdef OvrdDfltCpuSrvcSetApCoreNumber #define FinalDfltCpuSrvcSetApCoreNumber OvrdDfltCpuSrvcSetApCoreNumber #else #define FinalDfltCpuSrvcSetApCoreNumber DfltCpuSrvcSetApCoreNumber #endif #ifdef OvrdDfltCpuSrvcGetApCoreNumber #define FinalDfltCpuSrvcGetApCoreNumber OvrdDfltCpuSrvcGetApCoreNumber #else #define FinalDfltCpuSrvcGetApCoreNumber DfltCpuSrvcGetApCoreNumber #endif #ifdef OvrdDfltCpuSrvcTransferApCoreNumber #define FinalDfltCpuSrvcTransferApCoreNumber OvrdDfltCpuSrvcTransferApCoreNumber #else #define FinalDfltCpuSrvcTransferApCoreNumber DfltCpuSrvcTransferApCoreNumber #endif #ifdef OvrdDfltCpuSrvcGetStoredNodeNumber #define FinalDfltCpuSrvcGetStoredNodeNumber OvrdDfltCpuSrvcGetStoredNodeNumber #else #define FinalDfltCpuSrvcGetStoredNodeNumber DfltCpuSrvcGetStoredNodeNumber #endif #ifdef OvrdDfltCpuSrvcCoreIdPositionInInitialApicId #define FinalDfltCpuSrvcCoreIdPositionInInitialApicId OvrdDfltCpuSrvcCoreIdPositionInInitialApicId #else #define FinalDfltCpuSrvcCoreIdPositionInInitialApicId DfltCpuSrvcCoreIdPositionInInitialApicId #endif #ifdef OvrdDfltCpuSrvcSaveFeatures #define FinalDfltCpuSrvcSaveFeatures OvrdDfltCpuSrvcSaveFeatures #else #define FinalDfltCpuSrvcSaveFeatures DfltCpuSrvcSaveFeatures #endif #ifdef OvrdDfltCpuSrvcWriteFeatures #define FinalDfltCpuSrvcWriteFeatures OvrdDfltCpuSrvcWriteFeatures #else #define FinalDfltCpuSrvcWriteFeatures DfltCpuSrvcWriteFeatures #endif #ifdef OvrdDfltCpuSrvcSetWarmResetFlag #define FinalDfltCpuSrvcSetWarmResetFlag OvrdDfltCpuSrvcSetWarmResetFlag #else #define FinalDfltCpuSrvcSetWarmResetFlag DfltCpuSrvcSetWarmResetFlag #endif #ifdef OvrdDfltCpuSrvcGetWarmResetFlag #define FinalDfltCpuSrvcGetWarmResetFlag OvrdDfltCpuSrvcGetWarmResetFlag #else #define FinalDfltCpuSrvcGetWarmResetFlag DfltCpuSrvcGetWarmResetFlag #endif #ifdef OvrdDfltCpuSrvcGetBrandString1 #define FinalDfltCpuSrvcGetBrandString1 OvrdDfltCpuSrvcGetBrandString1 #else #define FinalDfltCpuSrvcGetBrandString1 DfltCpuSrvcGetBrandString1 #endif #ifdef OvrdDfltCpuSrvcGetBrandString2 #define FinalDfltCpuSrvcGetBrandString2 OvrdDfltCpuSrvcGetBrandString2 #else #define FinalDfltCpuSrvcGetBrandString2 DfltCpuSrvcGetBrandString2 #endif #ifdef OvrdDfltCpuSrvcGetMicroCodePatchesStruct #define FinalDfltCpuSrvcGetMicroCodePatchesStruct OvrdDfltCpuSrvcGetMicroCodePatchesStruct #else #define FinalDfltCpuSrvcGetMicroCodePatchesStruct DfltCpuSrvcGetMicroCodePatchesStruct #endif #ifdef OvrdDfltCpuSrvcGetMicrocodeEquivalenceTable #define FinalDfltCpuSrvcGetMicrocodeEquivalenceTable OvrdDfltCpuSrvcGetMicrocodeEquivalenceTable #else #define FinalDfltCpuSrvcGetMicrocodeEquivalenceTable DfltCpuSrvcGetMicrocodeEquivalenceTable #endif #ifdef OvrdDfltCpuSrvcGetCacheInfo #define FinalDfltCpuSrvcGetCacheInfo OvrdDfltCpuSrvcGetCacheInfo #else #define FinalDfltCpuSrvcGetCacheInfo DfltCpuSrvcGetCacheInfo #endif #ifdef OvrdDfltCpuSrvcGetSysPmTableStruct #define FinalDfltCpuSrvcGetSysPmTableStruct OvrdDfltCpuSrvcGetSysPmTableStruct #else #define FinalDfltCpuSrvcGetSysPmTableStruct DfltCpuSrvcGetSysPmTableStruct #endif #ifdef OvrdDfltCpuSrvcGetWheaInitData #define FinalDfltCpuSrvcGetWheaInitData OvrdDfltCpuSrvcGetWheaInitData #else #define FinalDfltCpuSrvcGetWheaInitData DfltCpuSrvcGetWheaInitData #endif #ifdef OvrdDfltCpuSrvcGetPlatformTypeSpecificInfo #define FinalDfltCpuSrvcGetPlatformTypeSpecificInfo OvrdDfltCpuSrvcGetPlatformTypeSpecificInfo #else #define FinalDfltCpuSrvcGetPlatformTypeSpecificInfo DfltCpuSrvcGetPlatformTypeSpecificInfo #endif #ifdef OvrdDfltCpuSrvcIsNbPstateEnabled #define FinalDfltCpuSrvcIsNbPstateEnabled OvrdDfltCpuSrvcIsNbPstateEnabled #else #define FinalDfltCpuSrvcIsNbPstateEnabled DfltCpuSrvcIsNbPstateEnabled #endif #ifdef OvrdDfltCpuSrvcNextLinkHasHtPhyFeats #define FinalDfltCpuSrvcNextLinkHasHtPhyFeats OvrdDfltCpuSrvcNextLinkHasHtPhyFeats #else #define FinalDfltCpuSrvcNextLinkHasHtPhyFeats DfltCpuSrvcNextLinkHasHtPhyFeats #endif #ifdef OvrdDfltCpuSrvcSetHtPhyRegister #define FinalDfltCpuSrvcSetHtPhyRegister OvrdDfltCpuSrvcSetHtPhyRegister #else #define FinalDfltCpuSrvcSetHtPhyRegister DfltCpuSrvcSetHtPhyRegister #endif #ifdef OvrdDfltCpuSrvcGetNextHtLinkFeatures #define FinalDfltCpuSrvcGetNextHtLinkFeatures OvrdDfltCpuSrvcGetNextHtLinkFeatures #else #define FinalDfltCpuSrvcGetNextHtLinkFeatures DfltCpuSrvcGetNextHtLinkFeatures #endif #ifdef OvrdDfltCpuSrvcRegisterTableList #define FinalDfltCpuSrvcRegisterTableList OvrdDfltCpuSrvcRegisterTableList #else #define FinalDfltCpuSrvcRegisterTableList DfltCpuSrvcRegisterTableList #endif #ifdef OvrdDfltCpuSrvcTableEntryTypeDescriptors #define FinalDfltCpuSrvcTableEntryTypeDescriptors OvrdDfltCpuSrvcTableEntryTypeDescriptors #else #define FinalDfltCpuSrvcTableEntryTypeDescriptors DfltCpuSrvcTableEntryTypeDescriptors #endif #ifdef OvrdDfltCpuSrvcPackageLinkMap #define FinalDfltCpuSrvcPackageLinkMap OvrdDfltCpuSrvcPackageLinkMap #else #define FinalDfltCpuSrvcPackageLinkMap DfltCpuSrvcPackageLinkMap #endif #ifdef OvrdDfltCpuSrvcComputeUnitMap #define FinalDfltCpuSrvcComputeUnitMap OvrdDfltCpuSrvcComputeUnitMap #else #define FinalDfltCpuSrvcComputeUnitMap DfltCpuSrvcComputeUnitMap #endif #ifdef OvrdDfltCpuSrvcInitCacheDisabled #define FinalDfltCpuSrvcInitCacheDisabled OvrdDfltCpuSrvcInitCacheDisabled #else #define FinalDfltCpuSrvcInitCacheDisabled DfltCpuSrvcInitCacheDisabled #endif #ifdef OvrdDfltCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable #define FinalDfltCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable OvrdDfltCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable #else #define FinalDfltCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable DfltCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable #endif #ifdef OvrdDfltCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable #define FinalDfltCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable OvrdDfltCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable #else #define FinalDfltCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable DfltCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable #endif #ifdef OvrdDfltCpuSrvcPatchLoaderIsSharedByCU #define FinalDfltCpuSrvcPatchLoaderIsSharedByCU OvrdDfltCpuSrvcPatchLoaderIsSharedByCU #else #define FinalDfltCpuSrvcPatchLoaderIsSharedByCU DfltCpuSrvcPatchLoaderIsSharedByCU #endif // // Make final service definition with considerations of below: // 1. Common build config swich control // 2. Override service definition // // Member: (UINT16) Revision #ifdef CpuSrvcRevision #define FinalCpuSrvcRevision CpuSrvcRevision #else #define FinalCpuSrvcRevision FinalDfltCpuSrvcRevision #endif // Member: (PF_CPU_DISABLE_PSTATE) DisablePstate #if AGESA_ENTRY_INIT_EARLY == TRUE #ifdef CpuSrvcDisablePstate #define FinalCpuSrvcDisablePstate CpuSrvcDisablePstate #ifndef EXTERN_FINALCPUSRVCDISABLEPSTATE #define EXTERN_FINALCPUSRVCDISABLEPSTATE extern F_CPU_DISABLE_PSTATE FinalCpuSrvcDisablePstate; #endif #else #define FinalCpuSrvcDisablePstate FinalDfltCpuSrvcDisablePstate #endif #else #define FinalCpuSrvcDisablePstate FinalDfltAssertCpuSrvcDisablePstate #endif // Member: (PF_CPU_TRANSITION_PSTATE) TransitionPstate #if (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_POST == TRUE) || (AGESA_ENTRY_INIT_LATE == TRUE) #ifdef CpuSrvcTransitionPstate #define FinalCpuSrvcTransitionPstate CpuSrvcTransitionPstate #ifndef EXTERN_FINALCPUSRVCTRANSITIONPSTATE #define EXTERN_FINALCPUSRVCTRANSITIONPSTATE extern F_CPU_TRANSITION_PSTATE FinalCpuSrvcTransitionPstate; #endif #else #define FinalCpuSrvcTransitionPstate FinalDfltCpuSrvcTransitionPstate #endif #else #define FinalCpuSrvcTransitionPstate FinalDfltAssertCpuSrvcTransitionPstate #endif // Member: (PF_CPU_GET_IDD_MAX) GetProcIddMax #if (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_POST == TRUE) #ifdef CpuSrvcGetProcIddMax #define FinalCpuSrvcGetProcIddMax CpuSrvcGetProcIddMax extern F_CPU_GET_IDD_MAX FinalCpuSrvcGetProcIddMax; #else #define FinalCpuSrvcGetProcIddMax FinalDfltCpuSrvcGetProcIddMax #endif #else #define FinalCpuSrvcGetProcIddMax FinalDfltAssertCpuSrvcGetProcIddMax #endif // Member: (PF_CPU_GET_TSC_RATE) GetTscRate #if (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_LATE == TRUE) #ifdef CpuSrvcGetTscRate #define FinalCpuSrvcGetTscRate CpuSrvcGetTscRate #ifndef EXTERN_FINALCPUSRVCGETTSCRATE #define EXTERN_FINALCPUSRVCGETTSCRATE extern F_CPU_GET_TSC_RATE FinalCpuSrvcGetTscRate; #endif #else #define FinalCpuSrvcGetTscRate FinalDfltCpuSrvcGetTscRate #endif #else #define FinalCpuSrvcGetTscRate FinalDfltAssertCpuSrvcGetTscRate #endif // Member: (PF_CPU_GET_NB_FREQ) GetCurrentNbFrequency #if AGESA_ENTRY_INIT_EARLY == TRUE #ifdef CpuSrvcGetCurrentNbFrequency #define FinalCpuSrvcGetCurrentNbFrequency CpuSrvcGetCurrentNbFrequency extern F_CPU_GET_NB_FREQ FinalCpuSrvcGetCurrentNbFrequency; #else #define FinalCpuSrvcGetCurrentNbFrequency FinalDfltCpuSrvcGetCurrentNbFrequency #endif #else #define FinalCpuSrvcGetCurrentNbFrequency FinalDfltAssertCpuSrvcGetCurrentNbFrequency #endif // Member: (PF_CPU_GET_MIN_MAX_NB_FREQ) GetMinMaxNbFrequency #if AGESA_ENTRY_INIT_EARLY == TRUE #ifdef CpuSrvcGetMinMaxNbFrequency #define FinalCpuSrvcGetMinMaxNbFrequency CpuSrvcGetMinMaxNbFrequency extern F_CPU_GET_MIN_MAX_NB_FREQ FinalCpuSrvcGetMinMaxNbFrequency; #else #define FinalCpuSrvcGetMinMaxNbFrequency FinalDfltCpuSrvcGetMinMaxNbFrequency #endif #else #define FinalCpuSrvcGetMinMaxNbFrequency FinalDfltAssertCpuSrvcGetMinMaxNbFrequency #endif // Member: (PF_CPU_GET_NB_PSTATE_INFO) GetNbPstateInfo #if AGESA_ENTRY_INIT_EARLY == TRUE #ifdef CpuSrvcGetNbPstateInfo #define FinalCpuSrvcGetNbPstateInfo CpuSrvcGetNbPstateInfo extern F_CPU_GET_NB_PSTATE_INFO FinalCpuSrvcGetNbPstateInfo; #else #define FinalCpuSrvcGetNbPstateInfo FinalDfltCpuSrvcGetNbPstateInfo #endif #else #define FinalCpuSrvcGetNbPstateInfo FinalDfltAssertCpuSrvcGetNbPstateInfo #endif // Member: (PF_CPU_IS_NBCOF_INIT_NEEDED) IsNbCofInitNeeded #if AGESA_ENTRY_INIT_EARLY == TRUE #ifdef CpuSrvcIsNbCofInitNeeded #define FinalCpuSrvcIsNbCofInitNeeded CpuSrvcIsNbCofInitNeeded extern F_CPU_IS_NBCOF_INIT_NEEDED FinalCpuSrvcIsNbCofInitNeeded; #else #define FinalCpuSrvcIsNbCofInitNeeded FinalDfltCpuSrvcIsNbCofInitNeeded #endif #else #define FinalCpuSrvcIsNbCofInitNeeded FinalDfltAssertCpuSrvcIsNbCofInitNeeded #endif // Member: (PF_CPU_GET_NB_IDD_MAX) GetNbIddMax #if AGESA_ENTRY_INIT_EARLY == TRUE #ifdef CpuSrvcGetNbIddMax #define FinalCpuSrvcGetNbIddMax CpuSrvcGetNbIddMax extern F_CPU_GET_NB_IDD_MAX FinalCpuSrvcGetNbIddMax; #else #define FinalCpuSrvcGetNbIddMax FinalDfltCpuSrvcGetNbIddMax #endif #else #define FinalCpuSrvcGetNbIddMax FinalDfltAssertCpuSrvcGetNbIddMax #endif // Member: (PF_CPU_AP_INITIAL_LAUNCH) LaunchApCore #if AGESA_ENTRY_INIT_EARLY == TRUE #ifdef CpuSrvcLaunchApCore #define FinalCpuSrvcLaunchApCore CpuSrvcLaunchApCore #ifndef EXTERN_FINALCPUSRVCLAUNCHAPCORE #define EXTERN_FINALCPUSRVCLAUNCHAPCORE extern F_CPU_AP_INITIAL_LAUNCH FinalCpuSrvcLaunchApCore; #endif #else #define FinalCpuSrvcLaunchApCore FinalDfltCpuSrvcLaunchApCore #endif #else #define FinalCpuSrvcLaunchApCore FinalDfltAssertCpuSrvcLaunchApCore #endif // Member:(PF_CPU_NUMBER_OF_PHYSICAL_CORES) GetNumberOfPhysicalCores #if (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_LATE == TRUE) #ifdef CpuSrvcGetNumberOfPhysicalCores #define FinalCpuSrvcGetNumberOfPhysicalCores CpuSrvcGetNumberOfPhysicalCores extern F_CPU_NUMBER_OF_PHYSICAL_CORES FinalCpuSrvcGetNumberOfPhysicalCores; #else #define FinalCpuSrvcGetNumberOfPhysicalCores FinalDfltCpuSrvcGetNumberOfPhysicalCores #endif #else #define FinalCpuSrvcGetNumberOfPhysicalCores FinalDfltAssertCpuSrvcGetNumberOfPhysicalCores #endif // Member: (PF_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE) GetApMailboxFromHardware #if (AGESA_ENTRY_INIT_RESET == TRUE) || (AGESA_ENTRY_INIT_EARLY == TRUE) #ifdef CpuSrvcGetApMailboxFromHardware #define FinalCpuSrvcGetApMailboxFromHardware CpuSrvcGetApMailboxFromHardware extern F_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE FinalCpuSrvcGetApMailboxFromHardware; #else #define FinalCpuSrvcGetApMailboxFromHardware FinalDfltCpuSrvcGetApMailboxFromHardware #endif #else #define FinalCpuSrvcGetApMailboxFromHardware FinalDfltAssertCpuSrvcGetApMailboxFromHardware #endif // Member: (PF_CPU_SET_AP_CORE_NUMBER) SetApCoreNumber #if (AGESA_ENTRY_INIT_RESET == TRUE) || (AGESA_ENTRY_INIT_EARLY == TRUE) #ifdef CpuSrvcSetApCoreNumber #define FinalCpuSrvcSetApCoreNumber CpuSrvcSetApCoreNumber extern F_CPU_SET_AP_CORE_NUMBER FinalCpuSrvcSetApCoreNumber; #else #define FinalCpuSrvcSetApCoreNumber FinalDfltCpuSrvcSetApCoreNumber #endif #else #define FinalCpuSrvcSetApCoreNumber FinalDfltAssertCpuSrvcSetApCoreNumber #endif // Member: (PF_CPU_GET_AP_CORE_NUMBER) GetApCoreNumber #if (AGESA_ENTRY_INIT_RESET == TRUE) || (AGESA_ENTRY_INIT_EARLY == TRUE) || \ (AGESA_ENTRY_INIT_POST == TRUE) || (AGESA_ENTRY_INIT_LATE == TRUE) #ifdef CpuSrvcGetApCoreNumber #define FinalCpuSrvcGetApCoreNumber CpuSrvcGetApCoreNumber extern F_CPU_GET_AP_CORE_NUMBER FinalCpuSrvcGetApCoreNumber; #else #define FinalCpuSrvcGetApCoreNumber FinalDfltCpuSrvcGetApCoreNumber #endif #else #define FinalCpuSrvcGetApCoreNumber FinalDfltAssertCpuSrvcGetApCoreNumber #endif // Member: (PF_CPU_TRANSFER_AP_CORE_NUMBER) TransferApCoreNumber #if (AGESA_ENTRY_INIT_RESET == TRUE) || (AGESA_ENTRY_INIT_EARLY == TRUE) #ifdef CpuSrvcTransferApCoreNumber #define FinalCpuSrvcTransferApCoreNumber CpuSrvcTransferApCoreNumber extern F_CPU_TRANSFER_AP_CORE_NUMBER FinalCpuSrvcTransferApCoreNumber; #else #define FinalCpuSrvcTransferApCoreNumber FinalDfltCpuSrvcTransferApCoreNumber #endif #else #define FinalCpuSrvcTransferApCoreNumber FinalDfltAssertCpuSrvcTransferApCoreNumber #endif // Member: (PF_CPU_GET_STORED_NODE_NUMBER) GetStoredNodeNumber #if (AGESA_ENTRY_INIT_RESET == TRUE) || (AGESA_ENTRY_INIT_EARLY == TRUE) || \ (AGESA_ENTRY_INIT_ENV == TRUE) || (AGESA_ENTRY_INIT_MID == TRUE) || (AGESA_ENTRY_INIT_POST == TRUE) || \ (AGESA_ENTRY_INIT_LATE == TRUE) || (AGESA_ENTRY_INIT_S3SAVE == TRUE) || (AGESA_ENTRY_INIT_RESUME == TRUE) || \ (AGESA_ENTRY_INIT_LATE_RESTORE == TRUE) || (AGESA_ENTRY_INIT_GENERAL_SERVICES == TRUE) #ifdef CpuSrvcGetStoredNodeNumber #define FinalCpuSrvcGetStoredNodeNumber CpuSrvcGetStoredNodeNumber extern F_CPU_GET_STORED_NODE_NUMBER FinalCpuSrvcGetStoredNodeNumber; #else #define FinalCpuSrvcGetStoredNodeNumber FinalDfltCpuSrvcGetStoredNodeNumber #endif #else #define FinalCpuSrvcGetStoredNodeNumber FinalDfltAssertCpuSrvcGetStoredNodeNumber #endif // Member: (PF_CORE_ID_POSITION_IN_INITIAL_APIC_ID) CoreIdPositionInInitialApicId #if (AGESA_ENTRY_INIT_RESET == TRUE) || (AGESA_ENTRY_INIT_EARLY == TRUE) || \ (AGESA_ENTRY_INIT_POST == TRUE) || (AGESA_ENTRY_INIT_GENERAL_SERVICES == TRUE) #ifdef CpuSrvcCoreIdPositionInInitialApicId #define FinalCpuSrvcCoreIdPositionInInitialApicId CpuSrvcCoreIdPositionInInitialApicId #ifndef EXTERN_FINALCPUSRVCCOREIDPOSITIONININITIALAPICID #define EXTERN_FINALCPUSRVCCOREIDPOSITIONININITIALAPICID extern F_CORE_ID_POSITION_IN_INITIAL_APIC_ID FinalCpuSrvcCoreIdPositionInInitialApicId; #endif #else #define FinalCpuSrvcCoreIdPositionInInitialApicId FinalDfltCpuSrvcoreIdPositionInInitialApicId #endif #else #define FinalCpuSrvcCoreIdPositionInInitialApicId FinalDfltAssertCpuSrvcCoreIdPositionInInitialApicId #endif // Member: (PF_CPU_SAVE_FEATURES) SaveFeatures #if (AGESA_ENTRY_INIT_POST == TRUE) #ifdef CpuSrvcSaveFeatures #define FinalCpuSrvcSaveFeatures CpuSrvcSaveFeatures extern F_CPU_SAVE_FEATURES FinalCpuSrvcSaveFeatures; #else #define FinalCpuSrvcSaveFeatures FinalDfltCpuSrvcSaveFeatures #endif #else #define FinalCpuSrvcSaveFeatures FinalDfltAssertCpuSrvcSaveFeatures #endif // Member: (PF_CPU_WRITE_FEATURES) WriteFeatures #if (AGESA_ENTRY_INIT_POST == TRUE) #ifdef CpuSrvcWriteFeatures #define FinalCpuSrvcWriteFeatures CpuSrvcWriteFeatures extern F_CPU_WRITE_FEATURES FinalCpuSrvcWriteFeatures; #else #define FinalCpuSrvcWriteFeatures FinalDfltCpuSrvcWriteFeatures #endif #else #define FinalCpuSrvcWriteFeatures FinalDfltAssertCpuSrvcWriteFeatures #endif // Member: (PF_CPU_SET_WARM_RESET_FLAG) SetWarmResetFlag #if (AGESA_ENTRY_INIT_RESET == TRUE) || (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_POST == TRUE) #ifdef CpuSrvcSetWarmResetFlag #define FinalCpuSrvcSetWarmResetFlag CpuSrvcSetWarmResetFlag #ifndef EXTERN_FINALCPUSRVCSETWARMRESETFLAG #define EXTERN_FINALCPUSRVCSETWARMRESETFLAG extern F_CPU_SET_WARM_RESET_FLAG FinalCpuSrvcSetWarmResetFlag; #endif #else #define FinalCpuSrvcSetWarmResetFlag FinalDfltCpuSrvcSetWarmResetFlag #endif #else #define FinalCpuSrvcSetWarmResetFlag FinalDfltAssertCpuSrvcSetWarmResetFlag #endif // Member: (PF_CPU_GET_WARM_RESET_FLAG) GetWarmResetFlag #if (AGESA_ENTRY_INIT_RESET == TRUE) || (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_POST == TRUE) #ifdef CpuSrvcGetWarmResetFlag #define FinalCpuSrvcGetWarmResetFlag CpuSrvcGetWarmResetFlag #ifndef EXTERN_FINALCPUSRVCGETWARMRESETFLAG #define EXTERN_FINALCPUSRVCGETWARMRESETFLAG extern F_CPU_GET_WARM_RESET_FLAG FinalCpuSrvcGetWarmResetFlag; #endif #else #define FinalCpuSrvcGetWarmResetFlag FinalDfltCpuSrvcGetWarmResetFlag #endif #else #define FinalCpuSrvcGetWarmResetFlag FinalDfltAssertCpuSrvcGetWarmResetFlag #endif // Member: (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) GetBrandString1 #if (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_LATE == TRUE) #ifdef CpuSrvcGetBrandString1 #define FinalCpuSrvcGetBrandString1 CpuSrvcGetBrandString1 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY FinalCpuSrvcGetBrandString1; #else #define FinalCpuSrvcGetBrandString1 FinalDfltCpuSrvcGetBrandString1 #endif #else #define FinalCpuSrvcGetBrandString1 FinalDfltAssertCpuSrvcGetBrandString1 #endif // Member: (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) GetBrandString2 #if (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_LATE == TRUE) #ifdef CpuSrvcGetBrandString2 #define FinalCpuSrvcGetBrandString2 CpuSrvcGetBrandString2 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY FinalCpuSrvcGetBrandString2; #else #define FinalCpuSrvcGetBrandString2 FinalDfltCpuSrvcGetBrandString2 #endif #else #define FinalCpuSrvcGetBrandString2 FinalDfltAssertCpuSrvcGetBrandString2 #endif // Member: (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) GetMicroCodePatchesStruct #if (AGESA_ENTRY_INIT_EARLY == TRUE) #ifdef CpuSrvcGetMicroCodePatchesStruct #define FinalCpuSrvcGetMicroCodePatchesStruct CpuSrvcGetMicroCodePatchesStruct #ifndef EXTERN_FINALCPUSRVCGETMICROCODEPATCHESSTRUCT #define EXTERN_FINALCPUSRVCGETMICROCODEPATCHESSTRUCT extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY FinalCpuSrvcGetMicroCodePatchesStruct; #endif #else #define FinalCpuSrvcGetMicroCodePatchesStruct FinalDfltCpuSrvcGetMicroCodePatchesStruct #endif #else #define FinalCpuSrvcGetMicroCodePatchesStruct FinalDfltAssertCpuSrvcGetMicroCodePatchesStruct #endif // Member: (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) GetMicrocodeEquivalenceTable #if (AGESA_ENTRY_INIT_EARLY == TRUE) #ifdef CpuSrvcGetMicrocodeEquivalenceTable #define FinalCpuSrvcGetMicrocodeEquivalenceTable CpuSrvcGetMicrocodeEquivalenceTable #ifndef EXTERN_FINALCPUSRVCGETMICROCODEEQUIVALENCETABLE #define EXTERN_FINALCPUSRVCGETMICROCODEEQUIVALENCETABLE extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY FinalCpuSrvcGetMicrocodeEquivalenceTable; #endif #else #define FinalCpuSrvcGetMicrocodeEquivalenceTable FinalDfltCpuSrvcGetMicrocodeEquivalenceTable #endif #else #define FinalCpuSrvcGetMicrocodeEquivalenceTable FinalDfltAssertCpuSrvcGetMicrocodeEquivalenceTable #endif // Member: (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) GetCacheInfo #if (AGESA_ENTRY_INIT_RESET == TRUE) || (AGESA_ENTRY_INIT_EARLY == TRUE) #ifdef CpuSrvcGetCacheInfo #define FinalCpuSrvcGetCacheInfo CpuSrvcGetCacheInfo extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY FinalCpuSrvcGetCacheInfo; #else #define FinalCpuSrvcGetCacheInfo FinalDfltCpuSrvcGetCacheInfo #endif #else #define FinalCpuSrvcGetCacheInfo FinalDfltAssertCpuSrvcGetCacheInfo #endif // Member: (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) GetSysPmTableStruct #if AGESA_ENTRY_INIT_EARLY == TRUE #ifdef CpuSrvcGetSysPmTableStruct #define FinalCpuSrvcGetSysPmTableStruct CpuSrvcGetSysPmTableStruct extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY FinalCpuSrvcGetSysPmTableStruct; #else #define FinalCpuSrvcGetSysPmTableStruct FinalDfltCpuSrvcGetSysPmTableStruct #endif #else #define FinalCpuSrvcGetSysPmTableStruct FinalDfltAssertCpuSrvcGetSysPmTableStruct #endif // Member: (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) GetWheaInitData #if AGESA_ENTRY_INIT_LATE == TRUE #ifdef CpuSrvcGetWheaInitData #define FinalCpuSrvcGetWheaInitData CpuSrvcGetWheaInitData #ifndef EXTERN_FINALCPUSRVCGETWHEAINITDATA #define EXTERN_FINALCPUSRVCGETWHEAINITDATA extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY FinalCpuSrvcGetWheaInitData; #endif #else #define FinalCpuSrvcGetWheaInitData FinalDfltCpuSrvcGetWheaInitData #endif #else #define FinalCpuSrvcGetWheaInitData FinalDfltAssertCpuSrvcGetWheaInitData #endif // Member: (PF_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO) GetPlatformTypeSpecificInfo #if (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_LATE == TRUE) #ifdef CpuSrvcGetPlatformTypeSpecificInfo #define FinalCpuSrvcGetPlatformTypeSpecificInfo CpuSrvcGetPlatformTypeSpecificInfo extern F_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO FinalCpuSrvcGetPlatformTypeSpecificInfo; #else #define FinalCpuSrvcGetPlatformTypeSpecificInfo FinalDfltCpuSrvcGetPlatformTypeSpecificInfo #endif #else #define FinalCpuSrvcGetPlatformTypeSpecificInfo FinalDfltAssertCpuSrvcGetPlatformTypeSpecificInfo #endif // Member: (PF_IS_NB_PSTATE_ENABLED) IsNbPstateEnabled #if (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_POST == TRUE) #ifdef CpuSrvcIsNbPstateEnabled #define FinalCpuSrvcIsNbPstateEnabled CpuSrvcIsNbPstateEnabled extern F_IS_NB_PSTATE_ENABLED FinalCpuSrvcIsNbPstateEnabled; #else #define FinalCpuSrvcIsNbPstateEnabled FinalDfltCpuSrvcIsNbPstateEnabled #endif #else #define FinalCpuSrvcIsNbPstateEnabled FinalDfltAssertCpuSrvcIsNbPstateEnabled #endif // Member: (PF_NEXT_LINK_HAS_HTFPY_FEATS) NextLinkHasHtPhyFeats #if BASE_FAMILY_HT_PCI == TRUE #ifdef CpuSrvcNextLinkHasHtPhyFeats #define FinalCpuSrvcNextLinkHasHtPhyFeats CpuSrvcNextLinkHasHtPhyFeats extern F_NEXT_LINK_HAS_HTPHY_FEATS FinalCpuSrvcNextLinkHasHtPhyFeats; #else #define FinalCpuSrvcNextLinkHasHtPhyFeats FinalDfltCpuSrvcNextLinkHasHtPhyFeats #endif #else #define FinalCpuSrvcNextLinkHasHtPhyFeats FinalDfltAssertCpuSrvcNextLinkHasHtPhyFeats #endif // Member: (PF_SET_HT_PHY_REGISTER) SetHtPhyRegister #if BASE_FAMILY_HT_PCI == TRUE #ifdef CpuSrvcSetHtPhyRegister #define FinalCpuSrvcSetHtPhyRegister CpuSrvcSetHtPhyRegister extern F_SET_HT_PHY_REGISTER FinalCpuSrvcSetHtPhyRegister; #else #define FinalCpuSrvcSetHtPhyRegister FinalDfltCpuSrvcSetHtPhyRegister #endif #else #define FinalCpuSrvcSetHtPhyRegister FinalDfltAssertCpuSrvcSetHtPhyRegister #endif // Member: (PF_GET_NEXT_HT_LINK_FEATURES) GetNextHtLinkFeatures #if BASE_FAMILY_PCI == TRUE #ifdef CpuSrvcGetNextHtLinkFeatures #define FinalCpuSrvcGetNextHtLinkFeatures CpuSrvcGetNextHtLinkFeatures extern F_GET_NEXT_HT_LINK_FEATURES FinalCpuSrvcGetNextHtLinkFeatures; #else #define FinalCpuSrvcGetNextHtLinkFeatures FinalDfltCpuSrvcGetNextHtLinkFeatures #endif #else #define FinalCpuSrvcGetNextHtLinkFeatures FinalDfltAssertCpuSrvcGetNextHtLinkFeatures #endif // Member: (REGISTER_TABLE **) RegisterTableList #if USES_REGISTER_TABLES == TRUE // (AGESA_ENTRY_INIT_EARLY == TRUE) #ifdef CpuSrvcRegisterTableList #define FinalCpuSrvcRegisterTableList CpuSrvcRegisterTableList #else #define FinalCpuSrvcRegisterTableList FinalDfltCpuSrvcRegisterTableList #endif #else #define FinalCpuSrvcRegisterTableList FinalDfltAssertCpuSrvcRegisterTableList #endif // Member: (TABLE_ENTRY_TYPE_DESCRIPTOR *) TableEntryTypeDescriptors #if USES_REGISTER_TABLES == TRUE // (AGESA_ENTRY_INIT_EARLY == TRUE) #ifdef CpuSrvcTableEntryTypeDescriptors #define FinalCpuSrvcTableEntryTypeDescriptors CpuSrvcTableEntryTypeDescriptors #else #define FinalCpuSrvcTableEntryTypeDescriptors FinalDfltCpuSrvcTableEntryTypeDescriptors #endif #else #define FinalCpuSrvcTableEntryTypeDescriptors FinalDfltAssertCpuSrvcTableEntryTypeDescriptors #endif // Member: (PACKAGE_HTLINK_MAP) PackageLinkMap #if MODEL_SPECIFIC_HT_PCI == TRUE #ifdef CpuSrvcPackageLinkMap #define FinalCpuSrvcPackageLinkMap CpuSrvcPackageLinkMap #else #define FinalCpuSrvcPackageLinkMap FinalDfltCpuSrvcPackageLinkMap #endif #else #define FinalCpuSrvcPackageLinkMap FinalDfltAssertCpuSrvcPackageLinkMap #endif // Member: (COMPUTE_UNIT_MAP *) ComputeUnitMap #ifdef CpuSrvcComputeUnitMap #define FinalCpuSrvcComputeUnitMap CpuSrvcComputeUnitMap #else #define FinalCpuSrvcComputeUnitMap FinalDfltCpuSrvcComputeUnitMap #endif // Member: (FAMILY_CACHE_INIT_POLICY) InitCacheDisabled #ifdef CpuSrvcInitCacheDisabled #define FinalCpuSrvcInitCacheDisabled CpuSrvcInitCacheDisabled #else #define FinalCpuSrvcInitCacheDisabled FinalDfltCpuSrvcInitCacheDisabled #endif // Member: (PF_GET_EARLY_INIT_TABLE) GetEarlyInitBeforeApLaunchOnCoreTable #if AGESA_ENTRY_INIT_EARLY == TRUE #ifdef CpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable #define FinalCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable CpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable extern F_GET_EARLY_INIT_TABLE FinalCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable; #else #define FinalCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable FinalDfltCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable #endif #else #define FinalCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable FinalDfltAssertCpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable #endif // Member: (PF_GET_EARLY_INIT_TABLE) GetEarlyInitAfterApLaunchOnCoreTable #if AGESA_ENTRY_INIT_EARLY == TRUE #ifdef CpuSrvcGetEarlyInitAfterApLaunchOnCoreTable #define FinalCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable CpuSrvcGetEarlyInitAfterApLaunchOnCoreTable extern F_GET_EARLY_INIT_TABLE FinalCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable; #else #define FinalCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable FinalDfltCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable #endif #else #define FinalCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable FinalDfltAssertCpuSrvcGetEarlyInitAfterApLaunchOnCoreTable #endif // Member: (BOOLEAN) PatchLoaderIsSharedByCU #if (AGESA_ENTRY_INIT_EARLY == TRUE) #ifdef CpuSrvcPatchLoaderIsSharedByCU #define FinalCpuSrvcPatchLoaderIsSharedByCU CpuSrvcPatchLoaderIsSharedByCU #else #define FinalCpuSrvcPatchLoaderIsSharedByCU FinalDfltCpuSrvcPatchLoaderIsSharedByCU #endif #else #define FinalCpuSrvcPatchLoaderIsSharedByCU FinalDfltAssertCpuSrvcPatchLoaderIsSharedByCU #endif // // NOTE: All CPU family specific service members should be all defined now. // // // Define CPU specific services installation macro // #ifndef _INSTALL_CPU_SPECIFIC_SERVICES_TABLE_NAME_ #define _INSTALL_CPU_SPECIFIC_SERVICES_TABLE_NAME_ #define INSTALL_CPU_SPECIFIC_SERVICES_TABLE_NAME(MacroPrefix, TableName) \ CONST CPU_SPECIFIC_SERVICES ROMDATA TableName = \ { \ MacroPrefix##CpuSrvcRevision, \ MacroPrefix##CpuSrvcDisablePstate, \ MacroPrefix##CpuSrvcTransitionPstate, \ MacroPrefix##CpuSrvcGetProcIddMax, \ MacroPrefix##CpuSrvcGetTscRate, \ MacroPrefix##CpuSrvcGetCurrentNbFrequency, \ MacroPrefix##CpuSrvcGetMinMaxNbFrequency, \ MacroPrefix##CpuSrvcGetNbPstateInfo, \ MacroPrefix##CpuSrvcIsNbCofInitNeeded, \ MacroPrefix##CpuSrvcGetNbIddMax, \ MacroPrefix##CpuSrvcLaunchApCore, \ MacroPrefix##CpuSrvcGetNumberOfPhysicalCores, \ MacroPrefix##CpuSrvcGetApMailboxFromHardware, \ MacroPrefix##CpuSrvcSetApCoreNumber, \ MacroPrefix##CpuSrvcGetApCoreNumber, \ MacroPrefix##CpuSrvcTransferApCoreNumber, \ MacroPrefix##CpuSrvcGetStoredNodeNumber, \ MacroPrefix##CpuSrvcCoreIdPositionInInitialApicId, \ MacroPrefix##CpuSrvcSaveFeatures, \ MacroPrefix##CpuSrvcWriteFeatures, \ MacroPrefix##CpuSrvcSetWarmResetFlag, \ MacroPrefix##CpuSrvcGetWarmResetFlag, \ MacroPrefix##CpuSrvcGetBrandString1, \ MacroPrefix##CpuSrvcGetBrandString2, \ MacroPrefix##CpuSrvcGetMicroCodePatchesStruct, \ MacroPrefix##CpuSrvcGetMicrocodeEquivalenceTable, \ MacroPrefix##CpuSrvcGetCacheInfo, \ MacroPrefix##CpuSrvcGetSysPmTableStruct, \ MacroPrefix##CpuSrvcGetWheaInitData, \ MacroPrefix##CpuSrvcGetPlatformTypeSpecificInfo, \ MacroPrefix##CpuSrvcIsNbPstateEnabled, \ MacroPrefix##CpuSrvcNextLinkHasHtPhyFeats, \ MacroPrefix##CpuSrvcSetHtPhyRegister, \ MacroPrefix##CpuSrvcGetNextHtLinkFeatures, \ MacroPrefix##CpuSrvcRegisterTableList, \ MacroPrefix##CpuSrvcTableEntryTypeDescriptors, \ MacroPrefix##CpuSrvcPackageLinkMap, \ MacroPrefix##CpuSrvcComputeUnitMap, \ MacroPrefix##CpuSrvcInitCacheDisabled, \ MacroPrefix##CpuSrvcGetEarlyInitBeforeApLaunchOnCoreTable, \ MacroPrefix##CpuSrvcGetEarlyInitAfterApLaunchOnCoreTable, \ MacroPrefix##CpuSrvcPatchLoaderIsSharedByCU \ } #endif // _INSTALL_CPU_SPECIFIC_SERVICES_TABLE_NAME_ #ifndef _INSTALL_CPU_SPECIFIC_SERVICES_TABLE_ #define _INSTALL_CPU_SPECIFIC_SERVICES_TABLE_ #define INSTALL_CPU_SPECIFIC_SERVICES_TABLE(TableName) \ INSTALL_CPU_SPECIFIC_SERVICES_TABLE_NAME (Final, TableName) #endif // _INSTALL_CPU_SPECIFIC_SERVICES_TABLE_ // // Message out the final table definitions //