X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EmbeddedPkg%2FLibrary%2FGdbDebugAgent%2FArm%2FProcessor.c;h=d3c050499a302fb2f9155649bc8f669ab4429122;hp=c5f59323dbb6bb1eaa3f3e22de400caff066de4f;hb=685f8c760077cb2fb11b74c5758a6d54aebf539f;hpb=7c137cae5a87548c824966e3caad22928a9aea27 diff --git a/EmbeddedPkg/Library/GdbDebugAgent/Arm/Processor.c b/EmbeddedPkg/Library/GdbDebugAgent/Arm/Processor.c index c5f59323db..d3c050499a 100755 --- a/EmbeddedPkg/Library/GdbDebugAgent/Arm/Processor.c +++ b/EmbeddedPkg/Library/GdbDebugAgent/Arm/Processor.c @@ -15,7 +15,6 @@ #include -#include #include #include @@ -597,17 +596,31 @@ GdbFPutString ( /** Initialize debug agent. - This function is used to set up debug enviroment. It may enable interrupts. + This function is used to set up debug environment to support source level debugging. + If certain Debug Agent Library instance has to save some private data in the stack, + this function must work on the mode that doesn't return to the caller, then + the caller needs to wrap up all rest of logic after InitializeDebugAgent() into one + function and pass it into InitializeDebugAgent(). InitializeDebugAgent() is + responsible to invoke the passing-in function at the end of InitializeDebugAgent(). - @param[in] InitFlag Init flag is used to decide initialize process. - @param[in] Context Context needed according to InitFlag, it was optional. + If the parameter Function is not NULL, Debug Agent Libary instance will invoke it by + passing in the Context to be its parameter. + + If Function() is NULL, Debug Agent Library instance will return after setup debug + environment. + + @param[in] InitFlag Init flag is used to decide the initialize process. + @param[in] Context Context needed according to InitFlag; it was optional. + @param[in] Function Continue function called by debug agent library; it was + optional. **/ VOID EFIAPI InitializeDebugAgent ( IN UINT32 InitFlag, - IN VOID *Context OPTIONAL + IN VOID *Context, OPTIONAL + IN DEBUG_AGENT_CONTINUE Function OPTIONAL ) { UINTN Offset; @@ -653,6 +666,10 @@ InitializeDebugAgent ( ArmEnableInterrupts (); } + if (Function != NULL) { + Function (Context); + } + return; }