AGESA vendorcode: Build a common amdlib
Having CFLAGS with -Os disables -falign-function, for unlucky builds this may delay entry to ramstage by 600ms. Build the low-level IO functions aligned with -O2 instead. Change-Id: Ice6781666a0834f1e8e60a0c93048ac8472f27d9 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/14414 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
@ -17,6 +17,35 @@
|
|||||||
#include <northbridge/amd/agesa/agesawrapper.h>
|
#include <northbridge/amd/agesa/agesawrapper.h>
|
||||||
#include "amdlib.h"
|
#include "amdlib.h"
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
MsrRead (
|
||||||
|
IN UINT32 MsrAddress
|
||||||
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
MsrWrite (
|
||||||
|
IN UINT32 MsrAddress,
|
||||||
|
IN UINT64 Value
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
UINT64
|
||||||
|
MsrRead (
|
||||||
|
IN UINT32 MsrAddress
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return __readmsr (MsrAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
VOID
|
||||||
|
MsrWrite (
|
||||||
|
IN UINT32 MsrAddress,
|
||||||
|
IN UINT64 Value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__writemsr (MsrAddress, Value);
|
||||||
|
}
|
||||||
|
|
||||||
#if !IS_ENABLED(CONFIG_BOARD_AMD_DINAR)
|
#if !IS_ENABLED(CONFIG_BOARD_AMD_DINAR)
|
||||||
void amd_initcpuio(void)
|
void amd_initcpuio(void)
|
||||||
{
|
{
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
#SB800 CIMx share AGESA V5 lib code
|
#SB800 CIMx share AGESA V5 lib code
|
||||||
ifneq ($(CONFIG_CPU_AMD_AGESA),y)
|
ifneq ($(CONFIG_CPU_AMD_AGESA),y)
|
||||||
AGESA_ROOT ?= src/vendorcode/amd/agesa/f14
|
AGESA_ROOT ?= src/vendorcode/amd/agesa/f14
|
||||||
romstage-y += ../../../../$(AGESA_ROOT)/Lib/amdlib.c
|
romstage-y += ../../../../$(AGESA_ROOT)/../common/amdlib.c
|
||||||
ramstage-y += ../../../../$(AGESA_ROOT)/Lib/amdlib.c
|
ramstage-y += ../../../../$(AGESA_ROOT)/../common/amdlib.c
|
||||||
|
|
||||||
AGESA_INC := -I$(AGESA_ROOT)/ \
|
AGESA_INC := -I$(AGESA_ROOT)/ \
|
||||||
-I$(AGESA_ROOT)/../common \
|
-I$(AGESA_ROOT)/../common \
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
#SB800 CIMx share AGESA V5 lib code
|
#SB800 CIMx share AGESA V5 lib code
|
||||||
ifneq ($(CONFIG_CPU_AMD_AGESA),y)
|
ifneq ($(CONFIG_CPU_AMD_AGESA),y)
|
||||||
AGESA_ROOT ?= src/vendorcode/amd/agesa/f14
|
AGESA_ROOT ?= src/vendorcode/amd/agesa/f14
|
||||||
romstage-y += ../../../../$(AGESA_ROOT)/Lib/amdlib.c
|
romstage-y += ../../../../$(AGESA_ROOT)/../common/amdlib.c
|
||||||
ramstage-y += ../../../../$(AGESA_ROOT)/Lib/amdlib.c
|
ramstage-y += ../../../../$(AGESA_ROOT)/../common/amdlib.c
|
||||||
|
|
||||||
AGESA_INC := -I$(AGESA_ROOT)/ \
|
AGESA_INC := -I$(AGESA_ROOT)/ \
|
||||||
-I$(AGESA_ROOT)/../common \
|
-I$(AGESA_ROOT)/../common \
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
#SB800 CIMx share AGESA V5 lib code
|
#SB800 CIMx share AGESA V5 lib code
|
||||||
ifneq ($(CONFIG_CPU_AMD_AGESA),y)
|
ifneq ($(CONFIG_CPU_AMD_AGESA),y)
|
||||||
AGESA_ROOT ?= src/vendorcode/amd/agesa/f14
|
AGESA_ROOT ?= src/vendorcode/amd/agesa/f14
|
||||||
romstage-y += ../../../../$(AGESA_ROOT)/Lib/amdlib.c
|
romstage-y += ../../../../$(AGESA_ROOT)/../common/amdlib.c
|
||||||
ramstage-y += ../../../../$(AGESA_ROOT)/Lib/amdlib.c
|
ramstage-y += ../../../../$(AGESA_ROOT)/../common/amdlib.c
|
||||||
|
|
||||||
AGESA_INC := -I$(AGESA_ROOT)/ \
|
AGESA_INC := -I$(AGESA_ROOT)/ \
|
||||||
-I$(AGESA_ROOT)/../common \
|
-I$(AGESA_ROOT)/../common \
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#include "AGESA.h"
|
#include "AGESA.h"
|
||||||
#include <northbridge/amd/agesa/BiosCallOuts.h>
|
#include <northbridge/amd/agesa/BiosCallOuts.h>
|
||||||
|
|
||||||
#include <Lib/amdlib.h>
|
#include <amdlib.h>
|
||||||
#include <vendorcode/amd/agesa/f14/Proc/CPU/heapManager.h>
|
#include <vendorcode/amd/agesa/f14/Proc/CPU/heapManager.h>
|
||||||
#include <vendorcode/amd/cimx/sb800/SB800.h>
|
#include <vendorcode/amd/cimx/sb800/SB800.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#define _PLATFORM_GNB_PCIE_COMPLEX_H
|
#define _PLATFORM_GNB_PCIE_COMPLEX_H
|
||||||
|
|
||||||
#include <vendorcode/amd/agesa/f14/AGESA.h>
|
#include <vendorcode/amd/agesa/f14/AGESA.h>
|
||||||
#include <vendorcode/amd/agesa/f14/Lib/amdlib.h>
|
#include <amdlib.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Graphic NorthBridge (GNB) General Purpose Port (GPP)
|
* @brief Graphic NorthBridge (GNB) General Purpose Port (GPP)
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#include <delay.h>
|
#include <delay.h>
|
||||||
#include "Porting.h"
|
#include "Porting.h"
|
||||||
#include "AGESA.h"
|
#include "AGESA.h"
|
||||||
#include <Lib/amdlib.h>
|
#include <amdlib.h>
|
||||||
#include <Proc/Fch/Fch.h>
|
#include <Proc/Fch/Fch.h>
|
||||||
#include <Proc/Fch/Common/FchCommonCfg.h>
|
#include <Proc/Fch/Common/FchCommonCfg.h>
|
||||||
#include <Proc/Fch/FchPlatform.h>
|
#include <Proc/Fch/FchPlatform.h>
|
||||||
|
@ -8,6 +8,8 @@ subdirs-$(CONFIG_CPU_AMD_AGESA_FAMILY16_KB) += f16kb
|
|||||||
|
|
||||||
ifeq ($(CONFIG_CPU_AMD_AGESA),y)
|
ifeq ($(CONFIG_CPU_AMD_AGESA),y)
|
||||||
|
|
||||||
|
subdirs-y += common
|
||||||
|
|
||||||
classes-y += libagesa
|
classes-y += libagesa
|
||||||
libagesa-y =
|
libagesa-y =
|
||||||
|
|
||||||
|
35
src/vendorcode/amd/agesa/common/Makefile.inc
Normal file
35
src/vendorcode/amd/agesa/common/Makefile.inc
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#*****************************************************************************
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
#*****************************************************************************
|
||||||
|
|
||||||
|
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
|
@ -286,6 +286,7 @@ LibAmdReadCpuReg (
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
*Value = -1;
|
*Value = -1;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
VOID
|
VOID
|
||||||
@ -314,7 +315,7 @@ LibAmdWriteCpuReg (
|
|||||||
__writedr (7, Value);
|
__writedr (7, Value);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
VOID
|
VOID
|
||||||
@ -446,15 +447,6 @@ LibAmdCLFlush (
|
|||||||
}
|
}
|
||||||
#endif //__SSE3__
|
#endif //__SSE3__
|
||||||
|
|
||||||
VOID
|
|
||||||
IdsOutPort (
|
|
||||||
IN UINT32 Addr,
|
|
||||||
IN UINT32 Value,
|
|
||||||
IN UINT32 Flag
|
|
||||||
)
|
|
||||||
{
|
|
||||||
__outdword ((UINT16) Addr, Value);
|
|
||||||
}
|
|
||||||
VOID
|
VOID
|
||||||
StopHere (
|
StopHere (
|
||||||
VOID
|
VOID
|
||||||
@ -464,6 +456,12 @@ StopHere (
|
|||||||
while (x);
|
while (x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VOID
|
||||||
|
LibAmdFinit()
|
||||||
|
{
|
||||||
|
/* TODO: finit */
|
||||||
|
__asm__ volatile ("finit");
|
||||||
|
}
|
||||||
/*---------------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------------*/
|
||||||
/**
|
/**
|
||||||
* Read IO port
|
* Read IO port
|
||||||
@ -498,6 +496,7 @@ LibAmdIoRead (
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ASSERT (FALSE);
|
ASSERT (FALSE);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -535,6 +534,7 @@ LibAmdIoWrite (
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ASSERT (FALSE);
|
ASSERT (FALSE);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -561,7 +561,7 @@ LibAmdIoRMW (
|
|||||||
{
|
{
|
||||||
UINT32 TempData = 0;
|
UINT32 TempData = 0;
|
||||||
UINT32 TempMask = 0;
|
UINT32 TempMask = 0;
|
||||||
UINT32 Value;
|
UINT32 Value = 0;
|
||||||
LibAmdGetDataFromPtr (AccessWidth, Data, DataMask, &TempData, &TempMask);
|
LibAmdGetDataFromPtr (AccessWidth, Data, DataMask, &TempData, &TempMask);
|
||||||
LibAmdIoRead (AccessWidth, IoAddress, &Value, StdHeader);
|
LibAmdIoRead (AccessWidth, IoAddress, &Value, StdHeader);
|
||||||
Value = (Value & (~TempMask)) | TempData;
|
Value = (Value & (~TempMask)) | TempData;
|
||||||
@ -635,6 +635,7 @@ LibAmdMemRead (
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ASSERT (FALSE);
|
ASSERT (FALSE);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -673,6 +674,7 @@ LibAmdMemWrite (
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ASSERT (FALSE);
|
ASSERT (FALSE);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------------*/
|
||||||
@ -1198,6 +1200,7 @@ LibAmdGetDataFromPtr (
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
IDS_ERROR_TRAP;
|
IDS_ERROR_TRAP;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1238,6 +1241,7 @@ LibAmdAccessWidth (
|
|||||||
default:
|
default:
|
||||||
Width = 0;
|
Width = 0;
|
||||||
IDS_ERROR_TRAP;
|
IDS_ERROR_TRAP;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return Width;
|
return Width;
|
||||||
}
|
}
|
@ -9,13 +9,13 @@
|
|||||||
* @xrefitem bom "File Content Label" "Release Content"
|
* @xrefitem bom "File Content Label" "Release Content"
|
||||||
* @e project: AGESA
|
* @e project: AGESA
|
||||||
* @e sub-project: Lib
|
* @e sub-project: Lib
|
||||||
* @e \$Revision: 85030 $ @e \$Date: 2012-12-26 00:20:10 -0600 (Wed, 26 Dec 2012) $
|
* @e \$Revision: 34897 $ @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
******************************************************************************
|
*****************************************************************************
|
||||||
*
|
*
|
||||||
* Copyright (c) 2008 - 2013, Advanced Micro Devices, Inc.
|
* Copyright (c) 2011, Advanced Micro Devices, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -39,16 +39,23 @@
|
|||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* 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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
******************************************************************************
|
*
|
||||||
**/
|
* ***************************************************************************
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef _AMD_LIB_H_
|
#ifndef _AMD_LIB_H_
|
||||||
#define _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 IOCF8 0xCF8
|
||||||
#define IOCFC 0xCFC
|
#define IOCFC 0xCFC
|
||||||
|
|
||||||
// Reg Values for ReadCpuReg and WriteCpuReg
|
// Reg Values for ReadCpuReg and WriteCpuReg
|
||||||
|
#define CR0_REG 0x00
|
||||||
#define CR4_REG 0x04
|
#define CR4_REG 0x04
|
||||||
#define DR0_REG 0x10
|
#define DR0_REG 0x10
|
||||||
#define DR1_REG 0x11
|
#define DR1_REG 0x11
|
||||||
@ -56,7 +63,6 @@
|
|||||||
#define DR3_REG 0x13
|
#define DR3_REG 0x13
|
||||||
#define DR7_REG 0x17
|
#define DR7_REG 0x17
|
||||||
|
|
||||||
// PROTOTYPES FOR amdlib32.asm
|
|
||||||
UINT8
|
UINT8
|
||||||
ReadIo8 (
|
ReadIo8 (
|
||||||
IN UINT16 Address
|
IN UINT16 Address
|
||||||
@ -125,7 +131,8 @@ Write64Mem32 (
|
|||||||
|
|
||||||
UINT64
|
UINT64
|
||||||
ReadTSC (
|
ReadTSC (
|
||||||
VOID);
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
// MSR
|
// MSR
|
||||||
VOID
|
VOID
|
||||||
@ -346,15 +353,34 @@ LibAmdCLFlush (
|
|||||||
IN UINT8 Count
|
IN UINT8 Count
|
||||||
);
|
);
|
||||||
|
|
||||||
|
VOID F10RevDProbeFilterCritical (
|
||||||
|
IN PCI_ADDR PciAddress,
|
||||||
|
IN UINT32 PciRegister
|
||||||
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
LibAmdFinit (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
StopHere (
|
StopHere (
|
||||||
VOID
|
VOID
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/* For f14 or older. */
|
||||||
VOID
|
VOID
|
||||||
LibAmdFinit (
|
CpuidRead (
|
||||||
VOID);
|
IN UINT32 CpuidFcnAddress,
|
||||||
|
OUT CPUID_DATA *Value
|
||||||
|
);
|
||||||
|
|
||||||
|
UINT8
|
||||||
|
ReadNumberOfCpuCores(
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
|
/* From 16kb, no implementation supplied. */
|
||||||
VOID
|
VOID
|
||||||
LibAmdFnclex (
|
LibAmdFnclex (
|
||||||
VOID);
|
VOID);
|
||||||
@ -368,4 +394,5 @@ LibAmdWriteMxcsr (
|
|||||||
IN UINT32 *Value
|
IN UINT32 *Value
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
#endif // _AMD_LIB_H_
|
#endif // _AMD_LIB_H_
|
File diff suppressed because it is too large
Load Diff
@ -1,374 +0,0 @@
|
|||||||
/**
|
|
||||||
* @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: 44323 $ @e \$Date: 2010-12-22 01:24:58 -0700 (Wed, 22 Dec 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_
|
|
||||||
|
|
||||||
#define IOCF8 0xCF8
|
|
||||||
#define IOCFC 0xCFC
|
|
||||||
|
|
||||||
// Reg Values for ReadCpuReg and WriteCpuReg
|
|
||||||
#define CR4_REG 0x04
|
|
||||||
#define DR0_REG 0x10
|
|
||||||
#define DR1_REG 0x11
|
|
||||||
#define DR2_REG 0x12
|
|
||||||
#define DR3_REG 0x13
|
|
||||||
#define DR7_REG 0x17
|
|
||||||
|
|
||||||
// PROTOTYPES FOR amdlib32.asm
|
|
||||||
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,
|
|
||||||
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 VOID *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdIoRMW (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT16 IoAddress,
|
|
||||||
IN VOID *Data,
|
|
||||||
IN VOID *DataMask,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdIoPoll (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT16 IoAddress,
|
|
||||||
IN VOID *Data,
|
|
||||||
IN 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 VOID *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdMemRMW (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT64 MemAddress,
|
|
||||||
IN VOID *Data,
|
|
||||||
IN VOID *DataMask,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdMemPoll (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT64 MemAddress,
|
|
||||||
IN VOID *Data,
|
|
||||||
IN 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 VOID *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdPciRMW (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN PCI_ADDR PciAddress,
|
|
||||||
IN VOID *Data,
|
|
||||||
IN VOID *DataMask,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdPciPoll (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN PCI_ADDR PciAddress,
|
|
||||||
IN VOID *Data,
|
|
||||||
IN 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 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 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
|
|
||||||
);
|
|
||||||
|
|
||||||
#ifdef __SSE3__
|
|
||||||
VOID F10RevDProbeFilterCritical (
|
|
||||||
IN PCI_ADDR PciAddress,
|
|
||||||
IN UINT32 PciRegister
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID LibAmdCLFlush (
|
|
||||||
IN UINT64 Address,
|
|
||||||
IN UINT8 Count
|
|
||||||
);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
VOID
|
|
||||||
IdsOutPort (
|
|
||||||
IN UINT32 Addr,
|
|
||||||
IN UINT32 Value,
|
|
||||||
IN UINT32 Flag
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID StopHere(VOID);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
CpuidRead (
|
|
||||||
IN UINT32 CpuidFcnAddress,
|
|
||||||
OUT CPUID_DATA *Value
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT8
|
|
||||||
ReadNumberOfCpuCores(
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
#endif // _AMD_LIB_H_
|
|
@ -98,7 +98,6 @@ libagesa-y += Proc/Common/AmdS3LateRestore.c
|
|||||||
libagesa-y += Proc/CPU/Table.c
|
libagesa-y += Proc/CPU/Table.c
|
||||||
libagesa-y += Proc/HT/htInterface.c
|
libagesa-y += Proc/HT/htInterface.c
|
||||||
libagesa-y += Proc/IDS/Perf/IdsPerf.c
|
libagesa-y += Proc/IDS/Perf/IdsPerf.c
|
||||||
libagesa-y += Lib/amdlib.c
|
|
||||||
libagesa-y += Proc/CPU/Feature/cpuCacheFlushOnHalt.c
|
libagesa-y += Proc/CPU/Feature/cpuCacheFlushOnHalt.c
|
||||||
libagesa-y += Proc/Mem/Main/minit.c
|
libagesa-y += Proc/Mem/Main/minit.c
|
||||||
libagesa-y += Proc/Mem/Feat/INTLVRN/mfintlvrn.c
|
libagesa-y += Proc/Mem/Feat/INTLVRN/mfintlvrn.c
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,406 +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: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 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
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------------------
|
|
||||||
* T Y P E D E F S A N D S T R U C T U R E S
|
|
||||||
*----------------------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
/*----------------------------------------------------------------------------------------
|
|
||||||
* P R O T O T Y P E S O F L O C A L F U N C T I O N S
|
|
||||||
*----------------------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------------------
|
|
||||||
* E X P O R T E D F U N C T I O N S
|
|
||||||
*----------------------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined __GNUC__
|
|
||||||
// PROTOTYPES FOR amdlib32.asm
|
|
||||||
void _mm_stream_si128_fs (void *__A, void *__B);
|
|
||||||
void _mm_store_si128_fs (void *dest, void *data);
|
|
||||||
void _mm_clflush_fs (void *address32);
|
|
||||||
#endif
|
|
||||||
/*---------------------------------------------------------------------------------------
|
|
||||||
* L O C A L F U N C T I O N S
|
|
||||||
*---------------------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
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,
|
|
||||||
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
|
|
||||||
IdsOutPort (
|
|
||||||
IN UINT32 Addr,
|
|
||||||
IN UINT32 Value,
|
|
||||||
IN UINT32 Flag
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
StopHere (
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
CpuidRead (
|
|
||||||
IN UINT32 CpuidFcnAddress,
|
|
||||||
OUT CPUID_DATA *Value
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT8
|
|
||||||
ReadNumberOfCpuCores(
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
#endif // _AMD_LIB_H_
|
|
@ -91,7 +91,6 @@ CPPFLAGS_x86_64 += $(AGESA_INC)
|
|||||||
libagesa-y += Legacy/Proc/agesaCallouts.c
|
libagesa-y += Legacy/Proc/agesaCallouts.c
|
||||||
libagesa-y += Legacy/Proc/Dispatcher.c
|
libagesa-y += Legacy/Proc/Dispatcher.c
|
||||||
libagesa-y += Legacy/Proc/hobTransfer.c
|
libagesa-y += Legacy/Proc/hobTransfer.c
|
||||||
libagesa-y += Lib/amdlib.c
|
|
||||||
libagesa-y += Proc/Common/AmdInitEarly.c
|
libagesa-y += Proc/Common/AmdInitEarly.c
|
||||||
libagesa-y += Proc/Common/AmdInitEnv.c
|
libagesa-y += Proc/Common/AmdInitEnv.c
|
||||||
libagesa-y += Proc/Common/AmdInitLate.c
|
libagesa-y += Proc/Common/AmdInitLate.c
|
||||||
|
@ -1,408 +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
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------------------
|
|
||||||
* T Y P E D E F S A N D S T R U C T U R E S
|
|
||||||
*----------------------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
/*----------------------------------------------------------------------------------------
|
|
||||||
* P R O T O T Y P E S O F L O C A L F U N C T I O N S
|
|
||||||
*----------------------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------------------
|
|
||||||
* E X P O R T E D F U N C T I O N S
|
|
||||||
*----------------------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined __GNUC__
|
|
||||||
// PROTOTYPES FOR amdlib32.asm
|
|
||||||
void _mm_stream_si128_fs (void *__A, void *__B);
|
|
||||||
void _mm_store_si128_fs (void *dest, void *data);
|
|
||||||
void _mm_clflush_fs (void *address32);
|
|
||||||
#endif
|
|
||||||
/*---------------------------------------------------------------------------------------
|
|
||||||
* L O C A L F U N C T I O N S
|
|
||||||
*---------------------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
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,
|
|
||||||
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
|
|
||||||
IdsOutPort (
|
|
||||||
IN UINT32 Addr,
|
|
||||||
IN UINT32 Value,
|
|
||||||
IN UINT32 Flag
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
StopHere (
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
CpuidRead (
|
|
||||||
IN UINT32 CpuidFcnAddress,
|
|
||||||
OUT CPUID_DATA *Value
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT8
|
|
||||||
ReadNumberOfCpuCores(
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
#endif // _AMD_LIB_H_
|
|
@ -190,7 +190,6 @@ libagesa-y += Proc/CPU/Family/0x14/cpuF14Utilities.c
|
|||||||
libagesa-y += Proc/HT/htInterface.c
|
libagesa-y += Proc/HT/htInterface.c
|
||||||
libagesa-y += Proc/GNB/Gfx/GfxStrapsInit.c
|
libagesa-y += Proc/GNB/Gfx/GfxStrapsInit.c
|
||||||
libagesa-y += Proc/GNB/Nb/NbInitAtEarly.c
|
libagesa-y += Proc/GNB/Nb/NbInitAtEarly.c
|
||||||
libagesa-y += Lib/amdlib.c
|
|
||||||
libagesa-y += Proc/CPU/Feature/cpuCacheFlushOnHalt.c
|
libagesa-y += Proc/CPU/Feature/cpuCacheFlushOnHalt.c
|
||||||
libagesa-y += Proc/CPU/Feature/cpuCpb.c
|
libagesa-y += Proc/CPU/Feature/cpuCpb.c
|
||||||
libagesa-y += Proc/Mem/Main/minit.c
|
libagesa-y += Proc/Mem/Main/minit.c
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,390 +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: 44324 $ @e \$Date: 2010-12-22 02:16:51 -0700 (Wed, 22 Dec 2010) $
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
******************************************************************************
|
|
||||||
*
|
|
||||||
* Copyright (C) 2012 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_
|
|
||||||
|
|
||||||
#define IOCF8 0xCF8
|
|
||||||
#define IOCFC 0xCFC
|
|
||||||
|
|
||||||
// Reg Values for ReadCpuReg and WriteCpuReg
|
|
||||||
#define CR4_REG 0x04
|
|
||||||
#define DR0_REG 0x10
|
|
||||||
#define DR1_REG 0x11
|
|
||||||
#define DR2_REG 0x12
|
|
||||||
#define DR3_REG 0x13
|
|
||||||
#define DR7_REG 0x17
|
|
||||||
|
|
||||||
// PROTOTYPES FOR amdlib32.asm
|
|
||||||
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
|
|
||||||
|
|
||||||
UINT64
|
|
||||||
MsrRead (
|
|
||||||
IN UINT32 MsrAddress
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
MsrWrite (
|
|
||||||
IN UINT32 MsrAddress,
|
|
||||||
IN UINT64 Value
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdMsrRead (
|
|
||||||
IN UINT32 MsrAddress,
|
|
||||||
OUT UINT64 *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdMsrWrite (
|
|
||||||
IN UINT32 MsrAddress,
|
|
||||||
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 VOID *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdIoRMW (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT16 IoAddress,
|
|
||||||
IN VOID *Data,
|
|
||||||
IN VOID *DataMask,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdIoPoll (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT16 IoAddress,
|
|
||||||
IN VOID *Data,
|
|
||||||
IN 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 VOID *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdMemRMW (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT64 MemAddress,
|
|
||||||
IN VOID *Data,
|
|
||||||
IN VOID *DataMask,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdMemPoll (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN UINT64 MemAddress,
|
|
||||||
IN VOID *Data,
|
|
||||||
IN 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 VOID *Value,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdPciRMW (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN PCI_ADDR PciAddress,
|
|
||||||
IN VOID *Data,
|
|
||||||
IN VOID *DataMask,
|
|
||||||
IN OUT AMD_CONFIG_PARAMS *StdHeader
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
LibAmdPciPoll (
|
|
||||||
IN ACCESS_WIDTH AccessWidth,
|
|
||||||
IN PCI_ADDR PciAddress,
|
|
||||||
IN VOID *Data,
|
|
||||||
IN 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 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 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
|
|
||||||
IdsOutPort (
|
|
||||||
IN UINT32 Addr,
|
|
||||||
IN UINT32 Value,
|
|
||||||
IN UINT32 Flag
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
StopHere (
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
CpuidRead (
|
|
||||||
IN UINT32 CpuidFcnAddress,
|
|
||||||
OUT CPUID_DATA *Value
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT8
|
|
||||||
ReadNumberOfCpuCores(
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
#endif // _AMD_LIB_H_
|
|
@ -67,7 +67,6 @@ CPPFLAGS_x86_64 += $(AGESA_INC)
|
|||||||
libagesa-y += Legacy/Proc/agesaCallouts.c
|
libagesa-y += Legacy/Proc/agesaCallouts.c
|
||||||
libagesa-y += Legacy/Proc/Dispatcher.c
|
libagesa-y += Legacy/Proc/Dispatcher.c
|
||||||
libagesa-y += Legacy/Proc/hobTransfer.c
|
libagesa-y += Legacy/Proc/hobTransfer.c
|
||||||
libagesa-y += Lib/amdlib.c
|
|
||||||
libagesa-y += Proc/Common/AmdInitEarly.c
|
libagesa-y += Proc/Common/AmdInitEarly.c
|
||||||
libagesa-y += Proc/Common/AmdInitEnv.c
|
libagesa-y += Proc/Common/AmdInitEnv.c
|
||||||
libagesa-y += Proc/Common/AmdInitLate.c
|
libagesa-y += Proc/Common/AmdInitLate.c
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,358 +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: 63425 $ @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
******************************************************************************
|
|
||||||
*
|
|
||||||
* Copyright (c) 2008 - 2012, 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_
|
|
||||||
|
|
||||||
#define IOCF8 0xCF8
|
|
||||||
#define IOCFC 0xCFC
|
|
||||||
|
|
||||||
// Reg Values for ReadCpuReg and WriteCpuReg
|
|
||||||
#define CR4_REG 0x04
|
|
||||||
#define DR0_REG 0x10
|
|
||||||
#define DR1_REG 0x11
|
|
||||||
#define DR2_REG 0x12
|
|
||||||
#define DR3_REG 0x13
|
|
||||||
#define DR7_REG 0x17
|
|
||||||
|
|
||||||
// PROTOTYPES FOR amdlib32.asm
|
|
||||||
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,
|
|
||||||
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
|
|
||||||
LibAmdFinit (
|
|
||||||
VOID);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
StopHere (
|
|
||||||
VOID
|
|
||||||
);
|
|
||||||
|
|
||||||
#endif // _AMD_LIB_H_
|
|
@ -88,7 +88,6 @@ CPPFLAGS_x86_64 += $(AGESA_INC)
|
|||||||
libagesa-y += Legacy/Proc/Dispatcher.c
|
libagesa-y += Legacy/Proc/Dispatcher.c
|
||||||
libagesa-y += Legacy/Proc/agesaCallouts.c
|
libagesa-y += Legacy/Proc/agesaCallouts.c
|
||||||
libagesa-y += Legacy/Proc/hobTransfer.c
|
libagesa-y += Legacy/Proc/hobTransfer.c
|
||||||
libagesa-y += Lib/amdlib.c
|
|
||||||
libagesa-y += Proc/CPU/Family/0x15/TN/F15TnC6State.c
|
libagesa-y += Proc/CPU/Family/0x15/TN/F15TnC6State.c
|
||||||
libagesa-y += Proc/CPU/Family/0x15/TN/F15TnCpb.c
|
libagesa-y += Proc/CPU/Family/0x15/TN/F15TnCpb.c
|
||||||
libagesa-y += Proc/CPU/Family/0x15/TN/F15TnEquivalenceTable.c
|
libagesa-y += Proc/CPU/Family/0x15/TN/F15TnEquivalenceTable.c
|
||||||
|
@ -106,7 +106,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "Fch.h"
|
#include "Fch.h"
|
||||||
#include <Lib/amdlib.h>
|
#include "amdlib.h"
|
||||||
#include "Common/FchCommonCfg.h"
|
#include "Common/FchCommonCfg.h"
|
||||||
#include "Common/AcpiLib.h"
|
#include "Common/AcpiLib.h"
|
||||||
#include "Common/FchDef.h"
|
#include "Common/FchDef.h"
|
||||||
|
@ -930,3 +930,12 @@ IdsLibDataMaskSet32 (
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
VOID
|
||||||
|
IdsOutPort (
|
||||||
|
IN UINT32 Addr,
|
||||||
|
IN UINT32 Value,
|
||||||
|
IN UINT32 Flag
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__outdword ((UINT16) Addr, Value);
|
||||||
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -94,7 +94,6 @@ CPPFLAGS_x86_64 += $(AGESA_INC)
|
|||||||
libagesa-y += Legacy/Proc/agesaCallouts.c
|
libagesa-y += Legacy/Proc/agesaCallouts.c
|
||||||
libagesa-y += Legacy/Proc/Dispatcher.c
|
libagesa-y += Legacy/Proc/Dispatcher.c
|
||||||
libagesa-y += Legacy/Proc/hobTransfer.c
|
libagesa-y += Legacy/Proc/hobTransfer.c
|
||||||
libagesa-y += Lib/amdlib.c
|
|
||||||
libagesa-y += Proc/Common/AmdInitEarly.c
|
libagesa-y += Proc/Common/AmdInitEarly.c
|
||||||
libagesa-y += Proc/Common/AmdInitEnv.c
|
libagesa-y += Proc/Common/AmdInitEnv.c
|
||||||
libagesa-y += Proc/Common/AmdInitLate.c
|
libagesa-y += Proc/Common/AmdInitLate.c
|
||||||
|
@ -1013,3 +1013,12 @@ IdsLibDataMaskSet32 (
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
VOID
|
||||||
|
IdsOutPort (
|
||||||
|
IN UINT32 Addr,
|
||||||
|
IN UINT32 Value,
|
||||||
|
IN UINT32 Flag
|
||||||
|
)
|
||||||
|
{
|
||||||
|
__outdword ((UINT16) Addr, Value);
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user