diff --git a/wumsloader/src/entry.cpp b/wumsloader/src/entry.cpp index e7f0391..f99b1c9 100644 --- a/wumsloader/src/entry.cpp +++ b/wumsloader/src/entry.cpp @@ -78,7 +78,17 @@ void SaveLoadedRPLsInGlobalInformation(module_information_t *globalInformation, } } +extern "C" uint32_t OSGetBootPMFlags(void); + void doStart(int argc, char **argv) { + uint32_t bootFlags = OSGetBootPMFlags(); + /* + * Bit 13 - OS relaunch (OSForceFullRelaunch()). + See more https://wiiubrew.org/wiki/Boot1#PowerFlags */ + if ((bootFlags & 0x00002000) != 0 && argc == WUMS_LOADER_SETUP_MAGIC_WORD) { + OSReport("OSForceFullRelaunch detected, skipping WUMS\n", bootFlags); + return; + } init_wut(); initLogging(); diff --git a/wumsloader/src/utils/imports.h b/wumsloader/src/utils/imports.h index 35b880d..ffc24cc 100644 --- a/wumsloader/src/utils/imports.h +++ b/wumsloader/src/utils/imports.h @@ -43,6 +43,7 @@ IMPORT(__os_snprintf); IMPORT(MEMCheckHeap); IMPORT(MEMGetBaseHeapHandle); IMPORT(MEMCheckExpHeap); +IMPORT(OSGetBootPMFlags); IMPORT(FSTimeToCalendarTime); IMPORT(FSInit);