vmbase: Move page table to aarch64
Virtual memory management is highly architecture specific process, due to its nature we decided to move this code to platform specific code.
Bug: 362733888
Test: m libvmbase
Change-Id: I416b5298c22bad61cfbab2565d34eb7ad53b82b7
diff --git a/libs/libvmbase/src/arch/aarch64.rs b/libs/libvmbase/src/arch/aarch64.rs
index 86a3a03..905c518 100644
--- a/libs/libvmbase/src/arch/aarch64.rs
+++ b/libs/libvmbase/src/arch/aarch64.rs
@@ -15,6 +15,7 @@
//! Wrappers of assembly calls.
pub mod layout;
+pub mod page_table;
pub mod platform;
/// Reads a value from a system register.
diff --git a/libs/libvmbase/src/memory/page_table.rs b/libs/libvmbase/src/arch/aarch64/page_table.rs
similarity index 98%
rename from libs/libvmbase/src/memory/page_table.rs
rename to libs/libvmbase/src/arch/aarch64/page_table.rs
index 62b52ae..5f3ed0a 100644
--- a/libs/libvmbase/src/memory/page_table.rs
+++ b/libs/libvmbase/src/arch/aarch64/page_table.rs
@@ -23,7 +23,7 @@
use core::result;
/// Software bit used to indicate a device that should be lazily mapped.
-pub(super) const MMIO_LAZY_MAP_FLAG: Attributes = Attributes::SWFLAG_0;
+pub const MMIO_LAZY_MAP_FLAG: Attributes = Attributes::SWFLAG_0;
/// We assume that MAIR_EL1.Attr0 = "Device-nGnRE memory" (0b0000_0100)
const DEVICE_NGNRE: Attributes = Attributes::ATTRIBUTE_INDEX_0;
diff --git a/libs/libvmbase/src/memory.rs b/libs/libvmbase/src/memory.rs
index 9153706..6058639 100644
--- a/libs/libvmbase/src/memory.rs
+++ b/libs/libvmbase/src/memory.rs
@@ -16,20 +16,22 @@
mod dbm;
mod error;
-mod page_table;
mod shared;
mod stack;
mod tracker;
mod util;
pub use error::MemoryTrackerError;
-pub use page_table::PageTable;
pub use shared::MemoryRange;
pub use tracker::{
deactivate_dynamic_page_tables, init_shared_pool, map_data, map_data_noflush, map_device,
map_image_footer, map_rodata, map_rodata_outside_main_memory, resize_available_memory,
unshare_all_memory, unshare_all_mmio_except_uart, unshare_uart,
};
+
+#[cfg(target_arch = "aarch64")]
+pub use crate::arch::aarch64::page_table::PageTable;
+
pub use util::{
flush, flushed_zeroize, page_4kb_of, PAGE_SIZE, SIZE_128KB, SIZE_16KB, SIZE_2MB, SIZE_4KB,
SIZE_4MB, SIZE_64KB,
diff --git a/libs/libvmbase/src/memory/dbm.rs b/libs/libvmbase/src/memory/dbm.rs
index de43403..b68b840 100644
--- a/libs/libvmbase/src/memory/dbm.rs
+++ b/libs/libvmbase/src/memory/dbm.rs
@@ -14,7 +14,7 @@
//! Hardware management of the access flag and dirty state.
-use super::page_table::PageTable;
+use crate::arch::aarch64::page_table::PageTable;
use crate::arch::flush_region;
use crate::{dsb, isb, read_sysreg, tlbi, write_sysreg};
use aarch64_paging::paging::{Attributes, Descriptor, MemoryRegion};
diff --git a/libs/libvmbase/src/memory/tracker.rs b/libs/libvmbase/src/memory/tracker.rs
index 3d1561f..a1caced 100644
--- a/libs/libvmbase/src/memory/tracker.rs
+++ b/libs/libvmbase/src/memory/tracker.rs
@@ -16,8 +16,8 @@
use super::dbm::{flush_dirty_range, mark_dirty_block, set_dbm_enabled};
use super::error::MemoryTrackerError;
-use super::page_table::{PageTable, MMIO_LAZY_MAP_FLAG};
use super::shared::{SHARED_MEMORY, SHARED_POOL};
+use crate::arch::aarch64::page_table::{PageTable, MMIO_LAZY_MAP_FLAG};
use crate::dsb;
use crate::layout;
use crate::memory::shared::{MemoryRange, MemorySharer, MmioSharer};