From 6f049d9ca275312c4d6b7f8d13099a76c2cd1878 Mon Sep 17 00:00:00 2001 From: pointer-to-bios Date: Mon, 15 Jan 2024 18:20:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=A4=9A=E9=A1=B5=E6=98=A0?= =?UTF-8?q?=E5=B0=84=E6=97=B6=E5=8F=AA=E6=98=A0=E5=B0=84=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E9=A1=B5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/kernel/arch/x86_64/memm_x86_64.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/kernel/arch/x86_64/memm_x86_64.c b/src/kernel/arch/x86_64/memm_x86_64.c index 6112c03..cd86dba 100644 --- a/src/kernel/arch/x86_64/memm_x86_64.c +++ b/src/kernel/arch/x86_64/memm_x86_64.c @@ -110,17 +110,19 @@ bool memm_map_pageframes_to( return false; while (size != 0) { + // 这是当前需要映射的页的内存对齐(或者说是当前映射的页的大小) memm_page_size align = memm_get_page_align(physical); if (align == MEMM_PAGE_SIZE_1G) { if (size < (usize)align * MEMM_PAGE_SIZE / 2) - align = MEMM_2M_ALIGN_MASK; + align = MEMM_2M_ALIGN_MASK + 1; } if (align == MEMM_PAGE_SIZE_2M) { if (size < (usize)align * MEMM_PAGE_SIZE / 2) - align = MEMM_4K_ALIGN_MASK; + align = MEMM_4K_ALIGN_MASK + 1; } + align /= MEMM_PAGE_SIZE; map_pageframe_to(target, physical, user, write, align);