kern: invoke supervisor mode thread functions from C++ context with valid stack frame

This commit is contained in:
Michael Scire authored and SciresM committed 2024-10-15 21:48:59 -07:00
1 parent 23ba31da1f
commit 9cfd535568
2 files changed
+15 -1

No files matched your search

@@ -21,6 +21,15 @@ namespace ams::kern::arch::arm64 {
void UserModeThreadStarter();
void SupervisorModeThreadStarter();
void InvokeSupervisorModeThread(uintptr_t argument, uintptr_t entrypoint) {
/* Invoke the function. */
using SupervisorModeFunctionType = void (*)(uintptr_t);
reinterpret_cast<SupervisorModeFunctionType>(entrypoint)(argument);
/* Wait forever. */
AMS_INFINITE_LOOP();
}
void OnThreadStart() {
MESOSPHERE_ASSERT(!KInterruptManager::AreInterruptsEnabled());
/* Send KDebug event for this thread's creation. */