From f0eea478960ff65e69c9c8b6377265b60cfd9a0a Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Fri, 12 Sep 2025 18:33:16 +0200 Subject: [PATCH] Fix compilation with lpss_debug feature enabled --- src/arch/x86_shared/device/serial.rs | 29 ++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/arch/x86_shared/device/serial.rs b/src/arch/x86_shared/device/serial.rs index 1a487dc48a..b2e13ee3ea 100644 --- a/src/arch/x86_shared/device/serial.rs +++ b/src/arch/x86_shared/device/serial.rs @@ -21,23 +21,28 @@ pub unsafe fn init() { let address = crate::PHYS_OFFSET + 0xFE032000; { + use rmm::PageFlags; + use crate::{ - memory::{Frame, PhysicalAddress}, - paging::{entry::EntryFlags, ActivePageTable, Page, VirtualAddress}, + memory::{KernelMapper, PhysicalAddress}, + paging::VirtualAddress, }; - let mut active_table = ActivePageTable::new(); - let page = Page::containing_address(VirtualAddress::new(address)); - let frame = Frame::containing(PhysicalAddress::new(address - crate::PHYS_OFFSET)); - let result = active_table.map_to( - page, - frame, - EntryFlags::PRESENT | EntryFlags::WRITABLE | EntryFlags::NO_EXECUTE, - ); - result.flush(&mut active_table); + let mut mapper = KernelMapper::lock(); + let virt = VirtualAddress::new(address); + let phys = PhysicalAddress::new(address - crate::PHYS_OFFSET); + let flags = PageFlags::new().write(true).execute(false); + unsafe { + mapper + .get_mut() + .unwrap() + .map_phys(virt, phys, flags) + .expect("failed to map frame") + .flush(); + } } - let lpss = SerialPort::>::new(crate::PHYS_OFFSET + 0xFE032000); + let lpss = unsafe { SerialPort::>::new(crate::PHYS_OFFSET + 0xFE032000) }; lpss.init(); *LPSS.lock() = Some(lpss);