diff --git a/nucleus/src/arch/aarch64/memory/addr.rs b/nucleus/src/arch/aarch64/memory/addr.rs index 141d8bd..13b93c9 100644 --- a/nucleus/src/arch/aarch64/memory/addr.rs +++ b/nucleus/src/arch/aarch64/memory/addr.rs @@ -2,6 +2,7 @@ * SPDX-License-Identifier: BlueOak-1.0.0 * Copyright (c) Berkus Decker */ +use core::ops::{Shl, Shr}; use { crate::mm::{align_down, align_up}, bit_field::BitField, @@ -489,6 +490,22 @@ impl Sub for PhysAddr { } } +impl Shr for PhysAddr { + type Output = PhysAddr; + + fn shr(self, shift: usize) -> Self::Output { + PhysAddr::new(self.0 >> shift) + } +} + +impl Shl for PhysAddr { + type Output = PhysAddr; + + fn shl(self, shift: usize) -> Self::Output { + PhysAddr::new(self.0 << shift) + } +} + #[cfg(test)] mod tests { // use super::*;