diff --git a/src/citra/citra.cpp b/src/citra/citra.cpp
index 5a8642d1b8..f6bb10f290 100644
--- a/src/citra/citra.cpp
+++ b/src/citra/citra.cpp
@@ -8,7 +8,7 @@
#include "core/system.h"
#include "core/core.h"
-#include "core/loader.h"
+#include "core/loader/loader.h"
#include "citra/emu_window/emu_window_glfw.h"
diff --git a/src/citra_qt/bootmanager.cpp b/src/citra_qt/bootmanager.cpp
index f851164193..421b2af552 100644
--- a/src/citra_qt/bootmanager.cpp
+++ b/src/citra_qt/bootmanager.cpp
@@ -5,7 +5,7 @@
#include "bootmanager.hxx"
#include "core/core.h"
-#include "core/loader.h"
+#include "core/loader/loader.h"
#include "core/hw/hw.h"
#include "video_core/video_core.h"
diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp
index 087716c015..cff0b6a2a3 100644
--- a/src/citra_qt/main.cpp
+++ b/src/citra_qt/main.cpp
@@ -23,9 +23,10 @@
#include "debugger/graphics_cmdlists.hxx"
#include "core/system.h"
-#include "core/loader.h"
#include "core/core.h"
+#include "core/loader/loader.h"
#include "core/arm/disassembler/load_symbol_map.h"
+
#include "version.h"
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 7116b88e90..2361fd2e3b 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -1,6 +1,7 @@
set(SRCS core.cpp
core_timing.cpp
- loader.cpp
+ loader/elf_reader.cpp
+ loader/loader.cpp
mem_map.cpp
mem_map_funcs.cpp
system.cpp
@@ -27,7 +28,6 @@ set(SRCS core.cpp
arm/interpreter/mmu/tlb.cpp
arm/interpreter/mmu/wb.cpp
arm/interpreter/mmu/xscale_copro.cpp
- elf/elf_reader.cpp
file_sys/directory_file_system.cpp
file_sys/meta_file_system.cpp
hle/hle.cpp
@@ -50,7 +50,9 @@ set(SRCS core.cpp
set(HEADERS core.h
core_timing.h
- loader.h
+ loader/elf_reader.h
+ loader/elf_types.h
+ loader/loader.h
mem_map.h
system.h
arm/disassembler/arm_disasm.h
@@ -72,8 +74,6 @@ set(HEADERS core.h
arm/interpreter/vfp/asm_vfp.h
arm/interpreter/vfp/vfp.h
arm/interpreter/vfp/vfp_helper.h
- elf/elf_reader.h
- elf/elf_types.h
file_sys/directory_file_system.h
file_sys/file_sys.h
file_sys/meta_file_system.h
diff --git a/src/core/core.vcxproj b/src/core/core.vcxproj
index 8eb189a8b5..07d3d57c84 100644
--- a/src/core/core.vcxproj
+++ b/src/core/core.vcxproj
@@ -162,7 +162,6 @@
-
@@ -182,7 +181,8 @@
-
+
+
@@ -210,8 +210,6 @@
-
-
@@ -233,7 +231,9 @@
-
+
+
+
@@ -243,4 +243,4 @@
-
+
\ No newline at end of file
diff --git a/src/core/core.vcxproj.filters b/src/core/core.vcxproj.filters
index da781f8163..5b2be33980 100644
--- a/src/core/core.vcxproj.filters
+++ b/src/core/core.vcxproj.filters
@@ -16,9 +16,6 @@
{d1158fc4-3e0f-431f-9d3b-f30bbfeb4ad5}
-
- {7ae34319-6d72-4d12-bc62-9b438ba9241f}
-
{8b62769e-3e2a-4a57-a7bc-b3b2933c2bc7}
@@ -34,6 +31,9 @@
{8089d94b-5faa-43dc-854b-ffd2fa2e7fe3}
+
+ {491d5558-5f3a-4283-8ba4-0a58b1984e37}
+
@@ -72,11 +72,7 @@
hw
-
- elf
-
-
@@ -171,6 +167,12 @@
hle\service
+
+ loader
+
+
+ loader
+
@@ -212,18 +214,11 @@
hw
-
- elf
-
-
- elf
-
arm
-
@@ -307,8 +302,17 @@
hle\service
+
+ loader
+
+
+ loader
+
+
+ loader
+
-
+
\ No newline at end of file
diff --git a/src/core/elf/elf_reader.cpp b/src/core/loader/elf_reader.cpp
similarity index 99%
rename from src/core/elf/elf_reader.cpp
rename to src/core/loader/elf_reader.cpp
index c62332cecd..123747f8ed 100644
--- a/src/core/elf/elf_reader.cpp
+++ b/src/core/loader/elf_reader.cpp
@@ -8,7 +8,7 @@
#include "common/symbols.h"
#include "core/mem_map.h"
-#include "core/elf/elf_reader.h"
+#include "core/loader/elf_reader.h"
//void bswap(Elf32_Word &w) {w = Common::swap32(w);}
//void bswap(Elf32_Half &w) {w = Common::swap16(w);}
diff --git a/src/core/elf/elf_reader.h b/src/core/loader/elf_reader.h
similarity index 98%
rename from src/core/elf/elf_reader.h
rename to src/core/loader/elf_reader.h
index 3e2869f87d..6f0ad84b35 100644
--- a/src/core/elf/elf_reader.h
+++ b/src/core/loader/elf_reader.h
@@ -4,7 +4,7 @@
#pragma once
-#include "core/elf/elf_types.h"
+#include "core/loader/elf_types.h"
enum KnownElfTypes
{
diff --git a/src/core/elf/elf_types.h b/src/core/loader/elf_types.h
similarity index 100%
rename from src/core/elf/elf_types.h
rename to src/core/loader/elf_types.h
diff --git a/src/core/loader.cpp b/src/core/loader/loader.cpp
similarity index 98%
rename from src/core/loader.cpp
rename to src/core/loader/loader.cpp
index 94b59e5da0..7e6922e0c0 100644
--- a/src/core/loader.cpp
+++ b/src/core/loader/loader.cpp
@@ -5,10 +5,10 @@
#include "common/common_types.h"
#include "common/file_util.h"
-#include "core/loader.h"
+#include "core/loader/loader.h"
+#include "core/loader/elf_reader.h"
#include "core/system.h"
#include "core/core.h"
-#include "core/elf/elf_reader.h"
#include "core/hle/kernel/kernel.h"
#include "core/mem_map.h"
diff --git a/src/core/loader.h b/src/core/loader/loader.h
similarity index 100%
rename from src/core/loader.h
rename to src/core/loader/loader.h