OmapLib|Omap35xxPkg/Library/OmapLib/OmapLib.inf
OmapDmaLib|Omap35xxPkg/Library/OmapDmaLib/OmapDmaLib.inf
EblNetworkLib|EmbeddedPkg/Library/EblNetworkLib/EblNetworkLib.inf
-
+ DebugAgentTimerLib|Omap35xxPkg/Library/DebugAgentTimerLib/DebugAgentTimerLib.inf\r
+
GdbSerialLib|Omap35xxPkg/Library/GdbSerialLib/GdbSerialLib.inf
ArmDisassemblerLib|ArmPkg/Library/ArmDisassemblerLib/ArmDisassemblerLib.inf
DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
# 1/123 faster than Stm or Vstm version
BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf
+ # Uncomment to turn on GDB stub in SEC. \r
+ #DebugAgentLib|EmbeddedPkg/Library/GdbDebugAgent/GdbDebugAgent.inf\r
+
[LibraryClasses.common.PEI_CORE]
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
ReportStatusCodeLib|IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
\r
\r
#include <GdbDebugAgent.h>\r
-#include <Library/CacheMaintenanceLib.h>\r
#include <Library/PrintLib.h>\r
#include <Library/ArmLib.h>\r
\r
/**\r
Initialize debug agent.\r
\r
- This function is used to set up debug enviroment. It may enable interrupts.\r
+ This function is used to set up debug environment to support source level debugging.\r
+ If certain Debug Agent Library instance has to save some private data in the stack,\r
+ this function must work on the mode that doesn't return to the caller, then\r
+ the caller needs to wrap up all rest of logic after InitializeDebugAgent() into one\r
+ function and pass it into InitializeDebugAgent(). InitializeDebugAgent() is\r
+ responsible to invoke the passing-in function at the end of InitializeDebugAgent().\r
\r
- @param[in] InitFlag Init flag is used to decide initialize process.\r
- @param[in] Context Context needed according to InitFlag, it was optional.\r
+ If the parameter Function is not NULL, Debug Agent Libary instance will invoke it by\r
+ passing in the Context to be its parameter.\r
+\r
+ If Function() is NULL, Debug Agent Library instance will return after setup debug\r
+ environment.\r
+\r
+ @param[in] InitFlag Init flag is used to decide the initialize process.\r
+ @param[in] Context Context needed according to InitFlag; it was optional.\r
+ @param[in] Function Continue function called by debug agent library; it was\r
+ optional.\r
\r
**/\r
VOID\r
EFIAPI\r
InitializeDebugAgent (\r
IN UINT32 InitFlag,\r
- IN VOID *Context OPTIONAL\r
+ IN VOID *Context, OPTIONAL\r
+ IN DEBUG_AGENT_CONTINUE Function OPTIONAL\r
)\r
{
UINTN Offset;\r
ArmEnableInterrupts ();\r
}\r
\r
+ if (Function != NULL) {\r
+ Function (Context);\r
+ }\r
+\r
return;\r
}\r
\r
#include <Library/PrintLib.h>
#include <Library/CacheMaintenanceLib.h>
#include <Library/DebugAgentTimerLib.h>
+#include <Library/DebugAgentLib.h>\r
#include <IndustryStandard/PeImage.h>
#include <Protocol/DebugSupport.h>
/**\r
Initialize debug agent.\r
\r
- This function is used to set up debug enviroment. It may enable interrupts.\r
+ This function is used to set up debug environment to support source level debugging.\r
+ If certain Debug Agent Library instance has to save some private data in the stack,\r
+ this function must work on the mode that doesn't return to the caller, then\r
+ the caller needs to wrap up all rest of logic after InitializeDebugAgent() into one\r
+ function and pass it into InitializeDebugAgent(). InitializeDebugAgent() is\r
+ responsible to invoke the passing-in function at the end of InitializeDebugAgent().\r
\r
- @param[in] InitFlag Init flag is used to decide initialize process.\r
- @param[in] Context Context needed according to InitFlag, it was optional.\r
+ If the parameter Function is not NULL, Debug Agent Libary instance will invoke it by\r
+ passing in the Context to be its parameter.\r
+\r
+ If Function() is NULL, Debug Agent Library instance will return after setup debug\r
+ environment.\r
+\r
+ @param[in] InitFlag Init flag is used to decide the initialize process.\r
+ @param[in] Context Context needed according to InitFlag; it was optional.\r
+ @param[in] Function Continue function called by debug agent library; it was\r
+ optional.\r
\r
**/\r
VOID\r
EFIAPI\r
InitializeDebugAgent (\r
IN UINT32 InitFlag,\r
- IN VOID *Context OPTIONAL\r
+ IN VOID *Context, OPTIONAL\r
+ IN DEBUG_AGENT_CONTINUE Function OPTIONAL\r
)\r
{\r
// BugBug: Add the code to build an GDT/IDT\r
+\r
+ if (Function != NULL) {\r
+ Function (Context);\r
+ }\r
}\r
\r