From 81ff6f13e52d4d633b713ffc23df966faabbf16c Mon Sep 17 00:00:00 2001
From: WangRunji <wangrunji0408@163.com>
Date: Wed, 11 Jul 2018 23:43:28 +0800
Subject: [PATCH] Fix recursive mapping, finish kernel remap.

---
 crate/memory/src/memory_set.rs | 2 +-
 crate/riscv                    | 2 +-
 src/arch/riscv32/memory.rs     | 1 -
 src/arch/riscv32/paging.rs     | 4 ----
 4 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/crate/memory/src/memory_set.rs b/crate/memory/src/memory_set.rs
index 049d0d8..e4bdc84 100644
--- a/crate/memory/src/memory_set.rs
+++ b/crate/memory/src/memory_set.rs
@@ -67,7 +67,7 @@ impl MemoryArea {
             Some(phys_start) => {
                 for page in Page::range_of(self.start_addr, self.end_addr) {
                     let addr = page.start_address();
-                    let target = phys_start + page.start_address() - self.start_addr;
+                    let target = page.start_address() - self.start_addr + phys_start;
                     self.flags.apply(pt.map(addr, target));
                 }
             }
diff --git a/crate/riscv b/crate/riscv
index 1022571..48c7d74 160000
--- a/crate/riscv
+++ b/crate/riscv
@@ -1 +1 @@
-Subproject commit 1022571b07f946add5187f2933f0dabe5819309b
+Subproject commit 48c7d74041c38e4f230df02075ad7519c1bf816d
diff --git a/src/arch/riscv32/memory.rs b/src/arch/riscv32/memory.rs
index fa5ae71..2739e31 100644
--- a/src/arch/riscv32/memory.rs
+++ b/src/arch/riscv32/memory.rs
@@ -39,7 +39,6 @@ fn remap_the_kernel() {
     };
     static mut SPACE: [u8; 0x1000] = [0; 0x1000];
     let mut ms = unsafe { MemorySet::new_from_raw_space(&mut SPACE, kstack) };
-
     ms.push(MemoryArea::new_identity(stext as usize, etext as usize, MemoryAttr::default().execute().readonly(), "text"));
     ms.push(MemoryArea::new_identity(sdata as usize, edata as usize, MemoryAttr::default(), "data"));
     ms.push(MemoryArea::new_identity(srodata as usize, erodata as usize, MemoryAttr::default().readonly(), "rodata"));
diff --git a/src/arch/riscv32/paging.rs b/src/arch/riscv32/paging.rs
index 3504d10..bee2fc0 100644
--- a/src/arch/riscv32/paging.rs
+++ b/src/arch/riscv32/paging.rs
@@ -147,13 +147,9 @@ impl InactivePageTable for InactivePageTable0 {
     fn new_bare() -> Self {
         let frame = Self::alloc_frame().map(|target| Frame::of_addr(PhysAddr::new(target as u32)))
             .expect("failed to allocate frame");
-        debug!("begin");
         active_table().with_temporary_map(&frame, |_, table: &mut RvPageTable| {
-            debug!("begin1");
-
             table.zero();
             table.set_recursive(RECURSIVE_PAGE_PML4, frame.clone());
-            debug!("begin2");
         });
         InactivePageTable0 { p2_frame: frame }
     }