diff --git a/thermosphere/src/core_ctx.c b/thermosphere/src/core_ctx.c
new file mode 100644
index 000000000..42677aa91
--- /dev/null
+++ b/thermosphere/src/core_ctx.c
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2019 Atmosphère-NX
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "core_ctx.h"
+
+CoreCtx g_coreCtxInstances[4] = {
+ { .coreId = 0 },
+ { .coreId = 1 },
+ { .coreId = 2 },
+ { .coreId = 3 },
+};
diff --git a/thermosphere/src/core_ctx.h b/thermosphere/src/core_ctx.h
new file mode 100644
index 000000000..1422788c7
--- /dev/null
+++ b/thermosphere/src/core_ctx.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2019 Atmosphère-NX
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+#include "utils.h"
+
+typedef struct CoreCtx {
+ u32 coreId;
+} CoreCtx;
+
+extern CoreCtx g_coreCtxInstances[4];
+register CoreCtx *currentCoreCtx asm("x18");
\ No newline at end of file