]> Zhao Yanbai Git Server - kernel.git/commitdiff
success on bochs
authorAceVest <zhaoyanbai@126.com>
Mon, 28 Jul 2014 15:44:52 +0000 (23:44 +0800)
committerAceVest <zhaoyanbai@126.com>
Mon, 28 Jul 2014 15:44:52 +0000 (23:44 +0800)
bin/shell.c
kernel/exec.c
mm/page.c

index 9631d97ec7beae8976302b321c37cc43ee5d5c13..b3e57248319d0c5917e6b0d7a42f88d762cdfa51 100644 (file)
@@ -22,7 +22,7 @@ int main()
     if(pid > 0)
     {
         int n = 10000000;
-        while(n--);
+        //while(n--);
         printf("parent\n");
         while(1)
         {
index d76a35b8578903d5ef6b63e045343d58f34812e6..d6ffd26f73d09ad7b11a88f737cfb7628ee360ab 100644 (file)
@@ -43,8 +43,7 @@ void put_paging(unsigned long vaddr, unsigned long paddr, unsigned long flags)
         assert(page_table != 0);
     }
 
-
-    page_dir[npde] = (unsigned long) page_table | flags;
+    page_dir[npde] = (unsigned long) page_table | flags | PAGE_P | PAGE_WR;
     page_table = pa2va(page_table);
     page_table[npte] = paddr | flags;
 }
@@ -115,7 +114,7 @@ int sysc_exec(const char *path, char *const argv[])
     disable_irq();
 
     pt_regs_t *regs = ((pt_regs_t *)(TASK_SIZE+(unsigned long)current)) - 1;
-#if 0
+#if 1
     memset((void*)regs, 0, sizeof(pt_regs_t));
     regs->ss    = SELECTOR_USER_DS;
     regs->ds    = SELECTOR_USER_DS;
index fa4b16ea9ba17f7aefc84c7b421159ba37e4955e..3b1b869670e10b009b076db41837556330daf2ab 100644 (file)
--- a/mm/page.c
+++ b/mm/page.c
@@ -19,8 +19,7 @@
 
 void do_no_page(void *addr)
 {
-    //printk("%s   addr %08x\n", __func__, (unsigned long)addr);
-
+    printk("%s   addr %08x\n", __func__, (unsigned long)addr);
 #if 1
     pde_t *page_dir = (pde_t *)current->cr3;
     pte_t *page_tbl = 0;
@@ -79,6 +78,7 @@ void do_no_page(void *addr)
 
 void do_wp_page(void *addr)
 {
+    printk("%s   addr %08x\n", __func__, (unsigned long)addr);
 #if 1
     int npde = get_npd(addr);
     int npte = get_npt(addr);