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

@@ -91,7 +91,7 @@ static USER_EXIT_PROGRAM: [u8; 12] = [
0x6f, 0xf0, 0xdf, 0xff, // j -4
];
const USER_VA: usize = 0x10000;
const USER_VA_RAW: usize = 0x10000;
fn userspace_demo(uart: &Uart, kernel_pt: &mmu::PageTable) {
uart.write_str("k-os: --- userspace demo ---\n");
@@ -105,7 +105,12 @@ fn userspace_demo(uart: &Uart, kernel_pt: &mmu::PageTable) {
);
}
let user_pt = mmu::create_user_page_table(kernel_pt, program_page, 1, USER_VA);
let user_pt = mmu::create_user_page_table(
kernel_pt,
types::address::PhysicalAddress::from_raw(program_page),
1,
types::address::VirtualAddress::from_raw(USER_VA_RAW),
);
uart.write_str("k-os: user page table created, entering U-mode\n");
@@ -115,7 +120,7 @@ fn userspace_demo(uart: &Uart, kernel_pt: &mmu::PageTable) {
unsafe { core::arch::asm!("mv {0}, sp", out(reg) kernel_sp) };
trap::set_kernel_stack(kernel_sp);
let user_stack = USER_VA - 8;
let user_stack = USER_VA_RAW - 8;
unsafe {
core::arch::asm!(
"csrc sstatus, {spp}",
@@ -125,7 +130,7 @@ fn userspace_demo(uart: &Uart, kernel_pt: &mmu::PageTable) {
"sret",
spp = in(reg) 1usize << 8,
spie = in(reg) 1usize << 5,
entry = in(reg) USER_VA,
entry = in(reg) USER_VA_RAW,
stack = in(reg) user_stack,
options(noreturn),
);