From 31dee93e849d79a91f280faf16941806e3cb3c6b Mon Sep 17 00:00:00 2001
From: polaris- <nagatospam@gmail.com>
Date: Wed, 2 Sep 2015 08:56:38 -0400
Subject: Implement gdbstub

---
 src/core/core.cpp | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

(limited to 'src/core/core.cpp')

diff --git a/src/core/core.cpp b/src/core/core.cpp
index dddc16708e..219b03af49 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -13,6 +13,8 @@
 #include "core/hle/kernel/thread.h"
 #include "core/hw/hw.h"
 
+#include "core/gdbstub/gdbstub.h"
+
 namespace Core {
 
 ARM_Interface*     g_app_core = nullptr;  ///< ARM11 application core
@@ -20,6 +22,21 @@ ARM_Interface*     g_sys_core = nullptr;  ///< ARM11 system (OS) core
 
 /// Run the core CPU loop
 void RunLoop(int tight_loop) {
+    if (GDBStub::g_server_enabled) {
+        GDBStub::HandlePacket();
+
+        // If the loop is halted and we want to step, use a tiny (1) number of instructions to execute.
+        // Otherwise get out of the loop function.
+        if (GDBStub::GetCpuHaltFlag()) {
+            if (GDBStub::GetCpuStepFlag()) {
+                GDBStub::SetCpuStepFlag(false);
+                tight_loop = 1;
+            } else {
+                return;
+            }
+        }
+    }
+
     // If we don't have a currently active thread then don't execute instructions,
     // instead advance to the next event and try to yield to the next thread
     if (Kernel::GetCurrentThread() == nullptr) {
-- 
cgit v1.2.3-70-g09d2