Add translation table library
Add AArch64 MMU handler component.
Signed-off-by: Imre Kis <imre.kis@arm.com>
Change-Id: Ief463cb783e1b8f825d8be37bb42988992879e68
diff --git a/src/kernel_space.rs b/src/kernel_space.rs
new file mode 100644
index 0000000..320d16e
--- /dev/null
+++ b/src/kernel_space.rs
@@ -0,0 +1,31 @@
+// SPDX-FileCopyrightText: Copyright 2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
+// SPDX-License-Identifier: MIT OR Apache-2.0
+
+//! Module for converting addresses between kernel virtual address space to physical address space
+
+pub struct KernelSpace {}
+
+#[cfg(not(test))]
+impl KernelSpace {
+ /// Kernel virtual address to physical address
+ pub const fn kernel_to_pa(kernel_address: u64) -> u64 {
+ kernel_address & 0x0000_000f_ffff_ffff
+ }
+
+ /// Physical address to kernel virtual address
+ pub const fn pa_to_kernel(pa: u64) -> u64 {
+ // TODO: make this consts assert_eq!(pa & 0xffff_fff0_0000_0000, 0);
+ pa | 0xffff_fff0_0000_0000
+ }
+}
+
+#[cfg(test)]
+impl KernelSpace {
+ pub const fn kernel_to_pa(kernel_address: u64) -> u64 {
+ kernel_address
+ }
+
+ pub const fn pa_to_kernel(pa: u64) -> u64 {
+ pa
+ }
+}