From a913414c7f25d49cccb85b0bccb9bedbd0ba7d03 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 28 Mar 2026 22:00:43 +0100 Subject: [PATCH] rmm: Nicer formatting of unsafe blocks --- rmm/src/arch/aarch64.rs | 18 ++++++++---------- rmm/src/arch/riscv64/sv39.rs | 24 +++++++++--------------- rmm/src/arch/riscv64/sv48.rs | 24 +++++++++--------------- rmm/src/arch/x86_64.rs | 16 +++++----------- 4 files changed, 31 insertions(+), 51 deletions(-) diff --git a/rmm/src/arch/aarch64.rs b/rmm/src/arch/aarch64.rs index 0192d640e7..8e352320e2 100644 --- a/rmm/src/arch/aarch64.rs +++ b/rmm/src/arch/aarch64.rs @@ -68,18 +68,16 @@ impl Arch for AArch64Arch { #[inline(always)] unsafe fn table(table_kind: TableKind) -> PhysicalAddress { - unsafe { - let address: usize; - match table_kind { - TableKind::User => { - asm!("mrs {0}, ttbr0_el1", out(reg) address); - } - TableKind::Kernel => { - asm!("mrs {0}, ttbr1_el1", out(reg) address); - } + let address: usize; + match table_kind { + TableKind::User => { + unsafe { asm!("mrs {0}, ttbr0_el1", out(reg) address) }; + } + TableKind::Kernel => { + unsafe { asm!("mrs {0}, ttbr1_el1", out(reg) address) }; } - PhysicalAddress::new(address) } + PhysicalAddress::new(address) } #[inline(always)] diff --git a/rmm/src/arch/riscv64/sv39.rs b/rmm/src/arch/riscv64/sv39.rs index 1c9fe15b6d..7cd3da0181 100644 --- a/rmm/src/arch/riscv64/sv39.rs +++ b/rmm/src/arch/riscv64/sv39.rs @@ -38,34 +38,28 @@ impl Arch for RiscV64Sv39Arch { #[inline(always)] unsafe fn invalidate(address: VirtualAddress) { - unsafe { - asm!("sfence.vma {}", in(reg) address.data()); - } + unsafe { asm!("sfence.vma {}", in(reg) address.data()) }; } #[inline(always)] unsafe fn invalidate_all() { - unsafe { - asm!("sfence.vma"); - } + unsafe { asm!("sfence.vma") }; } #[inline(always)] unsafe fn table(_table_kind: TableKind) -> PhysicalAddress { - unsafe { - let satp: usize; - asm!("csrr {0}, satp", out(reg) satp); - PhysicalAddress::new( - (satp & Self::ENTRY_ADDRESS_MASK) << Self::PAGE_SHIFT, // Convert from PPN - ) - } + let satp: usize; + unsafe { asm!("csrr {0}, satp", out(reg) satp) }; + PhysicalAddress::new( + (satp & Self::ENTRY_ADDRESS_MASK) << Self::PAGE_SHIFT, // Convert from PPN + ) } #[inline(always)] unsafe fn set_table(_table_kind: TableKind, address: PhysicalAddress) { - unsafe { - let satp = (8 << 60) | // Sv39 MODE + let satp = (8 << 60) | // Sv39 MODE (address.data() >> Self::PAGE_SHIFT); // Convert to PPN (TODO: ensure alignment) + unsafe { asm!("csrw satp, {0}", in(reg) satp); Self::invalidate_all(); } diff --git a/rmm/src/arch/riscv64/sv48.rs b/rmm/src/arch/riscv64/sv48.rs index d036bc2a32..c2b15bee39 100644 --- a/rmm/src/arch/riscv64/sv48.rs +++ b/rmm/src/arch/riscv64/sv48.rs @@ -34,34 +34,28 @@ impl Arch for RiscV64Sv48Arch { #[inline(always)] unsafe fn invalidate(address: VirtualAddress) { - unsafe { - asm!("sfence.vma {}", in(reg) address.data()); - } + unsafe { asm!("sfence.vma {}", in(reg) address.data()) }; } #[inline(always)] unsafe fn invalidate_all() { - unsafe { - asm!("sfence.vma"); - } + unsafe { asm!("sfence.vma") }; } #[inline(always)] unsafe fn table(_table_kind: TableKind) -> PhysicalAddress { - unsafe { - let satp: usize; - asm!("csrr {0}, satp", out(reg) satp); - PhysicalAddress::new( - (satp & Self::ENTRY_ADDRESS_MASK) << Self::PAGE_SHIFT, // Convert from PPN - ) - } + let satp: usize; + unsafe { asm!("csrr {0}, satp", out(reg) satp) }; + PhysicalAddress::new( + (satp & Self::ENTRY_ADDRESS_MASK) << Self::PAGE_SHIFT, // Convert from PPN + ) } #[inline(always)] unsafe fn set_table(_table_kind: TableKind, address: PhysicalAddress) { - unsafe { - let satp = (9 << 60) | // Sv48 MODE + let satp = (9 << 60) | // Sv48 MODE (address.data() >> Self::PAGE_SHIFT); // Convert to PPN (TODO: ensure alignment) + unsafe { asm!("csrw satp, {0}", in(reg) satp); Self::invalidate_all(); } diff --git a/rmm/src/arch/x86_64.rs b/rmm/src/arch/x86_64.rs index b6a3cdd61a..7b3d8ad95c 100644 --- a/rmm/src/arch/x86_64.rs +++ b/rmm/src/arch/x86_64.rs @@ -32,25 +32,19 @@ impl Arch for X8664Arch { #[inline(always)] unsafe fn invalidate(address: VirtualAddress) { - unsafe { - asm!("invlpg [{0}]", in(reg) address.data()); - } + unsafe { asm!("invlpg [{0}]", in(reg) address.data()) }; } #[inline(always)] unsafe fn table(_table_kind: TableKind) -> PhysicalAddress { - unsafe { - let address: usize; - asm!("mov {0}, cr3", out(reg) address); - PhysicalAddress::new(address) - } + let address: usize; + unsafe { asm!("mov {0}, cr3", out(reg) address) }; + PhysicalAddress::new(address) } #[inline(always)] unsafe fn set_table(_table_kind: TableKind, address: PhysicalAddress) { - unsafe { - asm!("mov cr3, {0}", in(reg) address.data()); - } + unsafe { asm!("mov cr3, {0}", in(reg) address.data()) }; } fn virt_is_valid(address: VirtualAddress) -> bool {