summaryrefslogtreecommitdiffstats
path: root/src/core/core_cpu.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* yuzu: Remove CPU Jit setting from the UIfearlessTobi2019-07-041-2/+2
| | | | A normal user shouldn't change this, as it will slow down the emulation and can lead to bugs or crashes. The renaming is done in order to prevent users from leaving this on without a way to turn it off from the UI.
* kernel/svc: Deglobalize the supervisor call handlersLioncash2019-04-081-3/+3
| | | | | | | | | | | Adjusts the interface of the wrappers to take a system reference, which allows accessing a system instance without using the global accessors. This also allows getting rid of all global accessors within the supervisor call handling code. While this does make the wrappers themselves slightly more noisy, this will be further cleaned up in a follow-up. This eliminates the global system accessors in the current code while preserving the existing interface.
* general: Use deducation guides for std::lock_guard and std::unique_lockLioncash2019-04-011-3/+3
| | | | | | | Since C++17, the introduction of deduction guides for locking facilities means that we no longer need to hardcode the mutex type into the locks themselves, making it easier to switch mutex types, should it ever be necessary in the future.
* kernel/scheduler: Pass in system instance in constructorLioncash2019-03-041-4/+5
| | | | | | | | Avoids directly relying on the global system instance and instead makes an arbitrary system instance an explicit dependency on construction. This also allows removing dependencies on some global accessor functions as well.
* core_timing: Convert core timing into a classLioncash2019-02-161-7/+8
| | | | | | | | | | | Gets rid of the largest set of mutable global state within the core. This also paves a way for eliminating usages of GetInstance() on the System class as a follow-up. Note that no behavioral changes have been made, and this simply extracts the functionality into a class. This also has the benefit of making dependencies on the core timing functionality explicit within the relevant interfaces.
* core_timing: Rename CoreTiming namespace to Core::TimingLioncash2019-02-121-3/+3
| | | | | | Places all of the timing-related functionality under the existing Core namespace to keep things consistent, rather than having the timing utilities sitting in its own completely separate namespace.
* core_cpu: Make Cpu scheduler instances unique_ptrs instead of shared_ptrsLioncash2018-10-151-1/+1
|
* core: Make the exclusive monitor a unique_ptr instead of a shared_ptrLioncash2018-10-151-4/+3
| | | | | | Like the barrier, this is owned entirely by the System and will always outlive the encompassing state, so shared ownership semantics aren't necessary here.
* core: Make CPUBarrier a unique_ptr instead of a shared_ptrLioncash2018-10-151-5/+4
| | | | | | This will always outlive the Cpu instances, since it's destroyed after we destroy the Cpu instances on shutdown, so there's no need for shared ownership semantics here.
* core_cpu: Make arm_interface instances a std::unique_ptrLioncash2018-09-251-3/+3
| | | | | | This is only exposed by reference, so we can just make it a unique pointer to get rid of the need to also use reference counting for the pointer.
* kernel/scheduler: Take ARM_Interface instance by reference in the constructorLioncash2018-09-251-1/+1
| | | | | It doesn't make sense to allow a scheduler to be constructed around a null pointer.
* core/core_cpu: Replace exclusive monitor include with forward declarationLioncash2018-09-181-0/+3
| | | | | We don't need to include this as a dependency within the header. A regular forward declaration will suffice here.
* Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi2018-09-151-2/+2
|
* Merge pull request #1043 from Subv/timingbunnei2018-08-131-0/+1
|\ | | | | Use an approximated amortized amount of ticks when advancing timing.
| * CPU/Timing: Use an approximated amortized amount of ticks when advancing timing.Subv2018-08-131-0/+1
| | | | | | | | | | | | | | | | We divide the number of ticks to add by the number of cores (4) to obtain a more or less rough estimate of the actual number of ticks added. This assumes that all 4 cores are doing similar work. Previously we were adding ~4 times the number of ticks, thus making the games think that time was going way too fast. This lets us bypass certain hangs in some games like Breath of the Wild. We should modify our CoreTiming to support multiple cores (both running in a single thread, and in multiple host threads).
* | CPU/HLE: Lock the HLE mutex before performing a reschedule.Subv2018-08-131-0/+3
|/ | | | Another thread might be in the middle of an SVC, thus altering the state of the schedulers.
* kernel: Move object class to its own source filesLioncash2018-08-021-1/+0
| | | | | | General moving to keep kernel object types separate from the direct kernel code. Also essentially a preliminary cleanup before eliminating global kernel state in the kernel code.
* Implement exclusive monitorMerryMage2018-07-221-3/+16
|
* Rename logging macro back to LOG_*James Rowe2018-07-031-2/+2
|
* core: Add a configuration setting for use_multi_core.bunnei2018-05-111-3/+8
|
* core: Support session close with multicore.bunnei2018-05-111-1/+28
|
* core: Implement multicore support.bunnei2018-05-111-1/+1
|
* core: Create a thread for each CPU core, keep in lock-step with a barrier.bunnei2018-05-111-5/+20
|
* core: Move common CPU core things to its own class.bunnei2018-05-111-0/+72