|
|
@ -12,6 +12,7 @@
|
|
|
|
#include "core/core.h"
|
|
|
|
#include "core/core.h"
|
|
|
|
#include "core/core_cpu.h"
|
|
|
|
#include "core/core_cpu.h"
|
|
|
|
#include "core/core_timing.h"
|
|
|
|
#include "core/core_timing.h"
|
|
|
|
|
|
|
|
#include "core/gdbstub/gdbstub.h"
|
|
|
|
#include "core/hle/kernel/process.h"
|
|
|
|
#include "core/hle/kernel/process.h"
|
|
|
|
#include "core/hle/kernel/svc.h"
|
|
|
|
#include "core/hle/kernel/svc.h"
|
|
|
|
#include "core/memory.h"
|
|
|
|
#include "core/memory.h"
|
|
|
@ -79,6 +80,16 @@ public:
|
|
|
|
case Dynarmic::A64::Exception::SendEventLocal:
|
|
|
|
case Dynarmic::A64::Exception::SendEventLocal:
|
|
|
|
case Dynarmic::A64::Exception::Yield:
|
|
|
|
case Dynarmic::A64::Exception::Yield:
|
|
|
|
return;
|
|
|
|
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:
|
|
|
|
default:
|
|
|
|
ASSERT_MSG(false, "ExceptionRaised(exception = {}, pc = {:X})",
|
|
|
|
ASSERT_MSG(false, "ExceptionRaised(exception = {}, pc = {:X})",
|
|
|
|
static_cast<std::size_t>(exception), pc);
|
|
|
|
static_cast<std::size_t>(exception), pc);
|
|
|
|