]> git.proxmox.com Git - mirror_edk2.git/blobdiff - SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgent/DxeDebugAgentLib.c
SourceLevelDebugPkg: Apply uncrustify changes
[mirror_edk2.git] / SourceLevelDebugPkg / Library / DebugAgent / DxeDebugAgent / DxeDebugAgentLib.c
index 84258aa0f9b306546d906a01876a3b1ae9d7bd6f..a41bba2c4ba93b6e218078df70571c601eb71921 100644 (file)
@@ -8,15 +8,15 @@
 \r
 #include "DxeDebugAgentLib.h"\r
 \r
-DEBUG_AGENT_MAILBOX          mMailbox;\r
-DEBUG_AGENT_MAILBOX          *mMailboxPointer = NULL;\r
-IA32_IDT_GATE_DESCRIPTOR     mIdtEntryTable[33];\r
-BOOLEAN                      mDxeCoreFlag                = FALSE;\r
-BOOLEAN                      mMultiProcessorDebugSupport = FALSE;\r
-VOID                         *mSavedIdtTable             = NULL;\r
-UINTN                        mSaveIdtTableSize           = 0;\r
-BOOLEAN                      mDebugAgentInitialized      = FALSE;\r
-BOOLEAN                      mSkipBreakpoint             = FALSE;\r
+DEBUG_AGENT_MAILBOX       mMailbox;\r
+DEBUG_AGENT_MAILBOX       *mMailboxPointer = NULL;\r
+IA32_IDT_GATE_DESCRIPTOR  mIdtEntryTable[33];\r
+BOOLEAN                   mDxeCoreFlag                = FALSE;\r
+BOOLEAN                   mMultiProcessorDebugSupport = FALSE;\r
+VOID                      *mSavedIdtTable             = NULL;\r
+UINTN                     mSaveIdtTableSize           = 0;\r
+BOOLEAN                   mDebugAgentInitialized      = FALSE;\r
+BOOLEAN                   mSkipBreakpoint             = FALSE;\r
 \r
 /**\r
   Check if debug agent support multi-processor.\r
@@ -46,32 +46,33 @@ InternalConstructorWorker (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                  Status;\r
-  EFI_PHYSICAL_ADDRESS        Address;\r
-  BOOLEAN                     DebugTimerInterruptState;\r
-  DEBUG_AGENT_MAILBOX         *Mailbox;\r
-  DEBUG_AGENT_MAILBOX         *NewMailbox;\r
-  EFI_HOB_GUID_TYPE           *GuidHob;\r
-  EFI_VECTOR_HANDOFF_INFO     *VectorHandoffInfo;\r
+  EFI_STATUS               Status;\r
+  EFI_PHYSICAL_ADDRESS     Address;\r
+  BOOLEAN                  DebugTimerInterruptState;\r
+  DEBUG_AGENT_MAILBOX      *Mailbox;\r
+  DEBUG_AGENT_MAILBOX      *NewMailbox;\r
+  EFI_HOB_GUID_TYPE        *GuidHob;\r
+  EFI_VECTOR_HANDOFF_INFO  *VectorHandoffInfo;\r
 \r
   //\r
   // Check persisted vector handoff info\r
   //\r
-  Status = EFI_SUCCESS;\r
+  Status  = EFI_SUCCESS;\r
   GuidHob = GetFirstGuidHob (&gEfiVectorHandoffInfoPpiGuid);\r
-  if (GuidHob != NULL && !mDxeCoreFlag) {\r
+  if ((GuidHob != NULL) && !mDxeCoreFlag) {\r
     //\r
     // Check if configuration table is installed or not if GUIDed HOB existed,\r
     // only when Debug Agent is not linked by DXE Core\r
     //\r
-    Status = EfiGetSystemConfigurationTable (&gEfiVectorHandoffTableGuid, (VOID **) &VectorHandoffInfo);\r
+    Status = EfiGetSystemConfigurationTable (&gEfiVectorHandoffTableGuid, (VOID **)&VectorHandoffInfo);\r
   }\r
-  if (GuidHob == NULL || Status != EFI_SUCCESS) {\r
+\r
+  if ((GuidHob == NULL) || (Status != EFI_SUCCESS)) {\r
     //\r
     // Install configuration table for persisted vector handoff info if GUIDed HOB cannot be found or\r
     // configuration table does not exist\r
     //\r
-    Status = gBS->InstallConfigurationTable (&gEfiVectorHandoffTableGuid, (VOID *) &mVectorHandoffInfoDebugAgent[0]);\r
+    Status = gBS->InstallConfigurationTable (&gEfiVectorHandoffTableGuid, (VOID *)&mVectorHandoffInfoDebugAgent[0]);\r
     if (EFI_ERROR (Status)) {\r
       DEBUG ((DEBUG_ERROR, "DebugAgent: Cannot install configuration table for persisted vector handoff info!\n"));\r
       CpuDeadLoop ();\r
@@ -84,12 +85,12 @@ InternalConstructorWorker (
   InstallSerialIo ();\r
 \r
   Address = 0;\r
-  Status = gBS->AllocatePages (\r
-                  AllocateAnyPages,\r
-                  EfiACPIMemoryNVS,\r
-                  EFI_SIZE_TO_PAGES (sizeof(DEBUG_AGENT_MAILBOX) + PcdGet16(PcdDebugPortHandleBufferSize)),\r
-                  &Address\r
-                  );\r
+  Status  = gBS->AllocatePages (\r
+                   AllocateAnyPages,\r
+                   EfiACPIMemoryNVS,\r
+                   EFI_SIZE_TO_PAGES (sizeof (DEBUG_AGENT_MAILBOX) + PcdGet16 (PcdDebugPortHandleBufferSize)),\r
+                   &Address\r
+                   );\r
   if (EFI_ERROR (Status)) {\r
     DEBUG ((DEBUG_ERROR, "DebugAgent: Cannot install configuration table for mailbox!\n"));\r
     CpuDeadLoop ();\r
@@ -97,14 +98,14 @@ InternalConstructorWorker (
 \r
   DebugTimerInterruptState = SaveAndSetDebugTimerInterrupt (FALSE);\r
 \r
-  NewMailbox = (DEBUG_AGENT_MAILBOX *) (UINTN) Address;\r
+  NewMailbox = (DEBUG_AGENT_MAILBOX *)(UINTN)Address;\r
   //\r
   // Copy Mailbox and Debug Port Handle buffer to new location in ACPI NVS memory, because original Mailbox\r
   // and Debug Port Handle buffer may be free at runtime, SMM debug agent needs to access them\r
   //\r
   Mailbox = GetMailboxPointer ();\r
   CopyMem (NewMailbox, Mailbox, sizeof (DEBUG_AGENT_MAILBOX));\r
-  CopyMem (NewMailbox + 1, (VOID *)(UINTN)Mailbox->DebugPortHandle, PcdGet16(PcdDebugPortHandleBufferSize));\r
+  CopyMem (NewMailbox + 1, (VOID *)(UINTN)Mailbox->DebugPortHandle, PcdGet16 (PcdDebugPortHandleBufferSize));\r
   //\r
   // Update Debug Port Handle in new Mailbox\r
   //\r
@@ -113,7 +114,7 @@ InternalConstructorWorker (
 \r
   DebugTimerInterruptState = SaveAndSetDebugTimerInterrupt (DebugTimerInterruptState);\r
 \r
-  Status = gBS->InstallConfigurationTable (&gEfiDebugAgentGuid, (VOID *) mMailboxPointer);\r
+  Status = gBS->InstallConfigurationTable (&gEfiDebugAgentGuid, (VOID *)mMailboxPointer);\r
   if (EFI_ERROR (Status)) {\r
     DEBUG ((DEBUG_ERROR, "DebugAgent: Failed to install configuration for mailbox!\n"));\r
     CpuDeadLoop ();\r
@@ -157,11 +158,11 @@ GetMailboxFromConfigurationTable (
   VOID\r
   )\r
 {\r
-  EFI_STATUS               Status;\r
-  DEBUG_AGENT_MAILBOX      *Mailbox;\r
+  EFI_STATUS           Status;\r
+  DEBUG_AGENT_MAILBOX  *Mailbox;\r
 \r
-  Status = EfiGetSystemConfigurationTable (&gEfiDebugAgentGuid, (VOID **) &Mailbox);\r
-  if (Status == EFI_SUCCESS && Mailbox != NULL) {\r
+  Status = EfiGetSystemConfigurationTable (&gEfiDebugAgentGuid, (VOID **)&Mailbox);\r
+  if ((Status == EFI_SUCCESS) && (Mailbox != NULL)) {\r
     VerifyMailboxChecksum (Mailbox);\r
     return Mailbox;\r
   } else {\r
@@ -179,19 +180,20 @@ GetMailboxFromConfigurationTable (
 **/\r
 DEBUG_AGENT_MAILBOX *\r
 GetMailboxFromHob (\r
-  IN VOID                  *HobStart\r
+  IN VOID  *HobStart\r
   )\r
 {\r
-  EFI_HOB_GUID_TYPE        *GuidHob;\r
-  UINT64                   *MailboxLocation;\r
-  DEBUG_AGENT_MAILBOX      *Mailbox;\r
+  EFI_HOB_GUID_TYPE    *GuidHob;\r
+  UINT64               *MailboxLocation;\r
+  DEBUG_AGENT_MAILBOX  *Mailbox;\r
 \r
   GuidHob = GetNextGuidHob (&gEfiDebugAgentGuid, HobStart);\r
   if (GuidHob == NULL) {\r
     return NULL;\r
   }\r
-  MailboxLocation = (UINT64 *) (GET_GUID_HOB_DATA(GuidHob));\r
-  Mailbox = (DEBUG_AGENT_MAILBOX *)(UINTN)(*MailboxLocation);\r
+\r
+  MailboxLocation = (UINT64 *)(GET_GUID_HOB_DATA (GuidHob));\r
+  Mailbox         = (DEBUG_AGENT_MAILBOX *)(UINTN)(*MailboxLocation);\r
   VerifyMailboxChecksum (Mailbox);\r
 \r
   return Mailbox;\r
@@ -225,7 +227,7 @@ GetDebugPortHandle (
   VOID\r
   )\r
 {\r
-  return (DEBUG_PORT_HANDLE) (UINTN)(GetMailboxPointer ()->DebugPortHandle);\r
+  return (DEBUG_PORT_HANDLE)(UINTN)(GetMailboxPointer ()->DebugPortHandle);\r
 }\r
 \r
 /**\r
@@ -240,13 +242,13 @@ GetDebugPortHandle (
 **/\r
 VOID\r
 SetupDebugAgentEnvironment (\r
-  IN DEBUG_AGENT_MAILBOX       *Mailbox\r
+  IN DEBUG_AGENT_MAILBOX  *Mailbox\r
   )\r
 {\r
-  IA32_DESCRIPTOR              Idtr;\r
-  UINT16                       IdtEntryCount;\r
-  UINT64                       DebugPortHandle;\r
-  UINT32                       DebugTimerFrequency;\r
+  IA32_DESCRIPTOR  Idtr;\r
+  UINT16           IdtEntryCount;\r
+  UINT64           DebugPortHandle;\r
+  UINT32           DebugTimerFrequency;\r
 \r
   if (mMultiProcessorDebugSupport) {\r
     InitializeSpinLock (&mDebugMpContext.MpContextSpinLock);\r
@@ -255,26 +257,26 @@ SetupDebugAgentEnvironment (
     //\r
     // Clear Break CPU index value\r
     //\r
-    mDebugMpContext.BreakAtCpuIndex = (UINT32) -1;\r
+    mDebugMpContext.BreakAtCpuIndex = (UINT32)-1;\r
   }\r
 \r
   //\r
   // Get original IDT address and size.\r
   //\r
-  AsmReadIdtr ((IA32_DESCRIPTOR *) &Idtr);\r
-  IdtEntryCount = (UINT16) ((Idtr.Limit + 1) / sizeof (IA32_IDT_GATE_DESCRIPTOR));\r
+  AsmReadIdtr ((IA32_DESCRIPTOR *)&Idtr);\r
+  IdtEntryCount = (UINT16)((Idtr.Limit + 1) / sizeof (IA32_IDT_GATE_DESCRIPTOR));\r
   if (IdtEntryCount < 33) {\r
     ZeroMem (&mIdtEntryTable, sizeof (IA32_IDT_GATE_DESCRIPTOR) * 33);\r
     //\r
     // Copy original IDT table into new one\r
     //\r
-    CopyMem (&mIdtEntryTable, (VOID *) Idtr.Base, Idtr.Limit + 1);\r
+    CopyMem (&mIdtEntryTable, (VOID *)Idtr.Base, Idtr.Limit + 1);\r
     //\r
     // Load new IDT table\r
     //\r
-    Idtr.Limit = (UINT16) (sizeof (IA32_IDT_GATE_DESCRIPTOR) * 33 - 1);\r
-    Idtr.Base  = (UINTN) &mIdtEntryTable;\r
-    AsmWriteIdtr ((IA32_DESCRIPTOR *) &Idtr);\r
+    Idtr.Limit = (UINT16)(sizeof (IA32_IDT_GATE_DESCRIPTOR) * 33 - 1);\r
+    Idtr.Base  = (UINTN)&mIdtEntryTable;\r
+    AsmWriteIdtr ((IA32_DESCRIPTOR *)&Idtr);\r
   }\r
 \r
   //\r
@@ -294,6 +296,7 @@ SetupDebugAgentEnvironment (
     } else {\r
       ZeroMem (&mMailbox, sizeof (DEBUG_AGENT_MAILBOX));\r
     }\r
+\r
     mMailboxPointer = &mMailbox;\r
   }\r
 \r
@@ -305,7 +308,7 @@ SetupDebugAgentEnvironment (
   //\r
   // Initialize debug communication port\r
   //\r
-  DebugPortHandle = (UINT64) (UINTN)DebugPortInitialize ((VOID *)(UINTN)mMailboxPointer->DebugPortHandle, NULL);\r
+  DebugPortHandle = (UINT64)(UINTN)DebugPortInitialize ((VOID *)(UINTN)mMailboxPointer->DebugPortHandle, NULL);\r
   UpdateMailboxContent (mMailboxPointer, DEBUG_MAILBOX_DEBUG_PORT_HANDLE_INDEX, DebugPortHandle);\r
 \r
   if (Mailbox == NULL) {\r
@@ -326,7 +329,6 @@ SetupDebugAgentEnvironment (
   }\r
 }\r
 \r
-\r
 /**\r
   Initialize debug agent.\r
 \r
@@ -352,15 +354,15 @@ InitializeDebugAgent (
   IN DEBUG_AGENT_CONTINUE  Function  OPTIONAL\r
   )\r
 {\r
-  UINT64                       *MailboxLocation;\r
-  DEBUG_AGENT_MAILBOX          *Mailbox;\r
-  BOOLEAN                      InterruptStatus;\r
-  VOID                         *HobList;\r
-  IA32_DESCRIPTOR              IdtDescriptor;\r
-  IA32_DESCRIPTOR              *Ia32Idtr;\r
-  IA32_IDT_ENTRY               *Ia32IdtEntry;\r
-  BOOLEAN                      PeriodicMode;\r
-  UINTN                        TimerCycle;\r
+  UINT64               *MailboxLocation;\r
+  DEBUG_AGENT_MAILBOX  *Mailbox;\r
+  BOOLEAN              InterruptStatus;\r
+  VOID                 *HobList;\r
+  IA32_DESCRIPTOR      IdtDescriptor;\r
+  IA32_DESCRIPTOR      *Ia32Idtr;\r
+  IA32_IDT_ENTRY       *Ia32IdtEntry;\r
+  BOOLEAN              PeriodicMode;\r
+  UINTN                TimerCycle;\r
 \r
   if (InitFlag == DEBUG_AGENT_INIT_DXE_AP) {\r
     //\r
@@ -369,14 +371,15 @@ InitializeDebugAgent (
     InitializeLocalApicSoftwareEnable (TRUE);\r
     GetApicTimerState (NULL, &PeriodicMode, NULL);\r
     TimerCycle = GetApicTimerInitCount ();\r
-    if (!PeriodicMode || TimerCycle == 0) {\r
+    if (!PeriodicMode || (TimerCycle == 0)) {\r
       InitializeDebugTimer (NULL, FALSE);\r
     }\r
+\r
     //\r
     // Invoked by AP, enable interrupt to let AP could receive IPI from other processors\r
     //\r
     EnableInterrupts ();\r
-    return ;\r
+    return;\r
   }\r
 \r
   //\r
@@ -396,149 +399,151 @@ InitializeDebugAgent (
   MailboxLocation = NULL;\r
 \r
   switch (InitFlag) {\r
+    case DEBUG_AGENT_INIT_DXE_LOAD:\r
+      //\r
+      // Check if Debug Agent has been initialized before\r
+      //\r
+      if (IsDebugAgentInitialzed ()) {\r
+        DEBUG ((DEBUG_INFO, "Debug Agent: The former agent will be overwritten by the new one!\n"));\r
+      }\r
 \r
-  case DEBUG_AGENT_INIT_DXE_LOAD:\r
-    //\r
-    // Check if Debug Agent has been initialized before\r
-    //\r
-    if (IsDebugAgentInitialzed ()) {\r
-      DEBUG ((DEBUG_INFO, "Debug Agent: The former agent will be overwritten by the new one!\n"));\r
-    }\r
+      mMultiProcessorDebugSupport = TRUE;\r
+      //\r
+      // Save original IDT table\r
+      //\r
+      AsmReadIdtr (&IdtDescriptor);\r
+      mSaveIdtTableSize = IdtDescriptor.Limit + 1;\r
+      mSavedIdtTable    = AllocateCopyPool (mSaveIdtTableSize, (VOID *)IdtDescriptor.Base);\r
+      //\r
+      // Check if Debug Agent initialized in DXE phase\r
+      //\r
+      Mailbox = GetMailboxFromConfigurationTable ();\r
+      if (Mailbox == NULL) {\r
+        //\r
+        // Try to get mailbox from GUIDed HOB build in PEI\r
+        //\r
+        HobList = GetHobList ();\r
+        Mailbox = GetMailboxFromHob (HobList);\r
+      }\r
 \r
-    mMultiProcessorDebugSupport = TRUE;\r
-    //\r
-    // Save original IDT table\r
-    //\r
-    AsmReadIdtr (&IdtDescriptor);\r
-    mSaveIdtTableSize = IdtDescriptor.Limit + 1;\r
-    mSavedIdtTable    = AllocateCopyPool (mSaveIdtTableSize, (VOID *) IdtDescriptor.Base);\r
-    //\r
-    // Check if Debug Agent initialized in DXE phase\r
-    //\r
-    Mailbox = GetMailboxFromConfigurationTable ();\r
-    if (Mailbox == NULL) {\r
+      //\r
+      // Set up Debug Agent Environment and try to connect HOST if required\r
+      //\r
+      SetupDebugAgentEnvironment (Mailbox);\r
+      //\r
+      // For DEBUG_AGENT_INIT_S3, needn't to install configuration table and EFI Serial IO protocol\r
+      // For DEBUG_AGENT_INIT_DXE_CORE, InternalConstructorWorker() will invoked in Constructor()\r
+      //\r
+      InternalConstructorWorker ();\r
+      //\r
+      // Enable Debug Timer interrupt\r
+      //\r
+      SaveAndSetDebugTimerInterrupt (TRUE);\r
+      //\r
+      // Enable interrupt to receive Debug Timer interrupt\r
+      //\r
+      EnableInterrupts ();\r
+\r
+      mDebugAgentInitialized = TRUE;\r
+      FindAndReportModuleImageInfo (SIZE_4KB);\r
+\r
+      *(EFI_STATUS *)Context = EFI_SUCCESS;\r
+\r
+      break;\r
+\r
+    case DEBUG_AGENT_INIT_DXE_UNLOAD:\r
+      if (mDebugAgentInitialized) {\r
+        if (IsHostAttached ()) {\r
+          *(EFI_STATUS *)Context = EFI_ACCESS_DENIED;\r
+          //\r
+          // Enable Debug Timer interrupt again\r
+          //\r
+          SaveAndSetDebugTimerInterrupt (TRUE);\r
+        } else {\r
+          //\r
+          // Restore original IDT table\r
+          //\r
+          AsmReadIdtr (&IdtDescriptor);\r
+          IdtDescriptor.Limit = (UINT16)(mSaveIdtTableSize - 1);\r
+          CopyMem ((VOID *)IdtDescriptor.Base, mSavedIdtTable, mSaveIdtTableSize);\r
+          AsmWriteIdtr (&IdtDescriptor);\r
+          FreePool (mSavedIdtTable);\r
+          mDebugAgentInitialized = FALSE;\r
+          *(EFI_STATUS *)Context = EFI_SUCCESS;\r
+        }\r
+      } else {\r
+        *(EFI_STATUS *)Context = EFI_NOT_STARTED;\r
+      }\r
+\r
+      //\r
+      // Restore interrupt state.\r
+      //\r
+      SetInterruptState (InterruptStatus);\r
+      break;\r
+\r
+    case DEBUG_AGENT_INIT_DXE_CORE:\r
+      mDxeCoreFlag                = TRUE;\r
+      mMultiProcessorDebugSupport = TRUE;\r
       //\r
       // Try to get mailbox from GUIDed HOB build in PEI\r
       //\r
-      HobList = GetHobList ();\r
+      HobList = Context;\r
       Mailbox = GetMailboxFromHob (HobList);\r
-    }\r
-    //\r
-    // Set up Debug Agent Environment and try to connect HOST if required\r
-    //\r
-    SetupDebugAgentEnvironment (Mailbox);\r
-    //\r
-    // For DEBUG_AGENT_INIT_S3, needn't to install configuration table and EFI Serial IO protocol\r
-    // For DEBUG_AGENT_INIT_DXE_CORE, InternalConstructorWorker() will invoked in Constructor()\r
-    //\r
-    InternalConstructorWorker ();\r
-    //\r
-    // Enable Debug Timer interrupt\r
-    //\r
-    SaveAndSetDebugTimerInterrupt (TRUE);\r
-    //\r
-    // Enable interrupt to receive Debug Timer interrupt\r
-    //\r
-    EnableInterrupts ();\r
+      //\r
+      // Set up Debug Agent Environment and try to connect HOST if required\r
+      //\r
+      SetupDebugAgentEnvironment (Mailbox);\r
+      //\r
+      // Enable Debug Timer interrupt\r
+      //\r
+      SaveAndSetDebugTimerInterrupt (TRUE);\r
+      //\r
+      // Enable interrupt to receive Debug Timer interrupt\r
+      //\r
+      EnableInterrupts ();\r
 \r
-    mDebugAgentInitialized = TRUE;\r
-    FindAndReportModuleImageInfo (SIZE_4KB);\r
+      break;\r
 \r
-    *(EFI_STATUS *)Context = EFI_SUCCESS;\r
+    case DEBUG_AGENT_INIT_S3:\r
 \r
-    break;\r
+      if (Context != NULL) {\r
+        Ia32Idtr        =  (IA32_DESCRIPTOR *)Context;\r
+        Ia32IdtEntry    = (IA32_IDT_ENTRY *)(Ia32Idtr->Base);\r
+        MailboxLocation = (UINT64 *)((UINTN)Ia32IdtEntry[DEBUG_MAILBOX_VECTOR].Bits.OffsetLow +\r
+                                     ((UINTN)Ia32IdtEntry[DEBUG_MAILBOX_VECTOR].Bits.OffsetHigh << 16));\r
+        Mailbox = (DEBUG_AGENT_MAILBOX *)(UINTN)(*MailboxLocation);\r
+        VerifyMailboxChecksum (Mailbox);\r
+      }\r
 \r
-  case DEBUG_AGENT_INIT_DXE_UNLOAD:\r
-    if (mDebugAgentInitialized) {\r
-      if (IsHostAttached ()) {\r
-        *(EFI_STATUS *)Context = EFI_ACCESS_DENIED;\r
-        //\r
-        // Enable Debug Timer interrupt again\r
-        //\r
-        SaveAndSetDebugTimerInterrupt (TRUE);\r
-      } else {\r
+      //\r
+      // Save Mailbox pointer in global variable\r
+      //\r
+      mMailboxPointer = Mailbox;\r
+      //\r
+      // Set up Debug Agent Environment and try to connect HOST if required\r
+      //\r
+      SetupDebugAgentEnvironment (Mailbox);\r
+      //\r
+      // Disable interrupt\r
+      //\r
+      DisableInterrupts ();\r
+      FindAndReportModuleImageInfo (SIZE_4KB);\r
+      if (GetDebugFlag (DEBUG_AGENT_FLAG_BREAK_BOOT_SCRIPT) == 1) {\r
         //\r
-        // Restore original IDT table\r
+        // If Boot Script entry break is set, code will be break at here.\r
         //\r
-        AsmReadIdtr (&IdtDescriptor);\r
-        IdtDescriptor.Limit = (UINT16) (mSaveIdtTableSize - 1);\r
-        CopyMem ((VOID *) IdtDescriptor.Base, mSavedIdtTable, mSaveIdtTableSize);\r
-        AsmWriteIdtr (&IdtDescriptor);\r
-        FreePool (mSavedIdtTable);\r
-        mDebugAgentInitialized = FALSE;\r
-        *(EFI_STATUS *)Context = EFI_SUCCESS;\r
+        CpuBreakpoint ();\r
       }\r
-    } else {\r
-      *(EFI_STATUS *)Context = EFI_NOT_STARTED;\r
-    }\r
 \r
-    //\r
-    // Restore interrupt state.\r
-    //\r
-    SetInterruptState (InterruptStatus);\r
-    break;\r
+      break;\r
 \r
-  case DEBUG_AGENT_INIT_DXE_CORE:\r
-    mDxeCoreFlag                = TRUE;\r
-    mMultiProcessorDebugSupport = TRUE;\r
-    //\r
-    // Try to get mailbox from GUIDed HOB build in PEI\r
-    //\r
-    HobList = Context;\r
-    Mailbox = GetMailboxFromHob (HobList);\r
-    //\r
-    // Set up Debug Agent Environment and try to connect HOST if required\r
-    //\r
-    SetupDebugAgentEnvironment (Mailbox);\r
-    //\r
-    // Enable Debug Timer interrupt\r
-    //\r
-    SaveAndSetDebugTimerInterrupt (TRUE);\r
-    //\r
-    // Enable interrupt to receive Debug Timer interrupt\r
-    //\r
-    EnableInterrupts ();\r
-\r
-    break;\r
-\r
-  case DEBUG_AGENT_INIT_S3:\r
-\r
-    if (Context != NULL) {\r
-      Ia32Idtr =  (IA32_DESCRIPTOR *) Context;\r
-      Ia32IdtEntry = (IA32_IDT_ENTRY *)(Ia32Idtr->Base);\r
-      MailboxLocation = (UINT64 *) ((UINTN) Ia32IdtEntry[DEBUG_MAILBOX_VECTOR].Bits.OffsetLow +\r
-                                   ((UINTN) Ia32IdtEntry[DEBUG_MAILBOX_VECTOR].Bits.OffsetHigh << 16));\r
-      Mailbox = (DEBUG_AGENT_MAILBOX *)(UINTN)(*MailboxLocation);\r
-      VerifyMailboxChecksum (Mailbox);\r
-    }\r
-    //\r
-    // Save Mailbox pointer in global variable\r
-    //\r
-    mMailboxPointer = Mailbox;\r
-    //\r
-    // Set up Debug Agent Environment and try to connect HOST if required\r
-    //\r
-    SetupDebugAgentEnvironment (Mailbox);\r
-    //\r
-    // Disable interrupt\r
-    //\r
-    DisableInterrupts ();\r
-    FindAndReportModuleImageInfo (SIZE_4KB);\r
-    if (GetDebugFlag (DEBUG_AGENT_FLAG_BREAK_BOOT_SCRIPT) == 1) {\r
+    default:\r
       //\r
-      // If Boot Script entry break is set, code will be break at here.\r
+      // Only DEBUG_AGENT_INIT_PREMEM_SEC and DEBUG_AGENT_INIT_POSTMEM_SEC are allowed for this\r
+      // Debug Agent library instance.\r
       //\r
-      CpuBreakpoint ();\r
-    }\r
-    break;\r
-\r
-  default:\r
-    //\r
-    // Only DEBUG_AGENT_INIT_PREMEM_SEC and DEBUG_AGENT_INIT_POSTMEM_SEC are allowed for this\r
-    // Debug Agent library instance.\r
-    //\r
-    DEBUG ((DEBUG_ERROR, "Debug Agent: The InitFlag value is not allowed!\n"));\r
-    CpuDeadLoop ();\r
-    break;\r
+      DEBUG ((DEBUG_ERROR, "Debug Agent: The InitFlag value is not allowed!\n"));\r
+      CpuDeadLoop ();\r
+      break;\r
   }\r
 }\r