diff --git a/nx/include/switch/runtime/env.h b/nx/include/switch/runtime/env.h
index af2e0d57..b21db618 100644
--- a/nx/include/switch/runtime/env.h
+++ b/nx/include/switch/runtime/env.h
@@ -85,3 +85,6 @@ Result envSetNextLoad(const char* path, const char* argv);
/// Returns true if the environment supports envSetNextLoad.
bool envHasNextLoad(void);
+
+/// Returns the Result from the last NRO.
+Result envGetLastLoadResult(void);
diff --git a/nx/source/runtime/env.c b/nx/source/runtime/env.c
index 6ceb6e31..1cc7eb44 100644
--- a/nx/source/runtime/env.c
+++ b/nx/source/runtime/env.c
@@ -16,6 +16,7 @@ static u64 g_syscallHints[2];
static Handle g_processHandle = INVALID_HANDLE;
static char* g_nextLoadPath = NULL;
static char* g_nextLoadArgv = NULL;
+static Result g_lastLoadResult = 0;
extern __attribute__((weak)) u32 __nx_applet_type;
@@ -84,6 +85,10 @@ void envSetup(void* ctx, Handle main_thread, LoaderReturnFn saved_lr)
g_processHandle = ent->Value[0];
break;
+ case EntryType_LastLoadResult:
+ g_lastLoadResult = ent->Value[0];
+ break;
+
default:
if (ent->Flags & EntryFlag_IsMandatory)
{
@@ -164,3 +169,7 @@ Result envSetNextLoad(const char* path, const char* argv)
bool envHasNextLoad(void) {
return g_nextLoadPath != NULL;
}
+
+Result envGetLastLoadResult(void) {
+ return g_lastLoadResult;
+}