blob: 320d16e4298cb066552bb1020a3412f33fe58d0c [file] [log] [blame]
Imre Kis703482d2023-11-30 15:51:26 +01001// SPDX-FileCopyrightText: Copyright 2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
2// SPDX-License-Identifier: MIT OR Apache-2.0
3
4//! Module for converting addresses between kernel virtual address space to physical address space
5
6pub struct KernelSpace {}
7
8#[cfg(not(test))]
9impl KernelSpace {
10 /// Kernel virtual address to physical address
11 pub const fn kernel_to_pa(kernel_address: u64) -> u64 {
12 kernel_address & 0x0000_000f_ffff_ffff
13 }
14
15 /// Physical address to kernel virtual address
16 pub const fn pa_to_kernel(pa: u64) -> u64 {
17 // TODO: make this consts assert_eq!(pa & 0xffff_fff0_0000_0000, 0);
18 pa | 0xffff_fff0_0000_0000
19 }
20}
21
22#[cfg(test)]
23impl KernelSpace {
24 pub const fn kernel_to_pa(kernel_address: u64) -> u64 {
25 kernel_address
26 }
27
28 pub const fn pa_to_kernel(pa: u64) -> u64 {
29 pa
30 }
31}