aboutsummaryrefslogtreecommitdiff
path: root/src/core/arm/arm_interface.h
AgeCommit message (Collapse)Author
2020-04-17arm_interface: Ensure ThreadContext is zero'd out.bunnei
2020-03-02core: Implement separate A32/A64 ARM interfaces.bunnei
2019-11-26core: Prepare various classes for memory read/write migrationLioncash
Amends a few interfaces to be able to handle the migration over to the new Memory class by passing the class by reference as a function parameter where necessary. Notably, within the filesystem services, this eliminates two ReadBlock() calls by using the helper functions of HLERequestContext to do that for us.
2019-07-11core/arm: Remove obsolete Unicorn memory mappingLioncash
This was initially necessary when AArch64 JIT emulation was in its infancy and all memory-related instructions weren't implemented. Given the JIT now has all of these facilities implemented, we can remove these functions from the CPU interface.
2019-05-25arm_interface: Expand backtrace generationZach Hilman
Returns results as a vector of entries for further processing. Logs addresses, offsets, and mangled name.
2019-04-11core/cpu_core_manager: Create threads separately from initialization.Lioncash
Our initialization process is a little wonky than one would expect when it comes to code flow. We initialize the CPU last, as opposed to hardware, where the CPU obviously needs to be first, otherwise nothing else would work, and we have code that adds checks to get around this. For example, in the page table setting code, we check to see if the system is turned on before we even notify the CPU instances of a page table switch. This results in dead code (at the moment), because the only time a page table switch will occur is when the system is *not* running, preventing the emulated CPU instances from being notified of a page table switch in a convenient manner (technically the code path could be taken, but we don't emulate the process creation svc handlers yet). This moves the threads creation into its own member function of the core manager and restores a little order (and predictability) to our initialization process. Previously, in the multi-threaded cases, we'd kick off several threads before even the main kernel process was created and ready to execute (gross!). Now the initialization process is like so: Initialization: 1. Timers 2. CPU 3. Kernel 4. Filesystem stuff (kind of gross, but can be amended trivially) 5. Applet stuff (ditto in terms of being kind of gross) 6. Main process (will be moved into the loading step in a following change) 7. Telemetry (this should be initialized last in the future). 8. Services (4 and 5 should ideally be alongside this). 9. GDB (gross. Uses namespace scope state. Needs to be refactored into a class or booted altogether). 10. Renderer 11. GPU (will also have its threads created in a separate step in a following change). Which... isn't *ideal* per-se, however getting rid of the wonky intertwining of CPU state initialization out of this mix gets rid of most of the footguns when it comes to our initialization process.
2018-12-30arm_interface: Make LogBacktrace() a const member functionLioncash
This function doesn't modify instance state, so it can be made const.
2018-12-29Moved log backtrace to arm_interface.cpp. Added printing of error code to fatalDavid Marcec
2018-12-19Moved backtrace to ArmInterfaceDavid Marcec
2018-12-03Moved backtrace to ArmInterfaceDavid Marcec
Added to both dynarmic and unicorn
2018-09-30arm_interface: Add missing fpsr/tpidr members to the ThreadContext structLioncash
Internally within the kernel, it also includes a member variable for the floating-point status register, and TPIDR, so we should do the same here to match it. While we're at it, also fix up the size of the struct and add a static assertion to ensure it always stays the correct size.
2018-09-20arm_interface: Replace kernel vm_manager include with a forward declarationLioncash
Avoids an unnecessary inclusion and also uncovers three places where indirect inclusions were relied upon, which allows us to also resolve those.
2018-09-18arm_interface: Remove ARM11-isms from the CPU interfaceLioncash
This modifies the CPU interface to more accurately match an AArch64-supporting CPU as opposed to an ARM11 one. Two of the methods don't even make sense to keep around for this interface, as Adv Simd is used, rather than the VFP in the primary execution state. This is essentially a modernization change that should have occurred from the get-go.
2018-09-15Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi
2018-08-24core: Namespace all code in the arm subdirectory under the Core namespaceLioncash
Gets all of these types and interfaces out of the global namespace.
2018-07-21Merge pull request #750 from lioncash/ctxbunnei
arm_interface: Remove unused tls_address member of ThreadContext
2018-07-20CPU: Save and restore the TPIDR_EL0 system register on every context switch.Subv
Note that there's currently a dynarmic bug preventing this register from being written.
2018-07-20arm_interface: Remove unused tls_address member of ThreadContextLioncash
Currently, the TLS address is set within the scheduler, making this member unused.
2018-07-16scheduler: Clear exclusive state when switching contextsMerryMage
2018-03-18Merge pull request #193 from N00byKing/3184_2_robotic_boogaloobunnei
Implement Pull #3184 from citra: core/arm: Improve timing accuracy before service calls in JIT (Rebased)
2018-03-16arm_interface: Support unmapping previously mapped memory.bunnei
2018-02-25Implements citra-emu/citra#3184N00byKing
2018-01-16clang-formatMerryMage
2018-01-12arm_dynarmic: Implement coreMerryMage
2018-01-02arm: Remove SkyEye/Dyncom code that is ARMv6-only.bunnei
2017-10-09Merge remote-tracking branch 'upstream/master' into nxbunnei
# Conflicts: # src/core/CMakeLists.txt # src/core/arm/dynarmic/arm_dynarmic.cpp # src/core/arm/dyncom/arm_dyncom.cpp # src/core/hle/kernel/process.cpp # src/core/hle/kernel/thread.cpp # src/core/hle/kernel/thread.h # src/core/hle/kernel/vm_manager.cpp # src/core/loader/3dsx.cpp # src/core/loader/elf.cpp # src/core/loader/ncch.cpp # src/core/memory.cpp # src/core/memory.h # src/core/memory_setup.h
2017-09-30arm_interface: Set TLS address for dynarmic core.bunnei
2017-09-30arm: Use 64-bit addressing in a bunch of places.bunnei
2017-09-30Moved down_count to CoreTimingHuw Pascoe
2017-09-24ARM_Interface: Implement PageTableChangedMerryMage
2016-12-22ThreadContext: Move from "core" to "arm_interface".bunnei
2016-09-18Manually tweak source formatting and then re-run clang-formatYuri Kunde Schlesner
2016-09-18Sources: Run clang-format on everything.Emmanuel Gil Peyrot
2016-09-15arm: ResetContext shouldn't be part of ARM_Interface.bunnei
2016-08-27ARM: add ClearInstructionCache functionwwylele
2016-05-17Set fpscr for new threadsJannik Vogel
2015-12-06arm_interface: Make GetNumInstructions constLioncash
2015-12-06arm_interface: directly initialize class membersLioncash
2015-08-06arm_interface: Implement interface for retrieving VFP registersLioncash
2015-05-07Common: Remove common.hYuri Kunde Schlesner
2015-04-06arm_interface: Support retrieval/storage to CP15 registersLioncash
2015-03-16arm_interface: Get rid of GetTicks.Lioncash
Removes a TODO.
2015-02-09Scheduler refactor Pt. 1Kevin Hartman
* Simplifies scheduling logic, specifically regarding thread status. It should be much clearer which statuses are valid for a thread at any given point in the system. * Removes dead code from thread.cpp. * Moves the implementation of resetting a ThreadContext to the corresponding core's implementation. Other changes: * Fixed comments in arm interfaces. * Updated comments in thread.cpp * Removed confusing, useless, functions like MakeReady() and ChangeStatus() from thread.cpp. * Removed stack_size from Thread. In the CTR kernel, the thread's stack would be allocated before thread creation.
2015-01-09Move ThreadContext to core/core.h and deal with the falloutYuri Kunde Schlesner
2015-01-07CoreTiming: Ported the CoreTiming namespace from PPSSPPSubv
Implemented the required calls to make it work. CoreTiming: Added a new logging class Core_Timing.
2014-12-25ARM: Add a mechanism for faking CPU time elapsed during HLE.bunnei
- Also a few cleanups.
2014-12-20License changepurpasmart96
2014-11-19Remove trailing spaces in every file but the ones imported from SkyEye, AOSP ↵Emmanuel Gil Peyrot
or generated
2014-11-14ARM_Interface: Make destructor virtualLioncash
Fixes some warnings on OSX.
2014-06-14Merge branch 'threading' of https://github.com/bunnei/citrabunnei
Conflicts: src/core/hle/function_wrappers.h src/core/hle/service/gsp.cpp