| Age | Commit message (Collapse) | Author |
|
svc: Add missing error checks in svcArbitrateLock/svcArbitrateUnlock
|
|
svcArbitrateLock/svcArbitrateUnlock
The kernel itself checks whether or not the provided addresses are word
aligned before continuing, so we should be doing the same.
|
|
Aligning on 4KB pages isn't a Switch-specific thing, so this can be
moved to common so it can be used with other things as well.
|
|
InitializeWithId needs to return an id which is a u32 which should be a non zero value
|
|
"Better Hid" Rework Part 1
|
|
svc: Clarify enum values for AddressSpaceBaseAddr and AddressSpaceSize in svcGetInfo()
|
|
Reason for the change is to allow both docked and undocked mode to work
|
|
* Implement VI ConvertScalingMode
* Fixed push enum
* Scale mode now uses Nintendo scale mode as an enum as well
|
|
core: Convert shared_ptr instances into unique_ptr instances where applicable for System and Cpu
|
|
shared_ptrs where applicable
The data retrieved in these cases are ultimately chiefly owned by either
the RegisteredCache instance itself, or the filesystem factories. Both
these should live throughout the use of their contained data. If they
don't, it should be considered an interface/design issue, and using
shared_ptr instances here would mask that, as the data would always be
prolonged after the main owner's lifetime ended.
This makes the lifetime of the data explicit and makes it harder to
accidentally create cyclic references. It also makes the interface
slightly more flexible than the previous API, as a shared_ptr can be
created from a unique_ptr, but not the other way around, so this allows
for that use-case if it ever becomes necessary in some form.
|
|
aoc: Fix various bugs in current AOC implementation
|
|
|
|
svcGetInfo()
So, one thing that's puzzled me is why the kernel seemed to *not* use
the direct code address ranges in some cases for some service functions.
For example, in svcMapMemory, the full address space width is compared
against for validity, but for svcMapSharedMemory, it compares against
0xFFE00000, 0xFF8000000, and 0x7FF8000000 as upper bounds, and uses
either 0x200000 or 0x8000000 as the lower-bounds as the beginning of the
compared range. Coincidentally, these exact same values are also used in
svcGetInfo, and also when initializing the user address space, so this
is actually retrieving the ASLR extents, not the extents of the address
space in general.
|
|
Falls back to title ID + 0x1000, which is what HOS does.
|
|
filesystem: Make CreateFactories() and InstallInterface() take a VfsFilesystem by reference
|
|
svc: Implement svcGetProcessInfo
|
|
This should help diagnose crashes easier and prevent many users thinking that a game is still running when in fact it's just an audio thread still running(this is typically not killed when svcBreak is hit since the game expects us to do this)
|
|
|
|
A fairly basic service function, which only appears to currently support
retrieving the process state. This also alters the ProcessStatus enum to
contain all of the values that a kernel process seems to be able of
reporting with regards to state.
|
|
VfsFilesystem instance by reference
Neither of these functions alter the ownership of the provided pointer,
so we can simply make the parameters a reference rather than a direct
shared pointer alias. This way we also disallow passing incorrect memory values like
nullptr.
|
|
kernel/process: Make CodeSet a regular non-inherited object
|
|
svc: Fix typos in sanitizing checks for MapMemory/UnmapMemory
|
|
Fixed incorrect types for svcBreak
|
|
These only exist to ferry data into a Process instance and end up going
out of scope quite early. Because of this, we can just make it a plain
struct for holding things and just std::move it into the relevant
function. There's no need to make this inherit from the kernel's Object
type.
|
|
Passing an invalid nmap handle to Remap should throw an error
|
|
thread: Remove unnecessary memset from ResetThreadContext()
|
|
Added error codes for nvmap
|
|
Regular value initialization is adequate here for zeroing out data. It
also has the benefit of not invoking undefined behavior if a non-trivial
type is ever added to the struct for whatever reason.
|
|
|
|
|
|
|
|
|
|
HwOpus, Implemented DecodeInterleavedWithPerformance
|
|
svc: Add missing address range sanitizing checks to MapMemory/UnmapMemory
|
|
Kirby input still doesn't work, should fix a lot of other games
|
|
|
|
Added error for invalid nmap handles
|
|
|
|
Used by sonic ages
|
|
This adds the missing address range checking that the service functions
do before attempting to map or unmap memory. Given that both service
functions perform the same set of checks in the same order, we can wrap
these into a function and just call it from both functions, which
deduplicates a little bit of code.
|
|
Used by Mario Party
|
|
HandheldVariant is for specific games which expect handheld controllers to be at position 8(kirby), however this doesn't fix all games as some games require handhelds to be at position 0(snipperclips)
|
|
There's no real need to use a shared pointer in these cases, and only
makes object management more fragile in terms of how easy it would be to
introduce cycles. Instead, just do the simple thing of using a regular
pointer. Much of this is just a hold-over from citra anyways.
It also doesn't make sense from a behavioral point of view for a
process' thread to prolong the lifetime of the process itself (the
process is supposed to own the thread, not the other way around).
|
|
|
|
Fixes arms
|
|
|
|
|
|
|
|
|
|
signal_debugger seems like a more fitting name
|