fix(mm): 修复riscv64启动时的PageFault (#915)

* 修复riscv64启动时的PageFault

* 优化代码结构
This commit is contained in:
MemoryShore
2024-09-06 23:02:50 +08:00
committed by GitHub
parent db7c782a9a
commit a3571c8b79
2 changed files with 19 additions and 21 deletions

View File

@ -807,13 +807,15 @@ impl<Arch: MemoryManagementArch> EntryFlags<Arch> {
/// - prot_flags: 页的保护标志
/// - user: 用户空间是否可访问
pub fn from_prot_flags(prot_flags: ProtFlags, user: bool) -> Self {
let vm_flags = super::VmFlags::from(prot_flags);
// let flags: EntryFlags<Arch> = EntryFlags::new()
// .set_user(user)
// .set_execute(prot_flags.contains(ProtFlags::PROT_EXEC))
// .set_write(prot_flags.contains(ProtFlags::PROT_WRITE));
let flags = Arch::vm_get_page_prot(vm_flags).set_user(user);
return flags;
if Arch::PAGE_FAULT_ENABLED {
let vm_flags = super::VmFlags::from(prot_flags);
Arch::vm_get_page_prot(vm_flags).set_user(user)
} else {
EntryFlags::new()
.set_user(user)
.set_execute(prot_flags.contains(ProtFlags::PROT_EXEC))
.set_write(prot_flags.contains(ProtFlags::PROT_WRITE))
}
}
#[inline(always)]