diff options
Diffstat (limited to 'Core/EM/AMIDebugRx/binaries/PeiAMIDebugRx/INC/AMIpeidebug.h')
-rw-r--r-- | Core/EM/AMIDebugRx/binaries/PeiAMIDebugRx/INC/AMIpeidebug.h | 469 |
1 files changed, 469 insertions, 0 deletions
diff --git a/Core/EM/AMIDebugRx/binaries/PeiAMIDebugRx/INC/AMIpeidebug.h b/Core/EM/AMIDebugRx/binaries/PeiAMIDebugRx/INC/AMIpeidebug.h new file mode 100644 index 0000000..6bdb229 --- /dev/null +++ b/Core/EM/AMIDebugRx/binaries/PeiAMIDebugRx/INC/AMIpeidebug.h @@ -0,0 +1,469 @@ +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// +//** **// +//** (C)Copyright 2009, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy, Building 200,Norcross, Georgia 30093 **// +//** **// +//** Phone (770)-246-8600 **// +//** **// +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// +// $Header: /Alaska/BIN/Modules/AMIDebugRx/binaries/PeiAMIDebugRx/INC/AMIpeidebug.h 6 3/16/11 4:43p Sudhirv $ +// +// $Revision: 6 $ +// +// $Date: 3/16/11 4:43p $ +//***************************************************************** +//***************************************************************** +// +// peidebug.h +// +// +// Revision History +// ---------------- +// $Log: /Alaska/BIN/Modules/AMIDebugRx/binaries/PeiAMIDebugRx/INC/AMIpeidebug.h $ +// +// 6 3/16/11 4:43p Sudhirv +// Changes to Support Older Cores before 4.6.5.0 +// +// 5 3/09/11 8:22a Sudhirv +// EIP 53658 - AMIDebugRx\Debugger support for PI 1.1 +// +// 4 9/22/10 7:09p Sudhirv +// 4.6.2_AMIDebugRx_2.01.0026_Beta Release +// +// 3 9/30/09 8:00p Madhans +// Updated for 1.31. Refer release notes. +// +// 2 7/17/09 7:15p Madhans +// DebugRx 1.30.0022 +// +// 2 7/13/09 2:49p Sudhirv +// Update with Coding Standards +// +// 1 7/07/09 4:46p Sudhirv +// Restructure Binaries Created +// +// 1 5/01/09 7:48p Madhans +// AMIDebug Rx Module. Intial Checkin. +// +// 1 4/29/09 7:52a Sudhirv +// AMI Debug Rx module created +// +// 25 3/19/09 3:41p Sudhirv +// Added After changes for Target Sending Exception Packets +// +// 23 1/30/09 12:32p Sudhirv +// Added after Console Redirection Support +// +// 22 9/25/08 4:29p Sudhirv +// Updated SMM Debugging and Read/Write Mem +// +// 21 7/29/08 1:09p Sudhirv +// Changes made to support SMM debugging in savemem and loadmem +// extension commands +// +// 20 6/26/08 3:30p Sudhirv +// Uploaded after checking coding standards +// +// 19 6/11/08 2:24p Sudhirv +// After Addibg GP Handling in MSR +// +// 18 6/11/08 5:46a Sudhirv +// Uploaded for Release with Read/WriteMSR restriction, Readio/Writeio +// restriction, Read/Write IndirectIO, ListModules and PciList +// +// 17 12/05/07 8:23a Sudhirv +// Added to support and Restrict ReadMSR/WriteMSR commands +// +// 16 10/24/07 10:31a Madhans +// Hatdriver Support. +// +// 15 8/29/07 3:49p Madhans +// To resolve AMD Platfrom issues. +// +// 14 8/29/07 12:49p Madhans +// Common code for 4.x and 3.x +// +// 13 6/13/07 3:16p Madhans +// Copyright Year updated. +// +// 12 6/13/07 2:37p Madhans +// To improve the performance in Load FV though Serial. +// +// 11 6/05/07 7:10p Natalyak +// Load FV support +// +// 10 4/05/07 6:33p Madhans +// CAR_BASE_ADJUST_OFFSET removed. +// +// 9 3/10/07 1:24p Madhans +// CAR_BASE_ADJUST_OFFSET allows to have PEI_SERVICES address above IDT +// +// 8 2/23/07 5:36p Madhans +// PeiDbgr_SendPeiLoadImage function added. +// +// 7 1/22/07 11:41a Madhans +// Modification made for Binary Release 1.04.0003. +// +// 11 1/05/07 6:15p Madhan +// +// 10 1/05/07 1:05p Ashrafj +// Latest version 1.04.0001 Beta +// Known issues from previous 1.04.000 Beta release has been fixed. +// +// 9 12/26/06 7:07p Ashrafj +// Support added to support the Aptio 4.5 x64 EFI BIOS (use latest +// Host.zip). +// PEI Debugger in FV_MAIN (use new PEIDEBUGFIXUP). +// Support added for StatusCode redirection without Debug feature enabled +// (not working if DXE only and x64 is enabled). +// Plus, some new SDL tokens defined to support the Aptio 4.5 build +// process in Debug or non-debug mode. +// All the components of Debugger eModule in source form. +// +// 7 6/27/06 11:44a Ashrafj +// New feature added: +// To enable the PEI Debug support after system memory is installed, based +// on build option provided through a new SDL token named +// "PEI_DEBUG_SUPPORT_AFTER_MEMORY". +// +// 6 3/15/06 7:45p Ashrafj +// Modfication done to provide the Binary integration for Aptio 4 +// projects. +// +// 5 12/22/05 12:42p Ashrafj +// Changes done to support the complete Chipset template porting. +// +// To use this changes, make sure to have the latest Board components of +// CPU, SB and SIO, which have the following ELINKS ported: +// - SBPEIDBG_Initialize, +// - CPUPEIDBG_Initialize, +// - SIOPEIDBG_Initialize, +// - SBPEIDBG_InitUsbEhci. +// +// 4 12/05/05 7:29p Ashrafj +// Serial Port Debug Support added for PEI - DXE Debugger. +// +// Change in Serial Port Communication: Now the data transmission through +// Serial Port is supported with the hardware Flow control feature of the +// Serial Port controller. +// +// 3 11/29/05 6:07p Markw +// Change USB interface function parameters. +// +// 2 10/25/05 11:38a Ashrafj +// Minor fix - packed structure alignment and width size of global +// variable. +// +// 1 10/19/05 10:54a Felixp +// +// 1 10/19/05 10:44a Felixp +// +// +// +//***************************************************************** + +//<AMI_FHDR_START> +//---------------------------------------------------------------------------- +// +// Name: AMIPeiDebug.h +// +// Description: Contains 32 bit Pei Debugger prototypes +// +//---------------------------------------------------------------------------- +//<AMI_FHDR_END> +#ifndef _AMI_PEIDEBUG_H_ +#define _AMI_PEIDEBUG_H_ + +#ifdef USB_DEBUGGER +#include "EHCI.h" +#endif + +#ifdef ALASKA_SUPPORT +#include "token.h" +#else +#include "tokens.h" +#endif + +#define EFI_PEI_DBG_BASEADDRESS_PPI_GUID \ + { 0x9bf4e141, 0xa4ec, 0x4d72, {0xbc, 0xc4, 0x94, 0x2, 0x1d, 0x2b, 0x80, 0xbd }} + +#if defined (PI_SPECIFICATION_VERSION) +#if PI_SPECIFICATION_VERSION>=0x00010000 +UINTN GetCARBaseAddress(); +#define PEI_DEBUG_DATASECTION_BASEADDRESS GetCARBaseAddress() //Starting address of PEI debugger data section +#define PEI_DEBUG_DATASECTION_SIZE 0x2048 + +#else //if PI_SPECIFICATION_VERSION >= 0x00010000 +#ifdef ALASKA_SUPPORT +#define PEI_DEBUG_DATASECTION_BASEADDRESS CAR_BASE_ADDRESS //Starting address of PEI debugger data section +#define PEI_DEBUG_DATASECTION_SIZE CAR_TOTAL_SIZE +#else //ifdef ALASKA_SUPPORT +#define PM_BASE_ADDRESS APLIB_PM_BASE_ADDRESS +#define DATA_STACK_BASEADDRESS APLIB_CAR_BASEADDRESS +#define PEI_DEBUG_DATASECTION_BASEADDRESS DATA_STACK_BASEADDRESS //Starting address of PEI debugger data section +#define PEI_DEBUG_DATASECTION_SIZE 0x400 +#endif //ifdef ALASKA_SUPPORT + +#endif //if PI_SPECIFICATION_VERSION >= 0x00010000 + +#else //if not defined (PI_SPECIFICATION_VERSION) +#ifdef ALASKA_SUPPORT +#define PEI_DEBUG_DATASECTION_BASEADDRESS CAR_BASE_ADDRESS //Starting address of PEI debugger data section +#define PEI_DEBUG_DATASECTION_SIZE CAR_TOTAL_SIZE +#else //ifdef ALASKA_SUPPORT +#define PM_BASE_ADDRESS APLIB_PM_BASE_ADDRESS +#define DATA_STACK_BASEADDRESS APLIB_CAR_BASEADDRESS +#define PEI_DEBUG_DATASECTION_BASEADDRESS DATA_STACK_BASEADDRESS //Starting address of PEI debugger data section +#define PEI_DEBUG_DATASECTION_SIZE 0x400 +#endif //ifdef ALASKA_SUPPORT + +#endif //if defined (PI_SPECIFICATION_VERSION) + +#define IRQ_VECTOR_BASE 0x8 + +typedef struct { + UINT8 Signature[4]; + UINT32 DATABASEADDRESS; +}PEI_DBG_DATA_SECTION; + +#ifdef RELOCATE + +#if defined PI_SPECIFICATION_VERSION +#if (PI_SPECIFICATION_VERSION >= 0x00010000) +#define PEI_DEBUG_DATA_BASEADDRESS GetCARBaseAddress() //(PeiDbgDataSection.DATABASEADDRESS) +#else +extern PEI_DBG_DATA_SECTION PeiDbgDataSection; +#define PEI_DEBUG_DATA_BASEADDRESS (PeiDbgDataSection.DATABASEADDRESS) +#endif +#else +extern PEI_DBG_DATA_SECTION PeiDbgDataSection; +#define PEI_DEBUG_DATA_BASEADDRESS (PeiDbgDataSection.DATABASEADDRESS) +#endif + +#else +#define PEI_DEBUG_DATA_BASEADDRESS PEI_DEBUG_DATASECTION_BASEADDRESS // Fixed Base Address +#endif + +#define IDT_ENTRIES 0x14 // Number of Entries in IDT +#define IDT_SIZE 0xa0 // Total Size = 160 Bytes +#define CONTEXT_SIZE 0x74 // Total Size = 116 Bytes + +#define XPORTLOCALVAR_SIZE 0x48 // Total Size = 72 Bytes + +#define XPORTGLOBALVAR_SIZE 0x18 // Total Size = 24 Bytes +//#define DBGRLOCALVAR_SIZE 0x2c // Total Size = 44 Bytes +#define DBGRLOCALVAR_SIZE 0x36 // Total Size = 56 Bytes +#define XPORTEXPTNBUF_SIZE 0x20 // Total Size = 32 Bytes + +//#define GLOBALBUF_SIZE 0x235 // Total Size = 565 Bytes +#define GLOBALBUF_SIZE 0x210 // Total Size = 528 Bytes + +#define ACKBUF_SIZE 0x0a // Total Size = 10 Bytes + + + +#define PEI_DEBUG_IDTBASEADDR PEI_DEBUG_DATA_BASEADDRESS +#define PEI_DEBUG_CONTEXTADDR PEI_DEBUG_DATA_BASEADDRESS + IDT_SIZE +#define PEI_DEBUG_XPORTLOCALVARADDR PEI_DEBUG_CONTEXTADDR + CONTEXT_SIZE +#define PEI_DEBUG_XPORTGLOBALVARADDR PEI_DEBUG_XPORTLOCALVARADDR + XPORTLOCALVAR_SIZE +#define PEI_DEBUG_DBGRLOCALVARADDR PEI_DEBUG_XPORTGLOBALVARADDR + XPORTGLOBALVAR_SIZE +#define PEI_DEBUG_XPORTEXPTNADDR PEI_DEBUG_DBGRLOCALVARADDR + DBGRLOCALVAR_SIZE +#define PEI_DEBUG_BUFADDR PEI_DEBUG_XPORTEXPTNADDR + XPORTEXPTNBUF_SIZE +#define PEI_DEBUG_ACKADDR PEI_DEBUG_BUFADDR + GLOBALBUF_SIZE + +#define IN_PEI_BEFORE_MEMORY 0 +#define IN_PEI_AFTER_MEMORY 01 +#define IN_DXE_WITH_PEI_DBGR 02 +#define IN_DXE_WITH_DXE_DBGR 03 + +#pragma pack (push, pei_struct_data_pack, 1) + +typedef struct { + unsigned char IDTSet[IDT_SIZE]; + unsigned char ContextReg[CONTEXT_SIZE]; + unsigned char XportLocalVar[XPORTLOCALVAR_SIZE]; + unsigned char XportGlobalVar[XPORTGLOBALVAR_SIZE]; + unsigned char DbgrLocalVar[DBGRLOCALVAR_SIZE]; + unsigned char XportExptn[XPORTEXPTNBUF_SIZE]; + unsigned char GlobalBuf[GLOBALBUF_SIZE]; + unsigned char AckBuf[ACKBUF_SIZE]; +} PEIDebugData_T; + + +#pragma pack (pop, pei_struct_data_pack) + + +typedef struct _AMI_PEI_TRANSPORT_PROTOCOL { + UINT8 Signature[4]; + UINT16 (*Initialize)(); + UINT16 (*Restore)(); + UINT16 (*Send)(); + UINT16 (*Receive)(); + UINT16 (*SyncPacketNumber)(); + UINT16 (*RegisterHandler)(); + VOID (*Callback)(); + UINT16 (*SendNoAck)(); + EFI_STATUS (*ConsoleIn)(); + VOID (*SendExptn)(); +} AMI_PEI_TRANSPORT_PROTOCOL; + +typedef struct{ + UINT8 Signature[4]; + VOID (*ExceptionCallback)(); + VOID (*SendMessage)(); + UINTN (*PeiDbgr_EnableDebugSupport)(UINTN BrkPtAddr); + UINTN (*PeiDbgr_SendPeiLoadImage)(UINTN FileHandle,UINTN ImageAddr,UINTN ImageSize,void * PDBFileName); + VOID (*DoSpecialBreakPoint)(UINT32 EaxValue,UINT32 EdxValue); +}AMI_DEBUGGER_INTERFACE; + +#pragma pack(1) +typedef struct { + UINT32 m_EIP; + UINT16 m_SendPktSize; + UINT8 m_CurSendPktNum; + UINT16 m_CurIxInRcvPkt; + UINT8 m_CurRcvPktNum; + UINT32 m_ExptnHndlr; + UINT8 m_IsSending; + UINT16 m_ExptnType; + UINT8 m_PrevByteEsc; + UINT8 m_RcvingPkt; + UINT8 m_RcvPktReady; + UINT16 m_RcvPktSize; + UINT8 m_IsPortInListenMode; + UINT8 m_IsHostConnected; + UINT8 m_IsPeiDbgIsS3; +#ifndef USB_DEBUGGER + UINT16 m_BaseAddr; +// UINT8 m_IsCOMPortInListenMode; +// UINT32 m_ReadAttempts; //only for debugging purpose -remove later +// UINT8 m_CacheRecvFIFO[24]; +// UINT8 m_CacheSize; +// UINT8 m_CacheIndex; + + //To obtain info from Porting template support, and use it to publish HOB + UINT8 m_SIO_LDN_UART; //Logical Device Number for COM port +#else + UINT32 USBBASE; + UINT32 USB2_DEBUG_PORT_REGISTER_INTERFACE; + UINT8 gDebugUSBAddress; + UINT8 gDebugInEndpoint; + UINT8 gDebugOutEndpoint; + GET_DESCRIPTOR_DEBUG_PORT Descriptor; + UINT8 gUSBBulkTransferSetAddr; + + UINT8 gIN_DATAPID; + UINT8 gOUT_DATAPID; + + UINT8 gIN_DATABUFFER[8]; + UINT8 gOUT_DATABUFFER[8]; + + UINT8 gCurrentINDataBufferLength; + UINT8 gCurrentINDataBufferIndex; + UINT8 gCurrentOUTDataBufferIndex; + + UINT8 lastdata; + + UINT8 gIsUsbDebugPortInUse; +// UINT8 gIsUsbDebugPortInListenMode; + + //To obtain info from Porting template support, and use it to publish HOB + UINT16 m_EHCI_MEMORY_SIZE; + UINT8 m_PCI_EHCI_BUS_NUMBER; + UINT8 m_PCI_EHCI_DEVICE_NUMBER; + UINT8 m_PCI_EHCI_FUNCTION_NUMBER; + UINT8 m_PCI_EHCI_BAR_OFFSET; +#endif + UINT64 m_PeiDbgRxInitTimerVal; +}SerXPortGblData_T; + +typedef struct { + AMI_PEI_TRANSPORT_PROTOCOL *gTransportProtocol; + UINT16 (*Handler)(); + + //Additional parameters added in order to support DXE phase callback of + //IRQ register handlers + UINTN InterruptType; + UINTN ContextData; + VOID (*IRQRegisterHandler)(UINTN,UINTN); + +#ifdef USB_DEBUGGER + //Additional interface for PeiDbgSIO module to reinit EHCI memory base +// void (*PeiDbgSIO_Init_USB_EHCI)(UINTN PeiDbgData_BaseAddr,UINTN MMIO_BaseAddr); +// void (*PeiDbgSIO_Init_USB_EHCI)(UINTN UsbBaseAddress, UINTN *Usb2DebugPortReg); + void (*PeiDbgSIO_Init_USB_EHCI)(VOID *); +#endif +}SerXPortGblVar_T; + +typedef struct { + UINT8 m_BrkPtType; + UINT16 m_CS; + UINT32 m_EIP; + UINT16 m_SS; + UINT32 m_ESP; + UINT32 m_DR2; + UINT32 m_DR7; + UINT8 m_TargetRunning; + UINT8 m_DbgrBusy; + UINT8 m_DR2Valid; + + UINT8 m_GPOccrd; + UINT8 m_MSRState; + + UINT8 m_NotifyAndBreak; + + UINT16 m_DbgSendBufSize; + UINT16 m_DbgRcvBufSize; + VOID (*PeiDbgrReportStatusCode)(); + UINT8 m_FlagToDebugAfterMemory; + UINTN (*PeiDbgr_EnableDebugSupport)(UINTN BrkPtAddr); + AMI_DEBUGGER_INTERFACE *pPeiDbgDbgrIfc; + UINT8 m_TargetState; + VOID* m_ppPeiSVC; + EFI_STATUS (*UpdateFVHob)(); +}DbgGblData_T; + +#pragma pack() + +#pragma pack(1) +typedef struct { + UINT16 m_OffLow; + UINT16 m_SegSel; + UINT16 m_Reserved; + UINT16 m_OffHigh; +}IDTEntry_T; + +typedef struct { + UINT16 IDTLength; + UINTN IDTBaseAddr; //should work for both 32 and 64 mode +}IDTBASE; + +typedef UINT8 (DBG_IS_S3)(void); +#pragma pack() + +void DriverSpecialBreakPoint(UINT32 EaxVal, UINT32 EdxVal); + +#endif + +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// +//** **// +//** (C)Copyright 2009, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy, Building 200,Norcross, Georgia 30093 **// +//** **// +//** Phone (770)-246-8600 **// +//** **// +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// |