- Oct 02, 2018
-
-
Lioncash authored
Disambiguates what the string represents to help translators more easily understand what it is that they're translating. While we're at it, we can move the code to its own function, so that we don't need to specify the same string twice.
-
- Sep 30, 2018
-
-
bunnei authored
- Fixes issues with Splatoon 2.
-
bunnei authored
-
bunnei authored
-
bunnei authored
-
bunnei authored
-
bunnei authored
-
bunnei authored
-
bunnei authored
-
bunnei authored
-
bunnei authored
-
raven02 authored
-
Lioncash authored
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).
-
Lioncash authored
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).
-
Lioncash authored
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.
-
Lioncash authored
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.
-
raven02 authored
-
- Sep 29, 2018
-
-
Lioncash authored
A process should never require being reference counted in this situation. If the handle to a process is freed before this function is called, it's definitely a bug with our lifetime management, so we can put the requirement in place for the API that the process must be a valid instance.
-
- Sep 28, 2018
-
-
Lioncash authored
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.
-
ReinUsesLisp authored
-
ReinUsesLisp authored
-
- Sep 27, 2018
-
-
Zach Hilman authored
Fixes an issue where installed system archive NCAs would be installed to user NAND and not recognized by games.
-
- Sep 26, 2018
-
-
Lioncash authored
Avoids making copies of large std::vector instances where it's trivially avoidable to do so.
-
Lioncash authored
Theres no need to do explicit bitwise arithmetic here, when we have a function that does this with a more descriptive name.
-
Lioncash authored
Avoids the need to nest code quite a bit by early-exiting in error cases.
-
ReinUsesLisp authored
Add asserts for compute shader dispatching, transform feedback being enabled and alpha testing. These have in common that they'll probably break rendering without logging.
-
Lioncash authored
Orders the initializer list members to be in the same order that they would be initialized in. Avoids compiler warnings.
-
Lioncash authored
Cast where explicitly necessary and in other cases we can simply modify the algorithm to accomodate larger data.
-
Lioncash authored
fsmitm_romfsbuild: Remove unnecessary constructors and initializers for RomFSBuildFileContext and RomFSBuildDirectoryContext There's no need to duplicate in-class initializers with a constructor initializer list. std::strings also initialize to empty by default.
-
Lioncash authored
The std::vector instances are already initially allocated with all entries having these values, there's no need to loop through and fill them with it again when they aren't modified.
-
Lioncash authored
auto x = 0; auto-deduces x to be an int. This is undesirable when working with unsigned values. It also causes sign conversion warnings. Instead, we can make it a proper unsigned value with the correct width that the following expressions operate on.
-
Lioncash authored
Ternary operators have a lower precedence than arithmetic operators, so what was actually occurring here is "return (out + full) ? x : y" which most definitely isn't intended, given we calculate out recursively above. We were essentially doing a lot of work for nothing.
-
Lioncash authored
This can cause warnings about static constructors, and is also not ideal performance-wise due to the indirection through std::function. This also keeps the behavior itself separate from the surrounding code, which can make it nicer to read, due to the size of the code.
-
Lioncash authored
Given we just recently had a patch backport this from citra, let's try and keep the convention uniform.
-
Lioncash authored
Given these are only added to the class to allow those functions to access the private constructor, it's a better approach to just make them static functions in the interface, to make the dependency explicit.
-
- Sep 25, 2018
-
-
Lioncash authored
This converts it into a regular constructor parameter. There's no need to make this a template parameter on the class when it functions perfectly well as a constructor argument. This also reduces the amount of code bloat produced by the compiler, as it doesn't need to generate the same code for multiple different instantiations of the same class type, but with a different fill value.
-
Lioncash authored
Gets rid of a few indirect inclusions.
-
Lioncash authored
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.
-
Lioncash authored
It doesn't make sense to allow a scheduler to be constructed around a null pointer.
-
Lioncash authored
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.
-