Fixed as per PR feedback.

This commit is contained in:
Jarek Syrylak 2018-08-16 16:24:16 +01:00
parent bd658a8801
commit a6ecb3c913
3 changed files with 38 additions and 37 deletions

View file

@ -7,7 +7,7 @@
#include "common/swap.h"
#include "core/arm/skyeye_common/armstate.h"
#include "core/arm/skyeye_common/vfp/vfp.h"
#include "core/gdbstub/gdbstub.h"
#include "core/core.h"
#include "core/memory.h"
ARMul_State::ARMul_State(PrivilegeMode initial_mode) {
@ -595,3 +595,18 @@ void ARMul_State::WriteCP15Register(u32 value, u32 crn, u32 opcode_1, u32 crm, u
CP15[CP15_THREAD_UPRW] = value;
}
}
void ARMul_State::ServeBreak() {
if (GDBStub::IsServerEnabled()) {
if (last_bkpt_hit) {
Reg[15] = last_bkpt.address;
}
Kernel::Thread* thread = Kernel::GetCurrentThread();
Core::CPU().SaveContext(thread->context);
if (last_bkpt_hit || GDBStub::GetCpuStepFlag()) {
last_bkpt_hit = false;
GDBStub::Break();
GDBStub::SendTrap(thread, 5);
}
}
}

View file

@ -21,7 +21,6 @@
#include <unordered_map>
#include "common/common_types.h"
#include "core/arm/skyeye_common/arm_regformat.h"
#include "core/core.h"
#include "core/gdbstub/gdbstub.h"
// Signal levels
@ -196,20 +195,7 @@ public:
last_bkpt_hit = true;
}
void ServeBreak() {
if (GDBStub::IsServerEnabled()) {
if (last_bkpt_hit) {
Reg[15] = last_bkpt.address;
}
Kernel::Thread* thread = Kernel::GetCurrentThread();
Core::CPU().SaveContext(thread->context);
if (last_bkpt_hit || GDBStub::GetCpuStepFlag()) {
last_bkpt_hit = false;
GDBStub::Break();
GDBStub::SendTrap(thread, 5);
}
}
}
void ServeBreak();
std::array<u32, 16> Reg{}; // The current register file
std::array<u32, 2> Reg_usr{};