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