summaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/common')
-rw-r--r--src/common/CMakeLists.txt2
-rw-r--r--src/common/break_points.cpp90
-rw-r--r--src/common/break_points.h49
-rw-r--r--src/common/misc.cpp2
-rw-r--r--src/common/x64/xbyak_abi.h20
-rw-r--r--src/common/x64/xbyak_util.h6
6 files changed, 12 insertions, 157 deletions
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index d5d4f6f82..939b8a7d3 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -29,8 +29,6 @@ add_library(common STATIC
29 assert.h 29 assert.h
30 bit_field.h 30 bit_field.h
31 bit_set.h 31 bit_set.h
32 break_points.cpp
33 break_points.h
34 cityhash.cpp 32 cityhash.cpp
35 cityhash.h 33 cityhash.h
36 color.h 34 color.h
diff --git a/src/common/break_points.cpp b/src/common/break_points.cpp
deleted file mode 100644
index fa367a4ca..000000000
--- a/src/common/break_points.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
1// Copyright 2013 Dolphin Emulator Project / 2014 Citra Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include <algorithm>
6#include <sstream>
7#include "common/break_points.h"
8
9bool BreakPoints::IsAddressBreakPoint(u32 iAddress) const {
10 auto cond = [&iAddress](const TBreakPoint& bp) { return bp.iAddress == iAddress; };
11 auto it = std::find_if(m_BreakPoints.begin(), m_BreakPoints.end(), cond);
12 return it != m_BreakPoints.end();
13}
14
15bool BreakPoints::IsTempBreakPoint(u32 iAddress) const {
16 auto cond = [&iAddress](const TBreakPoint& bp) {
17 return bp.iAddress == iAddress && bp.bTemporary;
18 };
19 auto it = std::find_if(m_BreakPoints.begin(), m_BreakPoints.end(), cond);
20 return it != m_BreakPoints.end();
21}
22
23BreakPoints::TBreakPointsStr BreakPoints::GetStrings() const {
24 TBreakPointsStr bps;
25 for (auto breakpoint : m_BreakPoints) {
26 if (!breakpoint.bTemporary) {
27 std::stringstream bp;
28 bp << std::hex << breakpoint.iAddress << " " << (breakpoint.bOn ? "n" : "");
29 bps.push_back(bp.str());
30 }
31 }
32
33 return bps;
34}
35
36void BreakPoints::AddFromStrings(const TBreakPointsStr& bps) {
37 for (auto bps_item : bps) {
38 TBreakPoint bp;
39 std::stringstream bpstr;
40 bpstr << std::hex << bps_item;
41 bpstr >> bp.iAddress;
42 bp.bOn = bps_item.find("n") != bps_item.npos;
43 bp.bTemporary = false;
44 Add(bp);
45 }
46}
47
48void BreakPoints::Add(const TBreakPoint& bp) {
49 if (!IsAddressBreakPoint(bp.iAddress)) {
50 m_BreakPoints.push_back(bp);
51 // if (jit)
52 // jit->GetBlockCache()->InvalidateICache(bp.iAddress, 4);
53 }
54}
55
56void BreakPoints::Add(u32 em_address, bool temp) {
57 if (!IsAddressBreakPoint(em_address)) // only add new addresses
58 {
59 TBreakPoint pt; // breakpoint settings
60 pt.bOn = true;
61 pt.bTemporary = temp;
62 pt.iAddress = em_address;
63
64 m_BreakPoints.push_back(pt);
65
66 // if (jit)
67 // jit->GetBlockCache()->InvalidateICache(em_address, 4);
68 }
69}
70
71void BreakPoints::Remove(u32 em_address) {
72 auto cond = [&em_address](const TBreakPoint& bp) { return bp.iAddress == em_address; };
73 auto it = std::find_if(m_BreakPoints.begin(), m_BreakPoints.end(), cond);
74 if (it != m_BreakPoints.end())
75 m_BreakPoints.erase(it);
76}
77
78void BreakPoints::Clear() {
79 // if (jit)
80 //{
81 // std::for_each(m_BreakPoints.begin(), m_BreakPoints.end(),
82 // [](const TBreakPoint& bp)
83 // {
84 // jit->GetBlockCache()->InvalidateICache(bp.iAddress, 4);
85 // }
86 // );
87 //}
88
89 m_BreakPoints.clear();
90}
diff --git a/src/common/break_points.h b/src/common/break_points.h
deleted file mode 100644
index e15b9f842..000000000
--- a/src/common/break_points.h
+++ /dev/null
@@ -1,49 +0,0 @@
1// Copyright 2013 Dolphin Emulator Project / 2014 Citra Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include <string>
8#include <vector>
9#include "common/common_types.h"
10
11class DebugInterface;
12
13struct TBreakPoint {
14 u32 iAddress;
15 bool bOn;
16 bool bTemporary;
17};
18
19// Code breakpoints.
20class BreakPoints {
21public:
22 typedef std::vector<TBreakPoint> TBreakPoints;
23 typedef std::vector<std::string> TBreakPointsStr;
24
25 const TBreakPoints& GetBreakPoints() {
26 return m_BreakPoints;
27 }
28
29 TBreakPointsStr GetStrings() const;
30 void AddFromStrings(const TBreakPointsStr& bps);
31
32 // is address breakpoint
33 bool IsAddressBreakPoint(u32 iAddress) const;
34 bool IsTempBreakPoint(u32 iAddress) const;
35
36 // Add BreakPoint
37 void Add(u32 em_address, bool temp = false);
38 void Add(const TBreakPoint& bp);
39
40 // Remove Breakpoint
41 void Remove(u32 iAddress);
42 void Clear();
43
44 void DeleteByAddress(u32 Address);
45
46private:
47 TBreakPoints m_BreakPoints;
48 u32 m_iBreakOnCount;
49};
diff --git a/src/common/misc.cpp b/src/common/misc.cpp
index 217a87098..3fa8a3bc4 100644
--- a/src/common/misc.cpp
+++ b/src/common/misc.cpp
@@ -4,7 +4,7 @@
4 4
5#include <cstddef> 5#include <cstddef>
6#ifdef _WIN32 6#ifdef _WIN32
7#include <Windows.h> 7#include <windows.h>
8#else 8#else
9#include <cerrno> 9#include <cerrno>
10#include <cstring> 10#include <cstring>
diff --git a/src/common/x64/xbyak_abi.h b/src/common/x64/xbyak_abi.h
index fd3fbdd4b..927da9187 100644
--- a/src/common/x64/xbyak_abi.h
+++ b/src/common/x64/xbyak_abi.h
@@ -9,10 +9,9 @@
9#include "common/assert.h" 9#include "common/assert.h"
10#include "common/bit_set.h" 10#include "common/bit_set.h"
11 11
12namespace Common { 12namespace Common::X64 {
13namespace X64 {
14 13
15int RegToIndex(const Xbyak::Reg& reg) { 14inline int RegToIndex(const Xbyak::Reg& reg) {
16 using Kind = Xbyak::Reg::Kind; 15 using Kind = Xbyak::Reg::Kind;
17 ASSERT_MSG((reg.getKind() & (Kind::REG | Kind::XMM)) != 0, 16 ASSERT_MSG((reg.getKind() & (Kind::REG | Kind::XMM)) != 0,
18 "RegSet only support GPRs and XMM registers."); 17 "RegSet only support GPRs and XMM registers.");
@@ -152,8 +151,8 @@ constexpr size_t ABI_SHADOW_SPACE = 0;
152 151
153#endif 152#endif
154 153
155void ABI_CalculateFrameSize(BitSet32 regs, size_t rsp_alignment, size_t needed_frame_size, 154inline void ABI_CalculateFrameSize(BitSet32 regs, size_t rsp_alignment, size_t needed_frame_size,
156 s32* out_subtraction, s32* out_xmm_offset) { 155 s32* out_subtraction, s32* out_xmm_offset) {
157 int count = (regs & ABI_ALL_GPRS).Count(); 156 int count = (regs & ABI_ALL_GPRS).Count();
158 rsp_alignment -= count * 8; 157 rsp_alignment -= count * 8;
159 size_t subtraction = 0; 158 size_t subtraction = 0;
@@ -174,8 +173,8 @@ void ABI_CalculateFrameSize(BitSet32 regs, size_t rsp_alignment, size_t needed_f
174 *out_xmm_offset = (s32)(subtraction - xmm_base_subtraction); 173 *out_xmm_offset = (s32)(subtraction - xmm_base_subtraction);
175} 174}
176 175
177size_t ABI_PushRegistersAndAdjustStack(Xbyak::CodeGenerator& code, BitSet32 regs, 176inline size_t ABI_PushRegistersAndAdjustStack(Xbyak::CodeGenerator& code, BitSet32 regs,
178 size_t rsp_alignment, size_t needed_frame_size = 0) { 177 size_t rsp_alignment, size_t needed_frame_size = 0) {
179 s32 subtraction, xmm_offset; 178 s32 subtraction, xmm_offset;
180 ABI_CalculateFrameSize(regs, rsp_alignment, needed_frame_size, &subtraction, &xmm_offset); 179 ABI_CalculateFrameSize(regs, rsp_alignment, needed_frame_size, &subtraction, &xmm_offset);
181 180
@@ -195,8 +194,8 @@ size_t ABI_PushRegistersAndAdjustStack(Xbyak::CodeGenerator& code, BitSet32 regs
195 return ABI_SHADOW_SPACE; 194 return ABI_SHADOW_SPACE;
196} 195}
197 196
198void ABI_PopRegistersAndAdjustStack(Xbyak::CodeGenerator& code, BitSet32 regs, size_t rsp_alignment, 197inline void ABI_PopRegistersAndAdjustStack(Xbyak::CodeGenerator& code, BitSet32 regs,
199 size_t needed_frame_size = 0) { 198 size_t rsp_alignment, size_t needed_frame_size = 0) {
200 s32 subtraction, xmm_offset; 199 s32 subtraction, xmm_offset;
201 ABI_CalculateFrameSize(regs, rsp_alignment, needed_frame_size, &subtraction, &xmm_offset); 200 ABI_CalculateFrameSize(regs, rsp_alignment, needed_frame_size, &subtraction, &xmm_offset);
202 201
@@ -217,5 +216,4 @@ void ABI_PopRegistersAndAdjustStack(Xbyak::CodeGenerator& code, BitSet32 regs, s
217 } 216 }
218} 217}
219 218
220} // namespace X64 219} // namespace Common::X64
221} // namespace Common
diff --git a/src/common/x64/xbyak_util.h b/src/common/x64/xbyak_util.h
index ec76e0a47..02323a017 100644
--- a/src/common/x64/xbyak_util.h
+++ b/src/common/x64/xbyak_util.h
@@ -8,8 +8,7 @@
8#include <xbyak.h> 8#include <xbyak.h>
9#include "common/x64/xbyak_abi.h" 9#include "common/x64/xbyak_abi.h"
10 10
11namespace Common { 11namespace Common::X64 {
12namespace X64 {
13 12
14// Constants for use with cmpps/cmpss 13// Constants for use with cmpps/cmpss
15enum { 14enum {
@@ -45,5 +44,4 @@ inline void CallFarFunction(Xbyak::CodeGenerator& code, const T f) {
45 } 44 }
46} 45}
47 46
48} // namespace X64 47} // namespace Common::X64
49} // namespace Common