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
+    }
+}