From d3f561d21459ba999f889ab4b755e9f2e3b07063 Mon Sep 17 00:00:00 2001 From: Berkus Decker Date: Sun, 13 Dec 2020 22:30:51 +0200 Subject: [PATCH] Implement shifts for PhysAddr --- nucleus/src/arch/aarch64/memory/addr.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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::*;