refactor: move Mapping<F> to types crate with VirtualAddress/PhysicalAddress newtypes, rename MapFlags to Sv39Flags

This commit is contained in:
2026-10-18 02:45:53 +02:00
parent 7df3034fca
commit 5c29c0845d
6 changed files with 57 additions and 57 deletions

View File

@@ -2,7 +2,7 @@ use domain::memory::MemoryRegion;
use domain::process::MAX_PROCESSES;
use platform::Platform;
use types::{
address::{EntryPoint, PhysicalAddress, StackPointer},
address::{EntryPoint, PhysicalAddress, StackPointer, VirtualAddress},
bounded::PageCount,
id::{CoreId, IrqId, ProcessId},
permission::{Permission, PermissionSet},
@@ -34,7 +34,12 @@ impl RiscVPlatform {
let idx = pid.raw() as usize;
if self.page_tables[idx] == 0 {
let kernel_pt = unsafe { &*(self.page_tables[0] as *const mmu::PageTable) };
let user_pt = mmu::create_user_page_table(kernel_pt, 0, 0, 0x10000);
let user_pt = mmu::create_user_page_table(
kernel_pt,
PhysicalAddress::from_raw(0),
0,
VirtualAddress::from_raw(0x10000),
);
self.page_tables[idx] = user_pt as *const mmu::PageTable as usize;
}
unsafe { &mut *(self.page_tables[idx] as *mut mmu::PageTable) }
@@ -46,10 +51,10 @@ impl Platform for RiscVPlatform {
let pt = self.ensure_page_table(process);
for region in regions {
mmu::map(pt, mmu::Mapping {
va: region.base().raw(),
pa: region.base().raw(),
va: VirtualAddress::from_raw(region.base().raw()),
pa: region.base(),
pages: region.size().value() as usize,
flags: mmu::MapFlags::user(true, true, true),
flags: mmu::Sv39Flags::user(true, true, true),
});
}
}
@@ -111,10 +116,10 @@ impl Platform for RiscVPlatform {
) {
let pt = self.ensure_page_table(process);
mmu::map(pt, mmu::Mapping {
va: base.raw(),
pa: base.raw(),
va: VirtualAddress::from_raw(base.raw()),
pa: base,
pages: size.value() as usize,
flags: mmu::MapFlags::user(
flags: mmu::Sv39Flags::user(
permissions.allows(Permission::Read),
permissions.allows(Permission::Write),
permissions.allows(Permission::Execute),