Commit Graph
50 Commits
Author SHA1 Message Date
Admiral H. Curtiss be8d0b76ca PowerPC: Remove PC macro. 2023-01-27 15:22:41 +01:00
Admiral H. Curtiss 5624dd6d39 VideoCommon/Fifo: Refactor to class, move to Core::System. 2022-12-10 17:16:19 +01:00
Admiral H. Curtiss 1c63349984 AudioCommon: Pass Core::System to AudioCommon functions. 2022-11-06 02:13:58 +01:00
aldelaro5 4b131bf1ce GDB Stub: do not send a packet when we just connected 2022-01-02 04:35:55 -05:00
aldelaro5 1b92f81379 GDBStub: Refactor the whole code 2021-10-21 08:26:50 -04:00
aldelaro5 94a0f416eb GDBStub: remove the cmake option and the ifdefs 2021-10-21 08:26:42 -04:00
aldelaro5 b8395280d3 GDBStub: Correctly inform the CPU thread if we are stepping 2021-10-21 08:26:28 -04:00
aldelaro5 994847f09c GDBStub: move the stalling logic to CPU::Run 2021-10-21 08:26:16 -04:00
Pierre Bourdon e149ad4f0a treewide: convert GPLv2+ license info to SPDX tags
SPDX standardizes how source code conveys its copyright and licensing
information. See https://spdx.github.io/spdx-spec/1-rationale/ . SPDX
tags are adopted in many large projects, including things like the Linux
kernel.
2021-07-05 04:35:56 +02:00
JosJuice 9db0ebd4b6 PowerPC: Set host CPU rounding mode on init and savestate
Not doing this can cause desyncs when TASing. (I don't know
how common such desyncs would be, though. For games that
don't change rounding modes, they shouldn't be a problem.)
2021-06-10 20:12:15 +02:00
Silent 23f335ba91 Core/CPU: Make use of type deduction for scoped locks 2019-08-18 17:39:27 +02:00
Silent 2bc9e09456 Core/CPU: Do not yield to UI from CPU methods
Core::RunAsCPUThread may be called from Qt signals, and if code yields to UI there
then it results in infinite recursion
2019-08-18 17:39:26 +02:00
Stenzek df45e714a3 Core: Support asynchronously executing functions on the CPU thread
The CPU thread will be interrupted to execute the callback, and then
restored to its old state after execution completes.
2019-07-24 04:08:19 +10:00
Léo Lam 7c46497f04 Fix a race condition when shutting down audio stream
The main EmuThread (in Core) is responsible for both initialising the
audio stream and shutting it down properly.

When the core is shutting down (when state is State::PowerDown), it is
possible that the CPU or CPU-GPU thread and the UI thread will both
try to stop the audio stream at the same time, which is an issue
because some audio backends such as cubeb are not thread-safe.

This commit prevents the race from ever happening in the first place
by removing the call to AudioCommon::SetSoundStreamRunning from
CPU::RunAdjacentSystems, which is actually completely unnecessary when
shutting down because Core::EmuThread is going to stop the stream and
perform more cleanup anyway.

Should fix https://bugs.dolphin-emu.org/issues/11722
2019-05-11 16:36:42 +02:00
Techjar ff972e3673 Reformat repo to clang-format 7.0 rules 2019-05-06 18:48:04 +00:00
Lioncash 6f473b96d0 PowerPC: Convert CPUCore enum into an enum class
Makes the enum values strongly-typed and prevents the identifiers from
polluting the PowerPC namespace. This also cleans up the parameters of
some functions where we were accepting an ambiguous int type and
expecting the correct values to be passed in.

Now those parameters accept a PowerPC::CPUCore type only, making it
immediately obvious which values should be passed in. It also turns out
we were storing these core types into other structures as plain ints,
which have also been corrected.

As this type is used directly with the configuration code, we need to
provide our own overloaded insertion (<<) and extraction (>>) operators
in order to make it compatible with it. These are fairly trivial to
implement, so there's no issue here.

A minor adjustment to TryParse() was required, as our generic function
was doing the following:

N tmp = 0;

which is problematic, as custom types may not be able to have that
assignment performed (e.g. strongly-typed enums), so we change this to:

N tmp;

which is sufficient, as the value is attempted to be initialized
immediately under that statement.
2018-06-15 10:27:59 -04:00
Michael M d6985fc3e8 AudioCommon: rename ClearAudioBuffer(mute) to SetSoundStreamRunning(running) 2017-10-21 16:28:04 -07:00
Lioncash dd4203bec8 Core: Remove unnecessary includes
Also moves a cpp file's related header file to the top of the inclusions if it isn't already there.
2017-06-15 18:52:22 -04:00
degasus 78b36921d2 Jit64: Use a temporary register for memory references. Part 1. 2017-04-12 20:53:17 +02:00
Lioncash 8d98ac6509 CPU: Convert state enum to an enum class
Gets enum constants out of the immediate namespace. Also makes it
strongly typed like the other state enums.
2017-03-28 11:48:28 -04:00
Lioncash f7b9db9846 PowerPC: Convert CoreMode enum into an enum class
Prevents constants from polluting the namespace.
2017-02-04 19:34:56 -05:00
Jules Blok 05a3f927ee CPU: Fix deadlocks by periodically yielding to the UI message pump. 2016-11-11 13:37:03 +01:00
aldelaro5 f0aa9b3751 Reorganise a ton of logs level
Most of this commits changes performance decreasing logs from info to debug and also cleans up innacurate levels.
2016-10-01 15:50:28 -04:00
Scott Mansell 65c1df34f4 Merge pull request #4198 from aldelaro5/memory-breakpoint-fix
Fix the memChecks breaking a second time after hitting one and unpausing
2016-09-12 14:51:47 +12:00
aldelaro5 f689b1e6b5 Switch the CPU state to CPU_STEPPING before single stepping after unpausing
This fix a double break bug when hitting a memcheck and hitting play on the same instruction it broke to earlier.  The state is put back to CPU_RUNNING after.
2016-09-11 22:46:12 -04:00
aldelaro5 09df343247 Move Memchecks support out of debug only builds
It wouldn't impact performance until at least one memcheck is enabled.  Because of this, it can be used in release builds without much impact, the only thing that woudl change is the use of HasAny method instead of preprocessor conditionals.  Since the perforamnce decrease comes right when the first memcheck is added and restored when the last is removed, it basically is all beneficial and works the same way.
2016-09-09 15:05:54 -04:00
Pierre Bourdon 3570c7f03a Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
EmptyChaos c1922783f8 Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer)
Fix Frame Advance and FifoPlayer pause/unpause/stop.

CPU::EnableStepping is not atomic but is called from multiple threads
which races and leaves the system in a random state; also instruction
stepping was unstable, m_StepEvent had an almost random value because
of the dual purpose it served which could cause races where CPU::Run
would SingleStep when it was supposed to be sleeping.

FifoPlayer never FinishStateMove()d which was causing it to deadlock.
Rather than partially reimplementing CPU::Run, just use CPUCoreBase
and then call CPU::Run(). More DRY and less likely to have weird bugs
specific to the player (i.e the previous freezing on pause/stop).

Refactor PowerPC::state into CPU since it manages the state of the
CPU Thread which is controlled by CPU, not PowerPC. This simplifies
the architecture somewhat and eliminates races that can be caused by
calling PowerPC state functions directly instead of using CPU's
(because they bypassed the EnableStepping lock).
2016-05-13 09:23:44 +10:00
Lioncash f2038b9e90 HW: Remove unnecessary header inclusions 2016-01-13 02:47:32 -05:00
degasus 5f244abf28 Fifo: Create a "Fifo" namespace. 2016-01-12 23:28:26 +01:00
degasus c3481a576b VideoBackend: Remove simple wrapper functions. 2016-01-12 23:28:26 +01:00
comex e602eac4f9 Synchronize DVDInterface::ChangeDisc with the CPU thread properly.
This addresses a bit of thread unsafety mentioned in a comment, and
fixes a 'ScheduleEvent_Threadsafe from main thread' message.

To make this work nicely, make PauseAndLock call DeclareAsCPUThread -
i.e. while you have the CPU thread locked, you can consider yourself the
CPU thread.
2015-11-03 12:42:05 +01:00
Lioncash ef1cc2cec4 CPU: Convert CCPU into a namespace
There's not much point to a class with only static member functions.
2015-10-04 15:15:10 -04:00
Tillmann Karras 30ebb2459e Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
Tillmann Karras cefcb0ace9 Update license headers to GPLv2+ 2015-05-25 13:22:31 +02:00
joewestcott 72956d59c8 Reverts pull request #2362, fixes issue 8542. 2015-05-06 05:36:37 +01:00
Jonathan Dieter 4112794d4a Avoid deadlock when adding Wiimotes
Signed-off-by: Jonathan Dieter <[email protected]>
2015-05-03 18:47:15 +03:00
comex 2264e7b087 Use a fake exception to exit early in case of memory breakpoints.
Change TMemCheck::Action to return whether to break rather than calling
PPCDebugInterface::BreakNow, as this simplified the implementation; then
remove said method, as that was its only caller.  One "interface" method
down, many to go...
2015-04-24 22:37:54 -04:00
Stevoisiak 93b16a4a2d Formatting/Whitespace Cleanup
Various fixes to formatting and whitespace
2015-02-25 10:48:21 -05:00
Benjamin Przybocki 4f324ad742 Clean Up 2015-01-24 17:10:21 -06:00
skidau b331ec96a3 Made the "continue", "stepover" and "stepout" functions work when the PC is at a breakpoint 2014-10-26 14:56:02 +11:00
Rohit Nirmal fbc64984ca Include CommonTypes.h instead of Common.h. 2014-09-08 15:39:58 -04:00
Lioncash d18d3e1f3e Common: Get rid of StdConditionVariable, StdMutex, and StdThread.
All of the compilers we support have support for these now.
2014-08-16 23:33:19 -04:00
Pierre Bourdon b0b70381f7 Revert "Don't add segfault handler in interpreter mode" 2014-07-07 05:30:06 +02:00
Tillmann Karras 20a16beabd enum CPUState: rename CPU_* to STATE_* 2014-07-05 11:01:49 +02:00
Pierre Bourdon 6bdcbad3e4 Common: Move the Event class to a separate file, and add tests for it. Fix includes everywhere to match this. 2014-04-14 10:54:07 +02:00
magumagu 3afa17f752 Move audio handling out of DSP emulation.
This is good for a couple of reasons: one, it gets rid of duplicated code,
and two, DSP emulation shouldn't need to interact with audio in the first
place.
2014-03-29 11:19:32 -07:00
Tillmann Karras d802d39281 clang-modernize -use-nullptr
and s/\bNULL\b/nullptr/g for *.cpp/h/mm files not compiled on my machine
2014-03-09 21:14:26 +01:00
Lioncash 2afe215271 Convert all includes to relative paths. 2014-02-18 02:19:10 -05:00
Jasper St. Pierre 34692ab826 Remove unnecessary Src/ folders 2013-12-31 14:03:19 -05:00