From c462545bfb182689c12f42468904e400f350a59e Mon Sep 17 00:00:00 2001 From: Yifan Wu Date: Wed, 31 May 2023 21:17:53 +0800 Subject: [PATCH] Fix issue #123 --- os/src/mm/address.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/os/src/mm/address.rs b/os/src/mm/address.rs index 97d29bb..f0ee691 100644 --- a/os/src/mm/address.rs +++ b/os/src/mm/address.rs @@ -107,7 +107,11 @@ impl VirtAddr { } ///`VirtAddr`->`VirtPageNum` pub fn ceil(&self) -> VirtPageNum { - VirtPageNum((self.0 - 1 + PAGE_SIZE) / PAGE_SIZE) + if self.0 == 0 { + VirtPageNum(0) + } else { + VirtPageNum((self.0 - 1 + PAGE_SIZE) / PAGE_SIZE) + } } ///Get page offset pub fn page_offset(&self) -> usize { @@ -136,7 +140,11 @@ impl PhysAddr { } ///`PhysAddr`->`PhysPageNum` pub fn ceil(&self) -> PhysPageNum { - PhysPageNum((self.0 - 1 + PAGE_SIZE) / PAGE_SIZE) + if self.0 == 0 { + PhysPageNum(0) + } else { + PhysPageNum((self.0 - 1 + PAGE_SIZE) / PAGE_SIZE) + } } ///Get page offset pub fn page_offset(&self) -> usize {