[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH 07/11] kernel2: Kernel-Kontext erstellen



! mmc_create_kernel_kontext: Da Paging ja schon läuft einfach die Aktuelle
  Page-Map nehmen und daraus einen mm-Kontext erstellen

Signed-off-by: Andreas Freimuth <m.nemo@xxxxxxx>
---
 src/kernel2/src/arch/amd64/mm/mm_context.c |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/kernel2/src/arch/amd64/mm/mm_context.c b/src/kernel2/src/arch/amd64/mm/mm_context.c
index 5438e78..d21b1db 100644
--- a/src/kernel2/src/arch/amd64/mm/mm_context.c
+++ b/src/kernel2/src/arch/amd64/mm/mm_context.c
@@ -111,15 +111,20 @@ mmc_context_t mmc_create()
 }
 
 /**
- * Erstellt einen neuen MM-Kontext (PM) f� Kernel.
+ * Erstellt einen neuen MM-Kontext für den Kernel.
  * Diese Funktion wird nur zur Initialisierung benutzt, solange kein richtiges
- * Paging laeuft. Dies spielt aber bei AMD64 keine Rolle, weil Pagin aktiv sein
- * muss, deshalb wird einfach die normale mmc_create benutzt.
+ * Paging läuft. Dies spielt aber bei AMD64 keine Rolle, weil Paging aktiv sein
+ * muss, deshalb wird einfach die aktuelle Page Map eingetragen.
  */
 mmc_context_t mmc_create_kernel_context()
 {
-    mmc_context_t context = mmc_create();
-    return context;
+    kernel_ctx.version = 1;
+    kernel_ctx.lock = LOCK_UNLOCKED;
+
+    // Die Aktuelle Page Map in den Kernel MM-Kontext übernehmen
+    asm volatile ("mov %%cr3, %0" : "=a"(kernel_ctx.pml4));
+
+    return kernel_ctx;
 }
 
 /**
-- 
1.7.3.4