arm_dynarmic: Support BKPT instruction
This commit is contained in:
parent
321eb0b6b0
commit
3b4a158230
|
@ -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);
|
||||||
|
|
Reference in New Issue