aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/kernel.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* core: arm: Implement InvalidateCacheRange for CPU cache invalidation.bunnei2020-11-291-5/+10
|
* common: fiber: Use boost::context instead of native fibers on Windows.bunnei2020-11-291-1/+1
|
* hle: kernel: multicore: Replace n-JITs impl. with 4 JITs.bunnei2020-11-291-6/+17
|
* hle/kernel: Remove unused registered_core_threads to fix data racesReinUsesLisp2020-10-271-5/+0
| | | | | This member was only used on asserts and it triggered data races. Remove it to fix them.
* Revert "core: Fix clang build"bunnei2020-10-201-1/+1
|
* kernel: Fix build with recent compiler flag changesLioncash2020-10-201-4/+8
| | | | | This slipped through the cracks due to another change being merged before the compiler flag changes.
* Merge pull request #4796 from lioncash/clangLC2020-10-201-1/+1
|\ | | | | core: Fix clang build
| * core: Fix clang buildLioncash2020-10-171-1/+1
| | | | | | | | | | | | | | Recent changes to the build system that made more warnings be flagged as errors caused building via clang to break. Fixes #4795
* | kernel: Implement host thread register methods without lockingReinUsesLisp2020-10-131-28/+38
|/ | | | | | | | | | | | | Locks on GetCurrentHostThreadID were causing performance issues according to Visual Studio's profiler. It was consuming twice the time as arm_interface.Run(). The cost was not in the function itself but in the lockinig it required. Reimplement these functions using atomics and static storage instead of an unordered_map. This is a side effect to avoid locking and using linked lists for reads. Replace unordered_map with a linear search.
* hle/kernel: Fix data race in GetCurrentHostThreadIDReinUsesLisp2020-08-261-1/+2
| | | | | | | | As reported by tsan, host_thread_ids could be read while any of the RegisterHostThread variants were called. To fix this, lock the register mutex when yuzu is running in multicore mode and GetCurrentHostThreadID is called.
* core_timing: Make use of uintptr_t to represent user_dataLioncash2020-07-271-1/+1
| | | | Makes the interface future-proofed for supporting other platforms in the event we ever support platforms with differing pointer sizes. This way, we have a type in place that is always guaranteed to be able to represent a pointer exactly.
* Merge pull request #4348 from lioncash/nanobunnei2020-07-181-3/+5
|\ | | | | core_timing: Make usage of nanoseconds more consistent in the interface
| * core_timing: Make TimedCallback take std::chrono::nanosecondsLioncash2020-07-151-1/+1
| | | | | | | | Enforces our desired time units directly with a concrete type.
| * core_timing: Make use of std::chrono with ScheduleEventLioncash2020-07-151-2/+4
| |
* | cpu_manager: Mark function getters as staticLioncash2020-07-161-5/+6
| | | | | | | | | | All these do are return std::function instances of static functions, so these can be used without an instance of the CPU manager.
* | kernel/handle_table: Remove usages of the global system instanceLioncash2020-07-151-2/+3
|/ | | | | | Removes even more usages of the global system instance, trimming away more dependencies on global variables and making them explicit in the interface.
* Core/Common: Address Feedback.Fernando Sahmkow2020-06-271-9/+5
|
* General: Cleanup legacy code.Fernando Sahmkow2020-06-271-79/+2
|
* Kernel/svcBreak: Implement CacheInvalidation for Singlecore and correct ↵Fernando Sahmkow2020-06-271-1/+11
| | | | svcBreak.
* Scheduler: Correct Reload/UnloadFernando Sahmkow2020-06-271-0/+1
|
* General: Move ARM_Interface into Threads.Fernando Sahmkow2020-06-271-38/+21
|
* Core: Refactor ARM Interface.Fernando Sahmkow2020-06-271-1/+27
|
* SingleCore: Move Host Timing from a sepparate thread to main cpu thread.Fernando Sahmkow2020-06-271-1/+1
|
* General: Fix microprofile on dynarmic/svc, fix wait tree showing which ↵Fernando Sahmkow2020-06-271-0/+15
| | | | threads were running.
* General: Fix Stop functionFernando Sahmkow2020-06-271-0/+15
|
* Kernel: Preempt Single core on redudant yields.Fernando Sahmkow2020-06-271-0/+4
|
* General: Initial Setup for Single Core.Fernando Sahmkow2020-06-271-0/+19
|
* Kernel: Fixes, corrections and asserts to scheduler and different svcs.Fernando Sahmkow2020-06-271-0/+1
|
* General: Recover Prometheus project from harddrive failure Fernando Sahmkow2020-06-271-7/+77
| | | | | | | This commit: Implements CPU Interrupts, Replaces Cycle Timing for Host Timing, Reworks the Kernel's Scheduler, Introduce Idle State and Suspended State, Recreates the bootmanager, Initializes Multicore system.
* kernel: resource_limit: Reserve physical memory.bunnei2020-04-171-1/+6
|
* kernel: Initialize memory layout for new VMM.bunnei2020-04-171-0/+115
|
* CMakeLists: Make -Wreorder a compile-time errorLioncash2020-04-151-1/+1
| | | | | | This can result in silent logic bugs within code, and given the amount of times these kind of warnings are caused, they should be flagged at compile-time so no new code is submitted with them.
* core: Implement separate A32/A64 ARM interfaces.bunnei2020-03-021-0/+4
|
* Kernel: Address Feedback.Fernando Sahmkow2020-02-221-11/+16
|
* Kernel: Implement Time Manager.Fernando Sahmkow2020-02-221-1/+11
|
* Kernel: Rename ThreadCallbackHandleTable and Setup Thread Ids on Kernel.Fernando Sahmkow2020-02-221-12/+76
|
* Kernel: Make global scheduler depend on KernelCoreFernando Sahmkow2020-02-221-3/+11
|
* Kernel: Refactor synchronization to better match REFernando Sahmkow2020-02-111-1/+12
|
* Kernel: Change WaitObject to Synchronization object. In order to better ↵Fernando Sahmkow2020-02-111-2/+2
| | | | reflect RE.
* kernel/physical_core: Remove unused kernel reference member variableLioncash2020-01-301-4/+4
| | | | | | | This isn't used within the class, so it can be removed to simplify the overall interface. While we're in the same area, we can simplify a unique_ptr reset() call.
* System: Address FeedbackFernando Sahmkow2020-01-271-2/+3
|
* ArmInterface: Delegate Exclusive monitor factory to exclusive monitor ↵Fernando Sahmkow2020-01-261-15/+2
| | | | interfasce.
* Core: Refactor CPU Management.Fernando Sahmkow2020-01-251-1/+63
| | | | This commit moves ARM Interface and Scheduler handling into the kernel.
* Kernel: Correct behavior of Address Arbiter threads. (#3165)Fernando Sahmkow2019-12-111-3/+3
| | | | | | | | | | | * Kernel: Correct behavior of Address Arbiter threads. This corrects arbitration threads to behave just like in Horizon OS. They are added into a container and released according to what priority they had when added. Horizon OS does not reorder them if their priority changes. * Kernel: Address Feedback.
* kernel: Remove unnecessary includesLioncash2019-12-071-1/+0
| | | | | | Over the course of the changes to the kernel code, a few includes are no longer necessary, particularly with the change over to std::shared_ptr from Boost's intrusive_ptr.
* core/memory; Migrate over SetCurrentPageTable() to the Memory classLioncash2019-11-261-7/+11
| | | | | | | Now that literally every other API function is converted over to the Memory class, we can just move the file-local page table into the Memory implementation class, finally getting rid of global state within the memory code.
* core_timing: Use better reference tracking for EventType. (#3159)bunnei2019-11-261-6/+7
| | | | | | | * core_timing: Use better reference tracking for EventType. - Moves ownership of the event to the caller, ensuring we don't fire events for destroyed objects. - Removes need for unique names - we won't be using this for save states anyways.
* kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for ↵bunnei2019-11-241-9/+10
| | | | | | | | kernel objects. (#3154) * kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for kernel objects. - See https://github.com/citra-emu/citra/pull/4710 for details.
* Kernel: Optimize condition variable threads management.Fernando Sahmkow2019-11-211-1/+1
|
* Kernel: Correct behavior of Condition Variables to be more similar to real ↵Fernando Sahmkow2019-11-211-0/+3
| | | | | | | | | hardware. This commit ensures cond var threads act exactly as they do in the real console. The original implementation uses an RBTree and the behavior of cond var threads is that at the same priority level they act like a FIFO.