]> Zhao Yanbai Git Server - kernel.git/commitdiff
success on qemu
authorAceVest <zhaoyanbai@126.com>
Mon, 28 Jul 2014 16:36:51 +0000 (00:36 +0800)
committerAceVest <zhaoyanbai@126.com>
Mon, 28 Jul 2014 16:36:51 +0000 (00:36 +0800)
kernel/syscall.c
mm/page.c

index a864bad6c0b069143b1d7601467316c01e6cb63c..c60d5acc0275a6391e8fd578e02fa61eb89a63ad 100644 (file)
@@ -59,7 +59,11 @@ int sysc_test()
 int sysc_debug(unsigned int v)
 {
     static unsigned int cnt=0;
-    printl(MPL_DEBUG, "Task Debug Syscall %u Value %08x", cnt++, v);
+#if 1
+    printl(MPL_DEBUG, "task debug syscall %u", cnt++);
+#else
+    printl(MPL_DEBUG, "task debug syscall %u value %08x", cnt++, v);
+#endif
 }
 
 void init_sysc_handler_table()
index 3b1b869670e10b009b076db41837556330daf2ab..22ecae8d529d4606c0d117af95e8a095681d4dfe 100644 (file)
--- a/mm/page.c
+++ b/mm/page.c
@@ -79,6 +79,10 @@ void do_no_page(void *addr)
 void do_wp_page(void *addr)
 {
     printk("%s   addr %08x\n", __func__, (unsigned long)addr);
+    if((unsigned long) addr >= PAGE_OFFSET)
+    {
+        panic("%s invalid addr", __func__);
+    }
 #if 1
     int npde = get_npd(addr);
     int npte = get_npt(addr);
@@ -86,6 +90,9 @@ void do_wp_page(void *addr)
     pde_t *page_dir = (pde_t *)current->cr3;
     pte_t *page_tbl = pa2va(PAGE_ALIGN(page_dir[npde]));
 
+    //printk("%s   addr %08x dirent %08x\n", __func__, (unsigned long)addr, page_dir[npde]);
+    //assert(page_dir[npde] != 0);
+
     unsigned long wp_pa_addr = PAGE_ALIGN(page_tbl[npte]);
    
     page_t *page = pa2page(wp_pa_addr);
@@ -104,6 +111,11 @@ void do_wp_page(void *addr)
     }
 
     page_tbl[npte] |= PAGE_WR;
+#if 0
+    page_tbl[npte] |= PAGE_US;
+    page_dir[npde] |= PAGE_WR;
+    page_dir[npde] |= PAGE_US;
+#endif
 
     load_cr3(current);