changeset 306:97c6157bac16

fix_goto_switchuvm_check_pgdirvm_impl
author anatofuz
date Wed, 05 Feb 2020 15:22:41 +0900
parents 9fa2e66bc9ed
children 75dda11aaa73
files src/impl/vm_impl.cbc src/impl/vm_impl_private.cbc src/proc.cbc
diffstat 3 files changed, 6 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/src/impl/vm_impl.cbc	Wed Feb 05 14:11:58 2020 +0900
+++ b/src/impl/vm_impl.cbc	Wed Feb 05 15:22:41 2020 +0900
@@ -144,8 +144,9 @@
 
 typedef struct proc proc;
 __code switchuvmvm_impl(struct vm_impl* vm , struct proc* p, __code next(...)) { //:skip
-
-    goto switchuvm_check_pgdirvm_impl(...);
+    Gearef(cbc_context, vm_impl)->p = p;
+    Gearef(cbc_context, vm_impl)->next = next;
+    goto switchuvm_check_pgdirvm_impl(vm, p, next(...));
 }
 
 __code init_inituvmvm_impl(struct vm_impl* vm, pde_t* pgdir, char* init, uint sz, __code next(...)) { 
--- a/src/impl/vm_impl_private.cbc	Wed Feb 05 14:11:58 2020 +0900
+++ b/src/impl/vm_impl_private.cbc	Wed Feb 05 15:22:41 2020 +0900
@@ -10,8 +10,6 @@
 */
 
 __code loaduvm_ptesize_checkvm_impl(struct vm_impl* vm_impl,char* addr,  __code next(int ret, ...)) {
-    //char* addr = vm_impl->addr;
-
     if ((uint) addr %PTE_SZ != 0) {
        // goto panic 
     }
@@ -20,11 +18,6 @@
 }
 
 __code loaduvm_loopvm_impl(struct vm_impl* vm_impl, uint i, uint sz,__code next(int ret, ...)) {
-/*
-    uint i = vm_impl->i;
-    uint sz = vm_impl->sz;
-*/
-
     if (i < sz) {
         goto loaduvm_check_pgdir(vm_impl, next(ret, ...));  
     } 
@@ -63,14 +56,6 @@
 
 
 __code loaduvm_check_pgdir(struct vm_impl* vm_impl, pte_t* pte, pde_t* pgdir, uint i, char* addr, uint pa, __code next(int ret, ...)) {
-/*
-    pte_t* pte = vm_impl->pte;
-    pde_t* pgdir = vm_impl->pgdir;
-    uint i = vm_impl->i;
-    char* addr = vm_impl->addr;
-    uint pa = vm_impl->pa;
-*/
-
     if ((pte = walkpgdir(pgdir, addr + i, 0)) == 0) {
         // goto panic
     } 
@@ -85,14 +70,6 @@
 }
 
 __code loaduvm_check_PTE_SZ(struct vm_impl* vm_impl, uint sz, uint i, uint n, struct inode* ip, uint pa, uint offset, __code next(int ret, ...)) {
-/*
-    uint sz = vm_impl->sz;
-    uint i = vm_impl->i;
-    uint n = vm_impl->n;
-    struct inode* ip = vm_impl->ip;
-    uint pa = vm_impl->pa;
-    uint offset = vm_impl->offset;
-*/
     
     if (sz - i < PTE_SZ) {
         n = sz - i;
--- a/src/proc.cbc	Wed Feb 05 14:11:58 2020 +0900
+++ b/src/proc.cbc	Wed Feb 05 15:22:41 2020 +0900
@@ -183,7 +183,9 @@
 __ncode cbc_switchuvm_dummy(struct Context* cbc_context, struct proc* proc){
 
     struct vm* vm = createvm_impl(cbc_context);
-    Gearef(cbc_context, vm)->vm = (union Data*) vm;
+    //Gearef(cbc_context, vm)->vm = (union Data*) vm;
+    Gearef(cbc_context, vm)->p = proc;
+    Gearef(cbc_context, vm)->next = C_vm_void_ret ;
     goto meta(cbc_context, vm->switchuvm);
 }