From 463a20017f4ef5d21d2b8e37dfbae43529a1c40c Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Sun, 30 Aug 2026 07:44:40 +0800 Subject: [PATCH] =?UTF-8?q?fix(kernel):=20save=5Fpt=5Frange=20=E7=9A=84=20?= =?UTF-8?q?c.Set=20=E6=94=B9=20c.Set(c.Deref(save=5Fcount))=20=E5=86=99?= =?UTF-8?q?=E6=89=80=E6=8C=87=E5=9C=B0=E5=9D=80=E8=80=8C=E9=9D=9E=E6=8C=87?= =?UTF-8?q?=E9=92=88=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VKernel/Kernel/paging/paging.vp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/VKernel/Kernel/paging/paging.vp b/VKernel/Kernel/paging/paging.vp index 5c43e4c..ad3f682 100644 --- a/VKernel/Kernel/paging/paging.vp +++ b/VKernel/Kernel/paging/paging.vp @@ -422,7 +422,8 @@ def clone_for_process(isolate_vaddr: t.CUInt64T) -> t.CUInt64T: def save_pt_range(vaddr_start: t.CUInt64T, vaddr_end: t.CUInt64T, save_buf: t.CUInt64T | t.CPtr, save_count: t.CUInt32T | t.CPtr) -> t.CInt: global pml4 if not pml4: return -1 - c.Set(save_count, t.CUInt32T(0)) + # c.Set(a,b)=a=b(改指针变量本身);写所指地址必须 c.Set(c.Deref(a),b) + c.Set(c.Deref(save_count), t.CUInt32T(0)) va: t.CUInt64T = vaddr_start & ~t.CUInt64T(0xFFF) while va < vaddr_end: pml4_idx: t.CUInt64T = (va >> 39) & 0x1FF @@ -440,7 +441,7 @@ def save_pt_range(vaddr_start: t.CUInt64T, vaddr_end: t.CUInt64T, save_buf: t.CU entry_ptr: t.CUInt64T | t.CPtr = save_buf + t.CUInt64T(saved) * 16 c.DerefAs(entry_ptr, va) c.DerefAs(entry_ptr + 8, pt_.entries[pt_idx]) - c.Set(save_count, t.CUInt32T(saved + 1)) + c.Set(c.Deref(save_count), t.CUInt32T(saved + 1)) va += 0x1000 return 0