Commit Graph

85 Commits

Author SHA1 Message Date
bad78cfed4 Core, VideoCommon: Fix crash at shutdown due to destructor ordering
Previously, PerformanceTracker registered a callback to be updated on
emulation state changes. PerformanceTrackers live in a global variable
(g_perf_metrics) within libvideocommon. The callback was stored in a
global variable in libcore. This created a race condition at shutdown
between these libraries, when the PerfTracker's destructor tried to
unregister the callback.
Notify the PerfTracker directly from libcore, without callbacks, since
Core.cpp already references g_perf_metrics explicitly. Also rename
Core::CallOnStateChangedCallbacks to NotifyStateChanged to better
reflect what it's doing.
2025-04-28 07:11:53 +03:00
bbf72e79f9 Breakpoints: Fix lag when adding or removing multiple memory breakpoints by only calling DBATUpdated() once. 2025-02-04 00:21:13 -07:00
62d7166e6a GDBStub: Signal Breakpoint Changes To Host 2024-11-15 15:12:11 -08:00
0aa8e0f477 Remove redundant elaborated type specifiers 2024-08-14 10:41:36 +02:00
8235c38df7 Debugger: Small other cleanup
Change misleading names.
Fix function usage: Intepreter and Step Out will not check breakpoints in their own wrong way anymore (e.g. breaking on log-only breakpoints).
2024-07-02 18:29:42 +02:00
9aeeea3762 Debugger: Small Breakpoint cleanup
Reuse more code, change misleading names, remove useless documentation, add useful documentation
2024-07-02 18:29:42 +02:00
cf74c0d683 PPCCache: Avoid Global System Accessor 2024-04-08 19:49:57 -07:00
ad43b03253 HW: Remove calls to GetPointer
Typically when someone uses GetPointer, it's because they want to read
from a range of memory. GetPointer is unsafe to use for this. While it
does check that the passed-in address is valid, it doesn't know the size
of the range that will be accessed, so it can't check that the end
address is valid. The safer alternative GetPointerForRange should be
used instead.

Note that there is still the problem of many callers not checking for
nullptr.

This is part 2 of a series of changes removing the use of GetPointer
throughout the code base. After this, VideoCommon is the one major part
of Dolphin that remains.
2024-03-31 21:58:05 +02:00
62787085e1 Jit: Add feature flag for performance monitor
By making the JIT cache check if the current state of MMCR0 and MMRC1
matches the state they had at the time the JIT block was compiled, we
solve a correctness issue (marked in a comment as a speed hack).

Not known to affect any games.
2023-11-30 22:40:36 +01:00
ca7e05bbc4 Jit: Replace "msrBits" with "featureFlags"
Preparation for the next commit.
2023-11-30 22:40:32 +01:00
get
a5d06fde4b Embrace nullptr over NULL and 0 2023-04-15 16:07:05 -05:00
23843583bf PowerPC: Refactor to class, move to System. 2023-04-09 21:48:37 +02:00
8dabd1a025 PowerPC/MMU: Refactor to class, move to System. 2023-03-28 03:47:51 +02:00
912cd456fb Core: Add System parameter to CPUThreadGuard. 2023-03-08 22:41:42 +01:00
3b364c5c16 HW/CPU: Refactor to class, move to System. 2023-03-08 12:23:37 +01:00
7cecb28bdf DolphinQt: Properly lock CPU before accessing emulated memory
This fixes a problem I was having where using frame advance with the
debugger open would frequently cause panic alerts about invalid addresses
due to the CPU thread changing MSR.DR while the host thread was trying
to access memory.

To aid in tracking down all the places where we weren't properly locking
the CPU, I've created a new type (in Core.h) that you have to pass as a
reference or pointer to functions that require running as the CPU thread.
2023-02-12 11:27:50 +01:00
be2d394b8c GDBStub: Avoid ppcState global. 2023-01-27 15:22:48 +01:00
c13ca271d8 PowerPC: Parametrize CTR macro. 2023-01-27 15:22:43 +01:00
0a343007cb PowerPC: Parametrize LR macro. 2023-01-27 15:22:43 +01:00
0f301829d2 PowerPC: Remove rPS macro. 2023-01-27 15:22:42 +01:00
8fccefa3aa PowerPC: Remove GPR macro. 2023-01-27 15:22:42 +01:00
ba1b624e1b PowerPC: Remove MSR macro. 2023-01-27 15:22:42 +01:00
4b6b8fa1ae PowerPC: Remove FPSCR macro. 2023-01-27 15:22:41 +01:00
be8d0b76ca PowerPC: Remove PC macro. 2023-01-27 15:22:41 +01:00
b207611c33 Merge pull request #11274 from TryTwo/PR_Conditional_BP_Add_Memory
Debugger: Add conditional breakpoints to memory BPs
2022-12-07 19:55:04 +01:00
a17fbe7c65 Expand conditional breakpoints to memory breakpoints 2022-12-04 11:25:33 -07:00
839db591d9 HW/Memmap: Refactor Memory to class, move to Core::System. 2022-12-03 13:27:02 +01:00
c9558ecb4c CoreTiming: Refactor to class. 2022-11-27 03:47:12 +01:00
a36a5c1308 CoreTiming: Pass Core::System to Events. 2022-11-06 17:54:58 +01:00
d2ebbfb91a GDB Stub: Make s_socket_context static 2022-02-13 14:38:59 -08:00
a720596771 GDB Stub: Fix typo mixing ppcState.spr and ppcState.sr
This resulted in an out-of-bounds array access, since sr is only 16 entries long and SPR_IBAT0U evaluates to 528.
2022-02-13 14:38:59 -08:00
1a92699455 Cast to int for enums that are not formattable 2022-01-13 11:11:08 -08:00
04a25818b2 Merge pull request #10330 from aldelaro5/gdb-stub-add-hostinfo
GDB Stub: add support for lldb's qHostInfo
2022-01-03 12:43:57 +01:00
d705a5fe9b GDB Stub: add support for lldb's qHostInfo 2022-01-02 19:58:31 -05:00
4ee20368f8 Merge pull request #10336 from aldelaro5/gdb-stub-fix-first-packet
GDB Stub: do not send a packet when we just connected
2022-01-03 01:40:16 +01:00
cbd1c4969d Merge pull request #10309 from aldelaro5/gdb-stub-fix-watchpoints
Gdb stub: fix watchpoints
2022-01-03 01:33:49 +01:00
27a2df410a Merge pull request #10308 from aldelaro5/gdb-stub-fix-unkown-pointer
GDB Stub: validate the address exists before reading/writting to it
2022-01-03 01:33:21 +01:00
4b131bf1ce GDB Stub: do not send a packet when we just connected 2022-01-02 04:35:55 -05:00
bfa675cb9d GDB Stub: validate the address exists before reading/writting to it 2022-01-01 22:00:13 -05:00
051197b83c GDB Stub: fix thread report requests
We are always reporting thread 1 existing and also fix an issue with a wrong memcmp size
2022-01-01 17:38:25 -05:00
9c784ca8ab GDB Stub: correctly define the breakpoint type values
Read only and Write only were reversed, now they are properly defined.
2022-01-01 17:18:32 -05:00
70b7e16d6c GDB Stub: properly check for wrong breakpoint type
Fix dolphin erroring out on requests to remove access watchpoints.
2022-01-01 17:18:30 -05:00
de91afaff3 Merge pull request #10298 from aldelaro5/gdb-stub-fix-registers
GDB Stub: Fix the id of the registers returned by p and P packets
2021-12-29 21:02:31 -05:00
b369d822b1 GDB Stub: add support for various query packets
These tends to get requested from either pure GDB or Ghidra. They reduce the verbosity of the communications. The QSupported packet is also important to implemnent for future proofing too.
2021-12-28 23:34:33 -05:00
beabd56ff8 GDB Stub: Fix the id of the registers returned by p and P packets
The stub was made with the assumption that the GDB architecture is rs6000:6000, but the closest is actually powerpc:750 which features much more SPR that the gekko supports, but it also has slightly different ID. This commit now assumes the more proper powerpc:750.
2021-12-28 19:27:34 -05:00
2025763420 Treewide: Adjust order of includes 2021-12-10 14:49:57 -08:00
6a4d607e09 GDBStub: Add log when break is sent 2021-10-21 08:26:50 -04:00
7ad586fe2c GDBStub: Make step force pausing even if play was pressed 2021-10-21 08:26:50 -04:00
2f7a3e59e5 GDBStub: upgrade some logs from debug to info 2021-10-21 08:26:50 -04:00
1b92f81379 GDBStub: Refactor the whole code 2021-10-21 08:26:50 -04:00