refactor: move Mapping<F> to types crate with VirtualAddress/PhysicalAddress newtypes, rename MapFlags to Sv39Flags
This commit is contained in:
@@ -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),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user