| Age | Commit message (Collapse) | Author |
|
service/audctl: Update documentation comments to be relative to 8.0.0
|
|
Port citra-emu/citra#4749: "web_service: Misc fixes"
|
|
core/memory: Remove unused FlushMode enum
|
|
Recent changes to memory-related code resulted in this being unused, so
we can remove it.
|
|
The backend is not used until we decide to submit the testcase/telemetry, and creating it early prevents users from updating the credentials properly while the games are running.
|
|
This class is used in a polymorphic context, so destruction of the
context will lead to undefined behavior if the destructor isn't virtual.
|
|
Unintentionally introduced in 552d5071fa171165e4054392d8bb6bf2ecc924e2
|
|
kernel/vm_manager: Remove usages of global system accessors
|
|
The state of these service calls are still the same in version 8.0.0.
|
|
kernel/svc: Clean up wait synchronization related functionality
|
|
Allow picking a Compatibility Profile for OpenGL.
|
|
applets: Add AppletManager and implement PhotoViewer and Error applets
|
|
service/audctl: Implement GetTargetVolumeMin() and GetTargetVolumeMax()
|
|
This option allows picking the compatibility profile since a lot of bugs
are fixed in it. We devs will use this option to easierly debug current
problems in our Core implementation.:wq
|
|
kernel/wait_object: Make GetHighestPriorityReadyThread() a const member function
|
|
kernel/svc: Name supervisor call 0x36
|
|
core: Reorganize boot order
|
|
This call was added to the SVC handlers in the 8.0.0 kernel, so we can
finally give it a name.
|
|
These two service functions are literally hardcoded to always return
these values without any other error checking.
|
|
kernel/thread: Remove unused guest_handle member variable
|
|
|
|
|
|
|
|
|
|
|
|
Responsible for displaying error codes and messages
|
|
As opposed to using Core::System::GetInstance()
|
|
|
|
|
|
|
|
|
|
This is a holdover from Citra, where the 3DS has both
WaitSynchronization1 and WaitSynchronizationN. The switch only has one
form of wait synchronizing (literally WaitSynchonization). This allows
us to throw out code that doesn't apply at all to the Switch kernel.
Because of this unnecessary dichotomy within the wait synchronization
utilities, we were also neglecting to properly handle waiting on
multiple objects.
While we're at it, we can also scrub out any lingering references to
WaitSynchronization1/WaitSynchronizationN in comments, and change them
to WaitSynchronization (or remove them if the mention no longer
applies).
|
|
The actual behavior of this function is slightly more complex than what
we're currently doing within the supervisor call. To avoid dumping most
of this behavior in the supervisor call itself, we can migrate this to
another function.
|
|
This doesn't actually modify internal state of a wait object, so it can
be const qualified.
|
|
Makes the dependency on the system instance explicit within VMManager's
interface.
|
|
service: Update service function tables
|
|
kernel/svc: Implement svcMapProcessCodeMemory/svcUnmapProcessCodeMemory
|
|
Allows the handle to be seen alongside the entry point.
|
|
This is a holdover from Citra that currently remains unused, so it can
be removed from the Thread interface.
|
|
This member variable is entirely unused. It was only set but never
actually utilized. Given that, we can remove it to get rid of noise in
the thread interface.
|
|
ldr: Minor amendments to IPC-related parameters
|
|
Add a toggle to force 30FPS mode
|
|
fsp_srv: Minor cleanup related changes
|
|
Frontend: Migrate to QOpenGLWindow and support shared contexts
|
|
Essentially performs the inverse of svcMapProcessCodeMemory. This unmaps
the aliasing region first, then restores the general traits of the
aliased memory.
What this entails, is:
- Restoring Read/Write permissions to the VMA.
- Restoring its memory state to reflect it as a general heap memory region.
- Clearing the memory attributes on the region.
|
|
This is utilized for mapping code modules into memory. Notably, the
ldr service would call this in order to map objects into memory.
|
|
This gives us significantly more control over where in the
initialization process we start execution of the main process.
Previously we were running the main process before the CPU or GPU
threads were initialized (not good). This amends execution to start
after all of our threads are properly set up.
|
|
Initially required due to the split codepath with how the initial main
process instance was initialized. We used to initialize the process
like:
Init() {
main_process = Process::Create(...);
kernel.MakeCurrentProcess(main_process.get());
}
Load() {
const auto load_result = loader.Load(*kernel.GetCurrentProcess());
if (load_result != Loader::ResultStatus::Success) {
// Handle error here.
}
...
}
which presented a problem.
Setting a created process as the main process would set the page table
for that process as the main page table. This is fine... until we get to
the part that the page table can have its size changed in the Load()
function via NPDM metadata, which can dictate either a 32-bit, 36-bit,
or 39-bit usable address space.
Now that we have full control over the process' creation in load, we can
simply set the initial process as the main process after all the loading
is done, reflecting the potential page table changes without any
special-casing behavior.
We can also remove the cache flushing within LoadModule(), as execution
wouldn't have even begun yet during all usages of this function, now
that we have the initialization order cleaned up.
|
|
Now that we have dependencies on the initialization order, we can move
the creation of the main process to a more sensible area: where we
actually load in the executable data.
This allows localizing the creation and loading of the process in one
location, making the initialization of the process much nicer to trace.
|
|
Like with CPU emulation, we generally don't want to fire off the threads
immediately after the relevant classes are initialized, we want to do
this after all necessary data is done loading first.
This splits the thread creation into its own interface member function
to allow controlling when these threads in particular get created.
|