aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle
AgeCommit message (Collapse)Author
2018-10-06kernel/mutex: Amend behavior of TransferMutexOwnership()Lioncash
This was the result of a typo accidentally introduced in e51d715700a35a8f14e5b804b6f7553c9a40888b. This restores the previous correct behavior. The behavior with the reference was incorrect and would cause some games to fail to boot.
2018-10-05thread: Make the scheduler pointer a regular pointerbalika011
Conceptually, it doesn't make sense for a thread to be able to persist the lifetime of a scheduler. A scheduler should be taking care of the threads; the threads should not be taking care of the scheduler. If the threads outlive the scheduler (or we simply don't actually terminate/shutdown the threads), then it should be considered a bug that we need to fix. Attributing this to balika011, as they opened #1317 to attempt to fix this in a similar way, but my refactoring of the kernel code caused quite a few conflicts.
2018-10-05Merge pull request #1439 from lioncash/threadbunnei
kernel/thread: Make all instance variables private
2018-10-04kernel/thread: Make all instance variables privateLioncash
Many of the member variables of the thread class aren't even used outside of the class itself, so there's no need to make those variables public. This change follows in the steps of the previous changes that made other kernel types' members private. The main motivation behind this is that the Thread class will likely change in the future as emulation becomes more accurate, and letting random bits of the emulator access data members of the Thread class directly makes it a pain to shuffle around and/or modify internals. Having all data members public like this also makes it difficult to reason about certain bits of behavior without first verifying what parts of the core actually use them. Everything being public also generally follows the tendency for changes to be introduced in completely different translation units that would otherwise be better introduced as an addition to the Thread class' public interface.
2018-10-03Merge pull request #1434 from DarkLordZach/dlc-edge-casebunnei
aoc_u: Fix edge case with DLC that causes breaks
2018-10-03Merge pull request #1433 from lioncash/fsbunnei
services/fsp_srv: Amend service function table
2018-10-02aoc_u: Fix edge case with DLC that causes breaksZach Hilman
In some games (Splatoon 2 and Splatoon 2 Splatfest World Premiere, notably), pass offset=0 and count=2047 into the ListAddOnContent method which should return all DLCs for the current title. The (presumably) intended behavior is to successfully return a empty array but because of a < v. <= in an if statement, a failure error code was returned causing these games to svcBreak. This fixes that if statement.
2018-10-02services/fsp_srv: Amend service function tableLioncash
Adds new functions that have been given names to the table. Information is based off what is provided on Switchbrew.
2018-10-02service/lbl: Update service function tableLioncash
Amends the lbl service table to include new names of functions that were added to Switchbrew.
2018-09-30aoc_u: Extract AccumulateAOCTitleIDs to separate functionZach Hilman
2018-09-30aoc_u: Implement GetAddOnContentBaseIdZach Hilman
Command #5
2018-09-30aoc_u: Implement Count, List and Prepare AddOnContentZach Hilman
Commands #2, #3, and #7
2018-09-30Merge pull request #1338 from raven02/service_vibunnei
Implement ISystemDisplayService::GetDisplayMode
2018-09-30kernel/svc: Implement svcGetThreadContext()Lioncash
Now that we have all of the rearranging and proper structure sizes in place, it's fairly trivial to implement svcGetThreadContext(). In the 64-bit case we can more or less just write out the context as is, minus some minor value sanitizing. In the 32-bit case we'll need to clear out the registers that wouldn't normally be accessible from a 32-bit AArch32 exectuable (or process).
2018-09-30kernel/process: Add a data member to determine if a process is 64-bit or not.Lioncash
This will be necessary for the implementation of svcGetThreadContext(), as the kernel checks whether or not the process that owns the thread that has it context being retrieved is a 64-bit or 32-bit process. If the process is 32-bit, then the upper 15 general-purpose registers and upper 16 vector registers are cleared to zero (as AArch32 only has 15 GPRs and 16 128-bit vector registers. not 31 general-purpose registers and 32 128-bit vector registers like AArch64).
2018-09-30kernel/process: Make data member variables privateLioncash
Makes the public interface consistent in terms of how accesses are done on a process object. It also makes it slightly nicer to reason about the logic of the process class, as we don't want to expose everything to external code.
2018-09-30Implement ISystemDisplayService::GetDisplayModeraven02
2018-09-29Merge pull request #1412 from lioncash/movebunnei
kernel/object: Remove unnecessary std::move from DynamicObjectCast()
2018-09-29Merge pull request #1395 from lioncash/vmbunnei
process/vm_manager: Initial modifications to load NPDM metadata
2018-09-28kernel/object: Remove unnecessary std::move from DynamicObjectCast()Lioncash
boost::static_pointer_cast for boost::intrusive_ptr (what SharedPtr is), takes its parameter by const reference. Given that, it means that this std::move doesn't actually do anything other than obscure what the function's actual behavior is, so we can remove this. To clarify, this would only do something if the parameter was either taking its argument by value, by non-const ref, or by rvalue-reference.
2018-09-27Merge pull request #1394 from lioncash/streambunnei
stream: Preserve enum class type in GetState()
2018-09-26Merge pull request #1399 from lioncash/schedbunnei
kernel/scheduler: Take ARM_Interface instances by reference
2018-09-26Merge pull request #1400 from lioncash/headerbunnei
service: Add missing headers inclusions where applicable
2018-09-25service: Add missing headers inclusions where applicableLioncash
Gets rid of a few indirect inclusions.
2018-09-25Merge pull request #1365 from DarkLordZach/lfsbunnei
file_sys: Add support for LayeredFS mods
2018-09-25kernel/scheduler: Take ARM_Interface instance by reference in the constructorLioncash
It doesn't make sense to allow a scheduler to be constructed around a null pointer.
2018-09-25Merge pull request #1393 from tech4me/svcbunnei
svc: Updated svc names
2018-09-24memory: Dehardcode the use of fixed memory range constantsLioncash
The locations of these can actually vary depending on the address space layout, so we shouldn't be using these when determining where to map memory or be using them as offsets for calculations. This keeps all the memory ranges flexible and malleable based off of the virtual memory manager instance state.
2018-09-24svc: Report correct memory-related values within some of the cases in ↵Lioncash
svcGetInfo() Previously, these were reporting hardcoded values, but given the regions can change depending on the requested address spaces, these need to report the values that the memory manager contains.
2018-09-24memory: Dehardcode the use of a 36-bit address spaceLioncash
Given games can also request a 32-bit or 39-bit address space, we shouldn't be hardcoding the address space range as 36-bit.
2018-09-24process/vm_manager: Amend API to allow reading parameters from NPDM metadataLioncash
Rather than hard-code the address range to be 36-bit, we can derive the parameters from supplied NPDM metadata if the supplied exectuable supports it. This is the bare minimum necessary for this to be possible. The following commits will rework the memory code further to adjust to this.
2018-09-23Implemented fatal:u properly (#1347)David
* Implemented fatal:u properly fatal:u now is properly implemented with all the ipc cmds. Error reports/Crash reports are also now implemented for fatal:u. Crash reports save to yuzu/logs/crash_reports/ The register dump is currently known as sysmodules send all zeros. If there are any non zero values for the "registers" or the unknown values, let me know! * Fatal:U fixups * Made fatal:u execution break more clear * Fatal fixups
2018-09-23Stubbed IRS (#1349)David
* Stubbed IRS Currently we have no ideal way of implementing IRS. For the time being we should have the functions stubbed until we come up with a way to emulate IRS properly. * Added IRS to logging backend * Forward declared shared memory for irs
2018-09-23Merge pull request #1354 from ogniK5377/ssl-versionbunnei
Corrected SSL::SetInterfaceVersion
2018-09-23stream: Preserve enum class type in GetState()Lioncash
Preserves the meaning/type-safetiness of the stream state instead of making it an opaque u32. This makes it usable for other things outside of the service HLE context.
2018-09-23svc: Updated svc namestech4me
2018-09-23Added audren:u#GetAudioRendererStateDavid Marcec
2018-09-21filesystem: Add LayeredFS VFS directory getterZach Hilman
2018-09-21svc: Move most process termination code to its own function within ProcessLioncash
Reduces the use of Process class members externally and keeps most code related to tearing down a process with the rest of the process code.
2018-09-21thread/process: Move TLS slot marking/freeing to the process classLioncash
Allows making several members of the process class private, it also avoids going through Core::CurrentProcess() just to retrieve the owning process.
2018-09-20Merge pull request #1372 from lioncash/threadbunnei
kernel/thread: Use owner_process when setting the page table in SetupMainThread()
2018-09-20Merge pull request #1371 from lioncash/fwd-armbunnei
arm_interface: Replace kernel vm_manager include with a forward declaration
2018-09-20Merge pull request #1368 from ogniK5377/nifm-fixbunnei
Added IRequest::Submit
2018-09-21Revert GetRequestStateDavid Marcec
Even though setting this value to 3 is more correct. We break more games than we fix due to missing implementations. We should keep this as 0 for the time being
2018-09-20kernel/thread: Use owner_process when setting the page table in ↵Lioncash
SetupMainThread() The owning process of a thread is required to exist before the thread, so we can enforce this API-wise by using a reference. We can also avoid the reliance on the system instance by using that parameter to access the page table that needs to be set.
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-21Fixed submitDavid Marcec
2018-09-21Added IRequest::SubmitDavid Marcec
This fixes updated versions of SMO. Currently unable to test as I don't have an updated version
2018-09-20Removed unneeded event clearDavid Marcec
2018-09-20Implemented NTC & IEnsureNetworkClockAvailabilityServiceDavid Marcec
Needed because of the recent nim fixes