vendorcode/amd/agesa: Drop unused common code
No platform uses this. Change-Id: If32a4de7ef263f1d4f7ab7a36751ad9dcf52dc7e Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/69127 Reviewed-by: Elyes Haouas <ehaouas@noos.fr> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
parent
7036ded25d
commit
0f12381083
|
@ -1,3 +1,2 @@
|
||||||
subdirs-y += pi
|
subdirs-y += pi
|
||||||
subdirs-y += agesa
|
|
||||||
subdirs-y += cimx
|
subdirs-y += cimx
|
||||||
|
|
|
@ -1,182 +0,0 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
config IDS_OPTIONS_HOOKED_UP
|
|
||||||
bool
|
|
||||||
help
|
|
||||||
to Kconfig options.
|
|
||||||
Historically, IDS configuration was defined in a mainboard-specific
|
|
||||||
`OptionsIds.h` header. Select this on platforms where IDS config is
|
|
||||||
hooked up to Kconfig options instead.
|
|
||||||
|
|
||||||
if IDS_OPTIONS_HOOKED_UP
|
|
||||||
|
|
||||||
config IDS_ENABLED
|
|
||||||
bool "Enable AGESA IDS (Integrated Debug Services) support"
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
This is the master switch for the IDS sub-system. Use this option to
|
|
||||||
enable or remove the entire IDS feature set. This switch must be TRUE
|
|
||||||
for any of the other options to function.
|
|
||||||
|
|
||||||
comment "Warning: IDS options may not work. Enable at your own risk!"
|
|
||||||
depends on IDS_ENABLED
|
|
||||||
|
|
||||||
config IDS_CONTROL_ENABLED
|
|
||||||
bool "Enable IDS User Interface controls"
|
|
||||||
depends on IDS_ENABLED
|
|
||||||
help
|
|
||||||
This is the main switch for the IDS configuration controls. This
|
|
||||||
switch must be TRUE for any of the configuration controls to function.
|
|
||||||
|
|
||||||
This seems to allow AGESA to retrieve settings from CMOS.
|
|
||||||
|
|
||||||
config IDS_PERF_ANALYSIS
|
|
||||||
bool "Enable IDS performance analysis"
|
|
||||||
depends on IDS_ENABLED
|
|
||||||
help
|
|
||||||
This is the main switch for the IDS performance analysis controls,
|
|
||||||
macros and support code needed to enable time data gathering. This
|
|
||||||
switch must be TRUE for any of the performance analysis features to
|
|
||||||
function.
|
|
||||||
|
|
||||||
config IDS_TRACING_ENABLED
|
|
||||||
bool "Enable IDS console"
|
|
||||||
depends on IDS_ENABLED
|
|
||||||
help
|
|
||||||
This is the main switch for the IDS console controls, macros and
|
|
||||||
support code needed to enable tracing of algorithms. This switch
|
|
||||||
must be TRUE for any of the tracing features to function.
|
|
||||||
|
|
||||||
config IDS_TRACING_CONSOLE_SERIAL
|
|
||||||
bool "Use serial port as IDS console"
|
|
||||||
depends on IDS_TRACING_ENABLED
|
|
||||||
default DRIVERS_UART_8250IO && CONSOLE_SERIAL
|
|
||||||
help
|
|
||||||
Use an I/O-mapped serial port to output IDS messages.
|
|
||||||
|
|
||||||
endif # IDS_OPTIONS_HOOKED_UP
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "DDR3 memory profile"
|
|
||||||
default CPU_AMD_AGESA_OPENSOURCE_MEM_JEDEC
|
|
||||||
help
|
|
||||||
Choose the DDR3 memory profile to use for your RAM sticks, e.g. XMP 1.
|
|
||||||
XMP support is experimental, and your PC will fail booting if you choose
|
|
||||||
a profile which does not exist on ANY of your RAM sticks! If in doubt
|
|
||||||
check their SPD Data using a coreboot's great fork of memtest86+ 5.01.
|
|
||||||
|
|
||||||
config CPU_AMD_AGESA_OPENSOURCE_MEM_JEDEC
|
|
||||||
bool "JEDEC"
|
|
||||||
help
|
|
||||||
JEDEC memory profile, standard and stable. Is guaranteed to be working.
|
|
||||||
|
|
||||||
config CPU_AMD_AGESA_OPENSOURCE_MEM_XMP_1
|
|
||||||
bool "XMP 1"
|
|
||||||
help
|
|
||||||
XMP 1 memory profile. Check that it exists on ALL of your RAM sticks!
|
|
||||||
|
|
||||||
config CPU_AMD_AGESA_OPENSOURCE_MEM_XMP_2
|
|
||||||
bool "XMP 2"
|
|
||||||
help
|
|
||||||
XMP 2 memory profile. Check that it exists on ALL of your RAM sticks!
|
|
||||||
|
|
||||||
config CPU_AMD_AGESA_OPENSOURCE_MEM_CUSTOM
|
|
||||||
bool "CUSTOM"
|
|
||||||
help
|
|
||||||
Custom memory profile. Use the XMP SPD values as the base, if available.
|
|
||||||
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
if CPU_AMD_AGESA_OPENSOURCE_MEM_CUSTOM
|
|
||||||
|
|
||||||
config CUSTOM_SPD_DIVIDENT
|
|
||||||
int "[10]: Medium Timebase (MTB) Dividend"
|
|
||||||
default 1
|
|
||||||
range 1 255
|
|
||||||
|
|
||||||
config CUSTOM_SPD_DIVISOR
|
|
||||||
int "[11]: Medium Timebase (MTB) Divisor"
|
|
||||||
default 14
|
|
||||||
range 1 255
|
|
||||||
|
|
||||||
config CUSTOM_SPD_TCK
|
|
||||||
int "[12]: SDRAM Minimum Cycle Time, tCK"
|
|
||||||
default 15
|
|
||||||
range 1 255
|
|
||||||
|
|
||||||
config CUSTOM_SPD_CASLO
|
|
||||||
int "[14]: CAS Latencies Supported, Lower Byte"
|
|
||||||
default 124
|
|
||||||
range 0 255
|
|
||||||
|
|
||||||
config CUSTOM_SPD_CASHI
|
|
||||||
int "[15]: CAS Latencies Supported, Higher Byte"
|
|
||||||
default 0
|
|
||||||
range 0 255
|
|
||||||
|
|
||||||
config CUSTOM_SPD_TAA
|
|
||||||
int "[16]: Min CAS Latency Time, tAA"
|
|
||||||
default 132
|
|
||||||
range 1 255
|
|
||||||
|
|
||||||
config CUSTOM_SPD_TWR
|
|
||||||
int "[17]: Min Write Recovery Time, tWR"
|
|
||||||
default 210
|
|
||||||
range 1 255
|
|
||||||
|
|
||||||
config CUSTOM_SPD_TRCD
|
|
||||||
int "[18]: Min RAS# to CAS# Delay Time, tRCD"
|
|
||||||
default 132
|
|
||||||
range 1 255
|
|
||||||
|
|
||||||
config CUSTOM_SPD_TRRD
|
|
||||||
int "[19]: Min Row Active to Row Active Delay Time, tRRD"
|
|
||||||
default 84
|
|
||||||
range 1 255
|
|
||||||
|
|
||||||
config CUSTOM_SPD_TRP
|
|
||||||
int "[20]: Min Row Precharge Delay Time, tRP"
|
|
||||||
default 132
|
|
||||||
range 1 255
|
|
||||||
|
|
||||||
config CUSTOM_SPD_UPPER_TRC
|
|
||||||
int "[21][7:4]: Min Active to Active/Refresh Delay, UPPER tRC"
|
|
||||||
default 2
|
|
||||||
range 0 16
|
|
||||||
|
|
||||||
config CUSTOM_SPD_UPPER_TRAS
|
|
||||||
int "[21][3:0]: Min Active to Precharge Delay Time, UPPER tRAS"
|
|
||||||
default 1
|
|
||||||
range 0 16
|
|
||||||
|
|
||||||
config CUSTOM_SPD_TRAS
|
|
||||||
int "[22]: Min Active to Precharge Delay Time, LOWER tRAS"
|
|
||||||
default 138
|
|
||||||
range 1 255
|
|
||||||
|
|
||||||
config CUSTOM_SPD_TRC
|
|
||||||
int "[23]: Min Active to Active/Refresh Delay, LOWER tRC"
|
|
||||||
default 181
|
|
||||||
range 1 255
|
|
||||||
|
|
||||||
config CUSTOM_SPD_TWTR
|
|
||||||
int "[26]: Min Internal Write to Read Command Delay, tWTR"
|
|
||||||
default 105
|
|
||||||
range 1 255
|
|
||||||
|
|
||||||
config CUSTOM_SPD_TRTP
|
|
||||||
int "[27]: Min Internal Read to Precharge Command Delay, tRTP"
|
|
||||||
default 105
|
|
||||||
range 1 255
|
|
||||||
|
|
||||||
config CUSTOM_SPD_UPPER_TFAW
|
|
||||||
int "[28][3:0]: Min Four Activate Window Delay, UPPER tFAW"
|
|
||||||
default 1
|
|
||||||
range 0 16
|
|
||||||
|
|
||||||
config CUSTOM_SPD_TFAW
|
|
||||||
int "[29]: Min Four Activate Window Delay Time, tFAW"
|
|
||||||
default 164
|
|
||||||
range 1 255
|
|
||||||
|
|
||||||
endif
|
|
|
@ -1,41 +0,0 @@
|
||||||
|
|
||||||
ifeq ($(CONFIG_CPU_AMD_AGESA),y)
|
|
||||||
|
|
||||||
subdirs-y += common
|
|
||||||
|
|
||||||
classes-y += libagesa
|
|
||||||
libagesa-y =
|
|
||||||
libagesa-generic-ccopts += -D__LIBAGESA__
|
|
||||||
libagesa-generic-ccopts += $(AGESA_INC) $(AGESA_AUTOINCLUDES)
|
|
||||||
libagesa-generic-ccopts += -Wno-pragma-pack -Wno-unused-but-set-variable
|
|
||||||
libagesa-generic-ccopts += -Wno-implicit-fallthrough
|
|
||||||
|
|
||||||
romstage-generic-ccopts += -Wno-pragma-pack
|
|
||||||
ramstage-generic-ccopts += -Wno-pragma-pack
|
|
||||||
|
|
||||||
AGESA_CFLAGS := -march=k8-sse3 -mtune=k8-sse3 -fno-strict-aliasing
|
|
||||||
|
|
||||||
CFLAGS_x86_32 += $(AGESA_CFLAGS)
|
|
||||||
CFLAGS_x86_64 += $(AGESA_CFLAGS)
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_ARCH_ROMSTAGE_X86_32),y)
|
|
||||||
$(eval $(call create_class_compiler,libagesa,x86_32))
|
|
||||||
else
|
|
||||||
$(eval $(call create_class_compiler,libagesa,x86_64))
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(obj)/libagesa.a: $$(libagesa-objs)
|
|
||||||
@printf " AGESA $(subst $(obj)/,,$(@))\n"
|
|
||||||
$(AR_libagesa) rcsDT $@ $+
|
|
||||||
|
|
||||||
romstage-libs += $(obj)/libagesa.a
|
|
||||||
ramstage-libs += $(obj)/libagesa.a
|
|
||||||
|
|
||||||
# buildOpts should be in libagesa
|
|
||||||
$(obj)/romstage/mainboard/$(MAINBOARDDIR)/buildOpts.o: CPPFLAGS_x86_32 += $(BUILDOPTS_INCLUDES)
|
|
||||||
$(obj)/ramstage/mainboard/$(MAINBOARDDIR)/buildOpts.o: CPPFLAGS_x86_32 += $(BUILDOPTS_INCLUDES)
|
|
||||||
|
|
||||||
$(obj)/romstage/vendorcode/amd/agesa/common/agesa-entry.o: CPPFLAGS_x86_32 += $(BUILDOPTS_INCLUDES)
|
|
||||||
$(obj)/ramstage/vendorcode/amd/agesa/common/agesa-entry.o: CPPFLAGS_x86_32 += $(BUILDOPTS_INCLUDES)
|
|
||||||
|
|
||||||
endif
|
|
|
@ -1,36 +0,0 @@
|
||||||
#*****************************************************************************
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
#*****************************************************************************
|
|
||||||
|
|
||||||
romstage-y += agesa-entry.c
|
|
||||||
ramstage-y += agesa-entry.c
|
|
||||||
|
|
||||||
libagesa-y += debug_util.c
|
|
||||||
libagesa-y += amdlib.c
|
|
||||||
|
|
||||||
# Do not optimise performance-critical low-level IO for size with -Os,
|
|
||||||
# request -O2 with -falign-functions.
|
|
||||||
|
|
||||||
$(obj)/libagesa/vendorcode/amd/agesa/common/amdlib.o: CFLAGS_libagesa += -O2
|
|
|
@ -1,82 +0,0 @@
|
||||||
#ifndef AGESA_ENTRY_CFG_H
|
|
||||||
#define AGESA_ENTRY_CFG_H
|
|
||||||
|
|
||||||
|
|
||||||
#if ENV_RAMINIT
|
|
||||||
|
|
||||||
#define AGESA_ENTRY_INIT_RESET TRUE
|
|
||||||
#define AGESA_ENTRY_INIT_EARLY TRUE
|
|
||||||
#define AGESA_ENTRY_INIT_POST TRUE
|
|
||||||
|
|
||||||
#define AGESA_ENTRY_INIT_RESUME CONFIG(HAVE_ACPI_RESUME)
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#define AGESA_ENTRY_INIT_ENV TRUE
|
|
||||||
#define AGESA_ENTRY_INIT_LATE_RESTORE CONFIG(HAVE_ACPI_RESUME)
|
|
||||||
|
|
||||||
#define AGESA_ENTRY_INIT_MID TRUE
|
|
||||||
#define AGESA_ENTRY_INIT_LATE TRUE
|
|
||||||
#define AGESA_ENTRY_INIT_S3SAVE \
|
|
||||||
(CONFIG(HAVE_ACPI_RESUME) || \
|
|
||||||
CONFIG(ENABLE_MRC_CACHE))
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Not required. */
|
|
||||||
#define AGESA_ENTRY_INIT_GENERAL_SERVICES FALSE
|
|
||||||
|
|
||||||
/* Required for any multi-core. */
|
|
||||||
#define AGESA_ENTRY_LATE_RUN_AP_TASK TRUE
|
|
||||||
|
|
||||||
/* Deprecated, reference source is removed from the tree. */
|
|
||||||
#define AGESA_ENTRY_INIT_RECOVERY FALSE
|
|
||||||
|
|
||||||
/* Defaults below. */
|
|
||||||
|
|
||||||
/* Process user desired AGESA entry points */
|
|
||||||
#ifndef AGESA_ENTRY_INIT_RESET
|
|
||||||
#define AGESA_ENTRY_INIT_RESET FALSE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef AGESA_ENTRY_INIT_EARLY
|
|
||||||
#define AGESA_ENTRY_INIT_EARLY FALSE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef AGESA_ENTRY_INIT_POST
|
|
||||||
#define AGESA_ENTRY_INIT_POST FALSE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef AGESA_ENTRY_INIT_ENV
|
|
||||||
#define AGESA_ENTRY_INIT_ENV FALSE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef AGESA_ENTRY_INIT_MID
|
|
||||||
#define AGESA_ENTRY_INIT_MID FALSE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef AGESA_ENTRY_INIT_LATE
|
|
||||||
#define AGESA_ENTRY_INIT_LATE FALSE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef AGESA_ENTRY_INIT_S3SAVE
|
|
||||||
#define AGESA_ENTRY_INIT_S3SAVE FALSE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef AGESA_ENTRY_INIT_RESUME
|
|
||||||
#define AGESA_ENTRY_INIT_RESUME FALSE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef AGESA_ENTRY_INIT_LATE_RESTORE
|
|
||||||
#define AGESA_ENTRY_INIT_LATE_RESTORE FALSE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef AGESA_ENTRY_INIT_GENERAL_SERVICES
|
|
||||||
#define AGESA_ENTRY_INIT_GENERAL_SERVICES FALSE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef AGESA_ENTRY_LATE_RUN_AP_TASK
|
|
||||||
#define AGESA_ENTRY_LATE_RUN_AP_TASK TRUE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* AGESA_ENTRY_CFG_H */
|
|
|
@ -1,165 +0,0 @@
|
||||||
#include <Porting.h>
|
|
||||||
#include <AMD.h>
|
|
||||||
#include <AGESA.h>
|
|
||||||
|
|
||||||
#include "CommonReturns.h"
|
|
||||||
|
|
||||||
#include <heapManager.h>
|
|
||||||
#include <CreateStruct.h>
|
|
||||||
|
|
||||||
#include <Options.h>
|
|
||||||
|
|
||||||
#include <agesa-entry-cfg.h>
|
|
||||||
|
|
||||||
CONST FUNCTION_PARAMS_INFO ROMDATA FuncParamsInfo[] =
|
|
||||||
{
|
|
||||||
#if AGESA_ENTRY_INIT_RESET == TRUE
|
|
||||||
{ AMD_INIT_RESET,
|
|
||||||
sizeof (AMD_RESET_PARAMS),
|
|
||||||
(PF_AGESA_FUNCTION) AmdInitResetConstructor,
|
|
||||||
(PF_AGESA_DESTRUCTOR) CommonReturnAgesaSuccess,
|
|
||||||
AMD_INIT_RESET_HANDLE
|
|
||||||
},
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_EARLY == TRUE
|
|
||||||
{ AMD_INIT_EARLY,
|
|
||||||
sizeof (AMD_EARLY_PARAMS),
|
|
||||||
(PF_AGESA_FUNCTION) AmdInitEarlyInitializer,
|
|
||||||
(PF_AGESA_DESTRUCTOR) CommonReturnAgesaSuccess,
|
|
||||||
AMD_INIT_EARLY_HANDLE
|
|
||||||
},
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_ENV == TRUE
|
|
||||||
{ AMD_INIT_ENV,
|
|
||||||
sizeof (AMD_ENV_PARAMS),
|
|
||||||
(PF_AGESA_FUNCTION) AmdInitEnvInitializer,
|
|
||||||
(PF_AGESA_DESTRUCTOR) CommonReturnAgesaSuccess,
|
|
||||||
AMD_INIT_ENV_HANDLE
|
|
||||||
},
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_LATE == TRUE
|
|
||||||
{ AMD_INIT_LATE,
|
|
||||||
sizeof (AMD_LATE_PARAMS),
|
|
||||||
(PF_AGESA_FUNCTION) AmdInitLateInitializer,
|
|
||||||
(PF_AGESA_DESTRUCTOR) AmdInitLateDestructor,
|
|
||||||
AMD_INIT_LATE_HANDLE
|
|
||||||
},
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_MID == TRUE
|
|
||||||
{ AMD_INIT_MID,
|
|
||||||
sizeof (AMD_MID_PARAMS),
|
|
||||||
(PF_AGESA_FUNCTION) AmdInitMidInitializer,
|
|
||||||
(PF_AGESA_DESTRUCTOR) CommonReturnAgesaSuccess,
|
|
||||||
AMD_INIT_MID_HANDLE
|
|
||||||
},
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_POST == TRUE
|
|
||||||
{ AMD_INIT_POST,
|
|
||||||
sizeof (AMD_POST_PARAMS),
|
|
||||||
(PF_AGESA_FUNCTION) AmdInitPostInitializer,
|
|
||||||
(PF_AGESA_DESTRUCTOR) AmdInitPostDestructor,
|
|
||||||
AMD_INIT_POST_HANDLE
|
|
||||||
},
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_RESUME == TRUE
|
|
||||||
{ AMD_INIT_RESUME,
|
|
||||||
sizeof (AMD_RESUME_PARAMS),
|
|
||||||
(PF_AGESA_FUNCTION) AmdInitResumeInitializer,
|
|
||||||
(PF_AGESA_DESTRUCTOR) AmdInitResumeDestructor,
|
|
||||||
AMD_INIT_RESUME_HANDLE
|
|
||||||
},
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_LATE_RESTORE == TRUE
|
|
||||||
{ AMD_S3LATE_RESTORE,
|
|
||||||
sizeof (AMD_S3LATE_PARAMS),
|
|
||||||
(PF_AGESA_FUNCTION) AmdS3LateRestoreInitializer,
|
|
||||||
(PF_AGESA_DESTRUCTOR) CommonReturnAgesaSuccess,
|
|
||||||
AMD_S3_LATE_RESTORE_HANDLE
|
|
||||||
},
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_S3SAVE == TRUE
|
|
||||||
{ AMD_S3_SAVE,
|
|
||||||
sizeof (AMD_S3SAVE_PARAMS),
|
|
||||||
(PF_AGESA_FUNCTION) AmdS3SaveInitializer,
|
|
||||||
(PF_AGESA_DESTRUCTOR) AmdS3SaveDestructor,
|
|
||||||
AMD_S3_SAVE_HANDLE
|
|
||||||
},
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_LATE_RUN_AP_TASK == TRUE
|
|
||||||
{ AMD_LATE_RUN_AP_TASK,
|
|
||||||
sizeof (AP_EXE_PARAMS),
|
|
||||||
(PF_AGESA_FUNCTION) AmdLateRunApTaskInitializer,
|
|
||||||
(PF_AGESA_DESTRUCTOR) CommonReturnAgesaSuccess,
|
|
||||||
AMD_LATE_RUN_AP_TASK_HANDLE
|
|
||||||
},
|
|
||||||
#endif
|
|
||||||
{ 0, 0, NULL }
|
|
||||||
};
|
|
||||||
|
|
||||||
CONST UINTN InitializerCount = ARRAY_SIZE(FuncParamsInfo);
|
|
||||||
|
|
||||||
CONST DISPATCH_TABLE ROMDATA DispatchTable[] =
|
|
||||||
{
|
|
||||||
{ AMD_CREATE_STRUCT, (IMAGE_ENTRY)AmdCreateStruct },
|
|
||||||
{ AMD_RELEASE_STRUCT, (IMAGE_ENTRY)AmdReleaseStruct },
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_RESET == TRUE
|
|
||||||
{ AMD_INIT_RESET, (IMAGE_ENTRY)AmdInitReset },
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_EARLY == TRUE
|
|
||||||
{ AMD_INIT_EARLY, (IMAGE_ENTRY)AmdInitEarly },
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_POST == TRUE
|
|
||||||
{ AMD_INIT_POST, (IMAGE_ENTRY)AmdInitPost },
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_ENV == TRUE
|
|
||||||
{ AMD_INIT_ENV, (IMAGE_ENTRY)AmdInitEnv },
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_MID == TRUE
|
|
||||||
{ AMD_INIT_MID, (IMAGE_ENTRY)AmdInitMid },
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_LATE == TRUE
|
|
||||||
{ AMD_INIT_LATE, (IMAGE_ENTRY)AmdInitLate },
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_S3SAVE == TRUE
|
|
||||||
{ AMD_S3_SAVE, (IMAGE_ENTRY)AmdS3Save },
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_RESUME == TRUE
|
|
||||||
{ AMD_INIT_RESUME, (IMAGE_ENTRY)AmdInitResume },
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_LATE_RESTORE == TRUE
|
|
||||||
{ AMD_S3LATE_RESTORE, (IMAGE_ENTRY)AmdS3LateRestore },
|
|
||||||
#endif
|
|
||||||
|
|
||||||
{ AMD_READ_EVENT_LOG, (IMAGE_ENTRY)AmdReadEventLog },
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_INIT_GENERAL_SERVICES == TRUE
|
|
||||||
{ AMD_GET_APIC_ID, (IMAGE_ENTRY)AmdGetApicId },
|
|
||||||
{ AMD_GET_PCI_ADDRESS, (IMAGE_ENTRY)AmdGetPciAddress },
|
|
||||||
{ AMD_IDENTIFY_CORE, (IMAGE_ENTRY)AmdIdentifyCore },
|
|
||||||
{ AMD_IDENTIFY_DIMMS, (IMAGE_ENTRY)AmdIdentifyDimm },
|
|
||||||
{ AMD_GET_EXECACHE_SIZE, (IMAGE_ENTRY)AmdGetAvailableExeCacheSize },
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if AGESA_ENTRY_LATE_RUN_AP_TASK == TRUE
|
|
||||||
{ AMD_LATE_RUN_AP_TASK, (IMAGE_ENTRY)AmdLateRunApTask },
|
|
||||||
#endif
|
|
||||||
{ 0, NULL }
|
|
||||||
};
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,398 +0,0 @@
|
||||||
/* $NoKeywords:$ */
|
|
||||||
/**
|
|
||||||
* @file
|
|
||||||
*
|
|
||||||
* AMD Library
|
|
||||||
*
|
|
||||||
* Contains interface to the AMD AGESA library
|
|
||||||
*
|
|
||||||
* @xrefitem bom "File Content Label" "Release Content"
|
|
||||||
* @e project: AGESA
|
|
||||||
* @e sub-project: Lib
|
|
||||||
* @e \$Revision: 34897 $ @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
*****************************************************************************
|
|
||||||
*
|
|
||||||
* Copyright (c) 2011, 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.
|
|
||||||
*
|
|
||||||
* ***************************************************************************
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _AMD_LIB_H_
|
|
||||||
#define _AMD_LIB_H_
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------------------
|
|
||||||
* D E F I N I T I O N S A N D M A C R O S
|
|
||||||
*----------------------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
#define IOCF8 0xCF8
|
|
||||||
#define IOCFC 0xCFC
|
|
||||||
|
|
||||||
// Reg Values for ReadCpuReg and WriteCpuReg
|
|
||||||
#define CR0_REG 0x00
|
|
||||||
#define CR4_REG 0x04
|
|
||||||
#define DR0_REG 0x10
|
|
||||||
#define DR1_REG 0x11
|
|
||||||
#define DR2_REG 0x12
|
|
||||||
#define DR3_REG 0x13
|
|
||||||
#define DR7_REG 0x17
|
|
||||||
|
|
||||||
UINT8
|
|
||||||
ReadIo8 (
|
|
||||||
IN UINT16 Address
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT16
|
|
||||||
ReadIo16 (
|
|
||||||
IN UINT16 Address
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT32
|
|
||||||
ReadIo32 (
|
|
||||||
IN UINT16 Address
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
WriteIo8 (
|
|
||||||
IN UINT16 Address,
|
|
||||||
IN UINT8 Data
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
WriteIo16 (
|
|
||||||
IN UINT16 Address,
|
|
||||||
IN UINT16 Data
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
WriteIo32 (
|
|
||||||
IN UINT16 Address,
|
|
||||||
IN UINT32 Data
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT8
|
|
||||||
Read64Mem8 (
|
|
||||||
IN UINT64 Address
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT16
|
|
||||||
Read64Mem16 (
|
|
||||||
IN UINT64 Address
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT32
|
|
||||||
Read64Mem32 (
|
|
||||||
IN UINT64 Address
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
Write64Mem8 (
|
|
||||||
IN UINT64 Address,
|
|
||||||
IN UINT8 Data
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
Write64Mem16 (
|
|
||||||
IN UINT64 Address,
|
|
||||||
IN UINT16 Data
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
Write64Mem32 (
|
|
||||||
IN UINT64 Address,
|
|
||||||
IN UINT32 Data
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT64
|
|
||||||
ReadTSC (
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
// MSR
|
|
||||||
VOID
|
|
||||||
LibAmdMsrRead (
|
|
||||||
IN UINT32 MsrAddress,
|
|
||||||
OUT UINT64 *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdMsrWrite (
|
|
||||||
IN UINT32 MsrAddress,
|
|
||||||
CONST IN UINT64 *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
// IO
|
|
||||||
VOID
|
|
||||||
LibAmdIoRead (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT16 IoAddress,
|
|
||||||
OUT VOID *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdIoWrite (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT16 IoAddress,
|
|
||||||
IN CONST VOID *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdIoRMW (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT16 IoAddress,
|
|
||||||
IN CONST VOID *Data,
|
|
||||||
IN CONST VOID *DataMask,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdIoPoll (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT16 IoAddress,
|
|
||||||
IN CONST VOID *Data,
|
|
||||||
IN CONST VOID *DataMask,
|
|
||||||
IN UINT64 Delay,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
// Memory or MMIO
|
|
||||||
VOID
|
|
||||||
LibAmdMemRead (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT64 MemAddress,
|
|
||||||
OUT VOID *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdMemWrite (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT64 MemAddress,
|
|
||||||
IN CONST VOID *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdMemRMW (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT64 MemAddress,
|
|
||||||
IN CONST VOID *Data,
|
|
||||||
IN CONST VOID *DataMask,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdMemPoll (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT64 MemAddress,
|
|
||||||
IN CONST VOID *Data,
|
|
||||||
IN CONST VOID *DataMask,
|
|
||||||
IN UINT64 Delay,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
// PCI
|
|
||||||
VOID
|
|
||||||
LibAmdPciRead (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN PCI_ADDR PciAddress,
|
|
||||||
OUT VOID *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdPciWrite (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN PCI_ADDR PciAddress,
|
|
||||||
IN CONST VOID *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdPciRMW (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN PCI_ADDR PciAddress,
|
|
||||||
IN CONST VOID *Data,
|
|
||||||
IN CONST VOID *DataMask,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdPciPoll (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN PCI_ADDR PciAddress,
|
|
||||||
IN CONST VOID *Data,
|
|
||||||
IN CONST VOID *DataMask,
|
|
||||||
IN UINT64 Delay,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdPciReadBits (
|
|
||||||
IN PCI_ADDR Address,
|
|
||||||
IN UINT8 Highbit,
|
|
||||||
IN UINT8 Lowbit,
|
|
||||||
OUT UINT32 *Value,
|
|
||||||
IN AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdPciWriteBits (
|
|
||||||
IN PCI_ADDR Address,
|
|
||||||
IN UINT8 Highbit,
|
|
||||||
IN UINT8 Lowbit,
|
|
||||||
IN CONST UINT32 *Value,
|
|
||||||
IN AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdPciFindNextCap (
|
|
||||||
IN OUT PCI_ADDR *Address,
|
|
||||||
IN AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
// CPUID
|
|
||||||
VOID
|
|
||||||
LibAmdCpuidRead (
|
|
||||||
IN UINT32 CpuidFcnAddress,
|
|
||||||
OUT CPUID_DATA *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
// Utility Functions
|
|
||||||
VOID
|
|
||||||
LibAmdMemFill (
|
|
||||||
IN VOID *Destination,
|
|
||||||
IN UINT8 Value,
|
|
||||||
IN UINTN FillLength,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdMemCopy (
|
|
||||||
IN VOID *Destination,
|
|
||||||
IN CONST VOID *Source,
|
|
||||||
IN UINTN CopyLength,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT32
|
|
||||||
LibAmdGetPackageType (
|
|
||||||
IN AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT8
|
|
||||||
LibAmdBitScanReverse (
|
|
||||||
IN UINT32 value
|
|
||||||
);
|
|
||||||
UINT8
|
|
||||||
LibAmdBitScanForward (
|
|
||||||
IN UINT32 value
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdReadCpuReg (
|
|
||||||
IN UINT8 RegNum,
|
|
||||||
OUT UINT32 *Value
|
|
||||||
);
|
|
||||||
VOID
|
|
||||||
LibAmdWriteCpuReg (
|
|
||||||
IN UINT8 RegNum,
|
|
||||||
IN UINT32 Value
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdWriteBackInvalidateCache (
|
|
||||||
IN VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdSimNowEnterDebugger (VOID);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdHDTBreakPoint (VOID);
|
|
||||||
|
|
||||||
UINT8
|
|
||||||
LibAmdAccessWidth (
|
|
||||||
IN ACCESS_WIDTH AccessWidth
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdCLFlush (
|
|
||||||
IN UINT64 Address,
|
|
||||||
IN UINT8 Count
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID F10RevDProbeFilterCritical (
|
|
||||||
IN PCI_ADDR PciAddress,
|
|
||||||
IN UINT32 PciRegister
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdFinit (
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
StopHere (
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
/* For f14 or older. */
|
|
||||||
VOID
|
|
||||||
CpuidRead (
|
|
||||||
IN UINT32 CpuidFcnAddress,
|
|
||||||
OUT CPUID_DATA *Value
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT8
|
|
||||||
ReadNumberOfCpuCores(
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
/* From 16kb, no implementation supplied. */
|
|
||||||
VOID
|
|
||||||
LibAmdFnclex (
|
|
||||||
VOID);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdReadMxcsr (
|
|
||||||
OUT UINT32 *Value
|
|
||||||
);
|
|
||||||
VOID
|
|
||||||
LibAmdWriteMxcsr (
|
|
||||||
IN UINT32 *Value
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
#endif // _AMD_LIB_H_
|
|
|
@ -1,24 +0,0 @@
|
||||||
|
|
||||||
#include <AGESA.h>
|
|
||||||
#include <AMD.h>
|
|
||||||
#include <heapManager.h>
|
|
||||||
|
|
||||||
#include "debug_util.h"
|
|
||||||
|
|
||||||
static const char undefined[] = "undefined";
|
|
||||||
|
|
||||||
static const char *HeapStatusStr[] = {
|
|
||||||
"DoNotExistYet", "LocalCache", "TempMem", "SystemMem", "DoNotExistAnymore","S3Resume"
|
|
||||||
};
|
|
||||||
|
|
||||||
/* This function has to match with enumeration of XXXX defined
|
|
||||||
* inside heapManager.h header file.
|
|
||||||
*/
|
|
||||||
const char *heap_status_name(UINT8 HeapStatus)
|
|
||||||
{
|
|
||||||
if ((HeapStatus < HEAP_DO_NOT_EXIST_YET) || (HeapStatus > HEAP_S3_RESUME))
|
|
||||||
return undefined;
|
|
||||||
|
|
||||||
int index = HeapStatus - HEAP_DO_NOT_EXIST_YET;
|
|
||||||
return HeapStatusStr[index];
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
#ifndef __AGESA_DEBUG_UTIL_H__
|
|
||||||
#define __AGESA_DEBUG_UTIL_H__
|
|
||||||
|
|
||||||
#include "AMD.h"
|
|
||||||
|
|
||||||
const char *heap_status_name(UINT8 HeapStatus);
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
Reference in New Issue