diff options
| -rw-r--r-- | src/core/arm/dynarmic/arm_dynarmic.cpp | 11 | 
1 files changed, 11 insertions, 0 deletions
| diff --git a/src/core/arm/dynarmic/arm_dynarmic.cpp b/src/core/arm/dynarmic/arm_dynarmic.cpp index 3f072c51f..8b450dc54 100644 --- a/src/core/arm/dynarmic/arm_dynarmic.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic.cpp @@ -12,6 +12,7 @@  #include "core/core.h"  #include "core/core_cpu.h"  #include "core/core_timing.h" +#include "core/gdbstub/gdbstub.h"  #include "core/hle/kernel/process.h"  #include "core/hle/kernel/svc.h"  #include "core/memory.h" @@ -79,6 +80,16 @@ public:          case Dynarmic::A64::Exception::SendEventLocal:          case Dynarmic::A64::Exception::Yield:              return; +        case Dynarmic::A64::Exception::Breakpoint: +            if (GDBStub::IsServerEnabled()) { +                parent.SetPC(pc); +                Kernel::Thread* thread = Kernel::GetCurrentThread(); +                parent.SaveContext(thread->context); +                GDBStub::Break(); +                GDBStub::SendTrap(thread, 5); +                return; +            } +            [[fallthrough]];          default:              ASSERT_MSG(false, "ExceptionRaised(exception = {}, pc = {:X})",                         static_cast<std::size_t>(exception), pc); | 
