diff src/impl/vm_impl.cbc @ 205:2ecf1e09e981

allocuvm_loop and return
author tobaru
date Fri, 24 Jan 2020 14:45:38 +0900
parents 6e03cee9733e
children 0f1700bd5cff
line wrap: on
line diff
--- a/src/impl/vm_impl.cbc	Thu Jan 23 21:24:30 2020 +0900
+++ b/src/impl/vm_impl.cbc	Fri Jan 24 14:45:38 2020 +0900
@@ -26,6 +26,8 @@
     vm_impl->sz  = 0;
     vm_impl->loaduvm_ptesize_check = C_loaduvm_ptesize_checkvm_impl;
     vm_impl->loaduvm_loop = C_loaduvm_loopvm_impl;
+    vm_impl->allocuvm_check_newsz = C_allocuvm_check_newszvm_impl;
+    vm_impl->allocuvm_loop = C_allocuvm_loopvm_impl;
     vm->init_vmm = C_init_vmmvm_impl;
     vm->kpt_freerange = C_kpt_freerangevm_impl;
     vm->kpt_alloc = C_kpt_allocvm_impl;
@@ -84,7 +86,7 @@
 }
 
 typedef struct proc proc;
-__code switchuvmvm_impl(struct vm_impl* vm ,struct proc* p, __code next(...)) { //:skip
+__code switchuvmvm_impl(struct vm_impl* vm , struct proc* p, __code next(...)) { //:skip
 
     goto next(...);
 }
@@ -106,7 +108,7 @@
 
 __code allocuvmvm_impl(struct vm_impl* vm, pde_t* pgdir, uint oldsz, uint newsz, __code next(...)) {
 
-    goto next(...);
+    goto allocuvm_check_newszvm_impl(vm, pgdir, oldsz, newsz, next(...));
 }
 
 __code clearpteuvm_impl(struct vm_impl* vm, pde_t* pgdir, char* uva,  __code next(...)) {