aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle
AgeCommit message (Collapse)Author
2018-07-23Merge pull request #777 from lioncash/langbunnei
set: Amend return value of GetAvailableLanguageCodes()
2018-07-23set: Implement GetAvailableLanguageCodeCount()Lioncash
This just returns the size of the language code buffer.
2018-07-23set: Correct return code size of value in GetAvailableLanguageCodes()Lioncash
The return code should be 32-bit in size.
2018-07-22Merge pull request #774 from Subv/atomic_signalbunnei
Kernel/SVC: Perform atomic accesses in SignalProcessWideKey as per the real kernel.
2018-07-22Kernel/SVC: Perform atomic accesses in SignalProcessWideKey as per the real ↵Subv
kernel.
2018-07-22file_util, vfs: Use std::string_view where applicableLioncash
Avoids unnecessary construction of std::string instances where applicable.
2018-07-21Merge pull request #760 from lioncash/pathbunnei
file_util: Use an enum class for GetUserPath()
2018-07-21GPU: Implement the NVGPU_IOCTL_CHANNEL_KICKOFF_PB ioctl2 command.Subv
This behaves quite similarly to the SubmitGPFIFO command. Referenced from Ryujinx. Many thanks to @gdkchan for investigating this!
2018-07-21file_util: Use an enum class for GetUserPath()Lioncash
Instead of using an unsigned int as a parameter and expecting a user to always pass in the correct values, we can just convert the enum into an enum class and use that type as the parameter type instead, which makes the interface more type safe. We also get rid of the bookkeeping "NUM_" element in the enum by just using an unordered map. This function is generally low-frequency in terms of calls (and I'd hope so, considering otherwise would mean we're slamming the disk with IO all the time) so I'd consider this acceptable in this case.
2018-07-21Merge pull request #751 from Subv/tpidr_el0bunnei
CPU: Save and restore the TPIDR_EL0 system register on every context switch
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-20Merge pull request #742 from bunnei/misc-apmbunnei
apm: Improve stub for GetPerformanceConfiguration.
2018-07-20apm: Improve stub for GetPerformanceConfiguration.bunnei
2018-07-20ipc_helpers: Add PushEnum() member function to ResponseBuilderLioncash
Allows pushing strongly-typed enum members without the need to always cast them at the call sites. Note that we *only* allow strongly-typed enums in this case. The reason for this is that strongly typed enums have a guaranteed defined size, so the size of the data being pushed is always deterministic. With regular enums this can be a little more error-prone, so we disallow them. This function simply uses the underlying type of the enum to determine the size of the data. For example, if an enum is defined as: enum class SomeEnum : u16 { SomeEntry }; if PushEnum(SomeEnum::SomeEntry); is called, then it will push a u16-size amount of data.
2018-07-20Merge pull request #740 from Subv/acc_crashbunnei
HLE/ACC: Stub IManagerForApplication::GetAccountId to return an error.
2018-07-20Merge pull request #736 from lioncash/nullbunnei
audout_u/audren_u: Ensure null terminators are written out in ListAudioOutsImpl(), ListAudioDeviceName(), and GetActiveAudioDeviceName()
2018-07-20Merge pull request #734 from lioncash/threadbunnei
thread: Convert ThreadStatus into an enum class
2018-07-20HLE/ACC: Stub IManagerForApplication::GetAccountId to return an error.Subv
And make IManagerForApplication::CheckAvailability always return false. Returning a bogus id from GetAccountId causes games to crash on boot. We should investigate this with a hwtest and either stub it properly or implement it.
2018-07-19audren_u: Use a std::array instead of std::string for holding the audio ↵Lioncash
interface/device name std::string doesn't include the null-terminator in its data() + size() range. This ensures that the null-terminator will also be written to the buffer
2018-07-19audout_u: Use a std::array instead of std::string for holding the audio ↵Lioncash
interface name Uses a type that doesn't potentially dynamically allocate, and ensures that the name of the interface is properly null-terminated when writing it to the buffer.
2018-07-19thread: Convert ThreadStatus into an enum classLioncash
Makes the thread status strongly typed, so implicit conversions can't happen. It also makes it easier to catch mistakes at compile time.
2018-07-19pl_u: Simplify WriteBuffer() calls in GetSharedFontInOrderOfPriority()Lioncash
With the new overload, we can simply pass the container directly.
2018-07-19Merge pull request #726 from lioncash/overloadbunnei
hle_ipc: Introduce generic WriteBuffer overload for multiple container types
2018-07-19Merge pull request #725 from lioncash/bytesbunnei
pl_u: Specify correct size for buffers in GetSharedFontInOrderOfPriority()
2018-07-19Merge pull request #728 from Subv/acc_profilebunnei
HLE/ACC: Change the default user id and small improvements to the way we handle profiles
2018-07-19Merge pull request #727 from Subv/acc_usersbunnei
HLE/ACC: Write a single whole user id in ListAllUsers and ListOpenUsers.
2018-07-19Merge pull request #724 from lioncash/printfbunnei
pl_u: Remove printf specifier in log call in a log call in GetSharedFontInOrderOfPriority()
2018-07-19Merge pull request #722 from lioncash/signedbunnei
hid: Resolve a signed/unsigned comparison warning
2018-07-19Merge pull request #721 from lioncash/svcbunnei
svc: Correct always true assertion case in SetThreadCoreMask
2018-07-19Merge pull request #717 from lioncash/explicitbunnei
hle/service: Make constructors explicit where applicable
2018-07-19HLE/ACC: Return an IProfile that is consistent with what was requested.Subv
The default username for now is "yuzu". We should eventually allow the creation of users in the emulator and have the ability to modify their parameters.
2018-07-19HLE/ACC: Change the default user id to be consistent with what we tell games ↵Subv
on startup. In IApplicationFunctions::PopLaunchParameter we tell the games that they were launched as user id 1.
2018-07-19HLE/ACC: Write a single whole user id in ListAllUsers and ListOpenUsers.Subv
We only emulate a single user id for now.
2018-07-19Merge pull request #716 from lioncash/constructbunnei
nvflinger: Emplace Display instances directly
2018-07-19hle_ipc: Introduce generic WriteBuffer overload for multiple container typesLioncash
This introduces a slightly more generic variant of WriteBuffer(). Notably, this variant doesn't constrain the arguments to only accepting std::vector instances. It accepts whatever adheres to the ContiguousContainer concept in the C++ standard library. This essentially means, std::array, std::string, and std::vector can be used directly with this interface. The interface no longer forces you to solely use containers that dynamically allocate. To ensure our overloads play nice with one another, we only enable the container-based WriteBuffer if the argument is not a pointer, otherwise we fall back to the pointer-based one.
2018-07-19Merge pull request #715 from lioncash/const-refbunnei
nvdrv: Take std::string by const reference in GetDevice()
2018-07-19Merge pull request #720 from Subv/getentrytype_rootSebastian Valle
Filesystem: Return EntryType::Directory for the root directory.
2018-07-19pl_u: Specify correct size for buffers in GetSharedFontInOrderOfPriority()Lioncash
This WriteBuffer overload expects its size argument to be in bytes, not elements.
2018-07-19svc: Correct always true assertion case in SetThreadCoreMaskLioncash
The reason this would never be true is that ideal_processor is a u8 and THREADPROCESSORID_DEFAULT is an s32. In this case, it boils down to how arithmetic conversions are performed before performing the comparison. If an unsigned value has a lesser conversion rank (aka smaller size) than the signed type being compared, then the unsigned value is promoted to the signed value (i.e. u8 -> s32 happens before the comparison). No sign-extension occurs here either. An alternative phrasing: Say we have a variable named core and it's given a value of -2. u8 core = -2; This becomes 254 due to the lack of sign. During integral promotion to the signed type, this still remains as 254, and therefore the condition will always be true, because no matter what value the u8 is given it will never be -2 in terms of 32 bits. Now, if one type was a s32 and one was a u32, this would be entirely different, since they have the same bit width (and the signed type would be converted to unsigned instead of the other way around) but would still have its representation preserved in terms of bits, allowing the comparison to be false in some cases, as opposed to being true all the time. --- We also get rid of two signed/unsigned comparison warnings while we're at it.
2018-07-19pl_u: Remove printf specifier in log call in a log call in ↵Lioncash
GetSharedFontInOrderOfPriority() This can just use the fmt specifiers and be type-agnostic.
2018-07-19Merge pull request #714 from lioncash/indexSebastian Valle
hle_ipc: Amend usage of buffer_index within one of HLERequestContext's WriteBuffer() overloads
2018-07-19Merge pull request #712 from lioncash/fspbunnei
fsp_srv: Misc individual changes
2018-07-19hid: Use a ranged-for loops in UpdatePadCallbackLioncash
Modernizes the loops themselves while also getting rid of a signed/unsigned comparison in a loop condition.
2018-07-19hid: Use HID_NUM_LAYOUTS constant for indicating size of the layouts arrayLioncash
Gets rid of the use of a magic constant
2018-07-19Filesystem: Return EntryType::Directory for the root directory.Subv
It is unknown if this is correct behavior, but it makes sense and fixes a regression with Stardew Valley.
2018-07-19hle/service: Make constructors explicit where applicableLioncash
Prevents implicit construction and makes these lingering non-explicit constructors consistent with the rest of the other classes in services.
2018-07-19nvflinger: Emplace Display instances directlyLioncash
We can use emplace_back to construct the Display instances directly, instead of constructing them separately and copying them, avoiding the need to copy std::string and std::vector instances that are part of the Display struct.
2018-07-19nvdrv: Take std::string by const reference in GetDevice()Lioncash
This is only ever used as a lookup into the device map, so we don't need to take the std::string instance by value here.
2018-07-19hle_ipc: Amend usage of buffer_index within one of HLERequestContext's ↵Lioncash
WriteBuffer() overloads Previously, the buffer_index parameter was unused, causing all writes to use the buffer index of zero, which is not necessarily what is wanted all the time. Thankfully, all current usages don't use a buffer index other than zero, so this just prevents a bug before it has a chance to spring.
2018-07-19fsp_srv: Remove unnecessary vector construction in IFile's Write() functionLioncash
We can avoid constructing a std::vector here by simply passing a pointer to the original data and the size of the copy we wish to perform to the backend's Write() function instead, avoiding copying the data where it's otherwise not needed.