From 74d4bc0af1d2f22105bf3c00efcb85613d59cc19 Mon Sep 17 00:00:00 2001
From: Yuri Kunde Schlesner <yuriks@yuriks.net>
Date: Wed, 5 Aug 2015 21:26:52 -0300
Subject: Kernel: Add more infrastructure to support different memory layouts

This adds some structures necessary to support multiple memory regions
in the future. It also adds support for different system memory types
and the new linear heap mapping at 0x30000000.
---
 src/core/hle/kernel/kernel.cpp | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

(limited to 'src/core/hle/kernel/kernel.cpp')

diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index 5711c0405c..7a401a965d 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -7,11 +7,14 @@
 #include "common/assert.h"
 #include "common/logging/log.h"
 
+#include "core/hle/config_mem.h"
 #include "core/hle/kernel/kernel.h"
-#include "core/hle/kernel/resource_limit.h"
+#include "core/hle/kernel/memory.h"
 #include "core/hle/kernel/process.h"
+#include "core/hle/kernel/resource_limit.h"
 #include "core/hle/kernel/thread.h"
 #include "core/hle/kernel/timer.h"
+#include "core/hle/shared_page.h"
 
 namespace Kernel {
 
@@ -119,6 +122,13 @@ void HandleTable::Clear() {
 
 /// Initialize the kernel
 void Init() {
+    ConfigMem::Init();
+    SharedPage::Init();
+
+    // TODO(yuriks): The memory type parameter needs to be determined by the ExHeader field instead
+    // For now it defaults to the one with a largest allocation to the app
+    Kernel::MemoryInit(2); // Allocates 96MB to the application
+
     Kernel::ResourceLimitsInit();
     Kernel::ThreadingInit();
     Kernel::TimersInit();
@@ -131,11 +141,14 @@ void Init() {
 
 /// Shutdown the kernel
 void Shutdown() {
+    g_handle_table.Clear(); // Free all kernel objects
+
     Kernel::ThreadingShutdown();
+    g_current_process = nullptr;
+
     Kernel::TimersShutdown();
     Kernel::ResourceLimitsShutdown();
-    g_handle_table.Clear(); // Free all kernel objects
-    g_current_process = nullptr;
+    Kernel::MemoryShutdown();
 }
 
 } // namespace
-- 
cgit v1.2.3-70-g09d2