Merge changes Iaa2b21f4,I51d8c91d into main
* changes:
vmbase_example: Clarify that PageTable is dropped
Move libs/libvmbase/example/ under guest/
diff --git a/libs/libvmbase/example/Android.bp b/guest/vmbase_example/Android.bp
similarity index 100%
rename from libs/libvmbase/example/Android.bp
rename to guest/vmbase_example/Android.bp
diff --git a/libs/libvmbase/example/idmap.S b/guest/vmbase_example/idmap.S
similarity index 100%
rename from libs/libvmbase/example/idmap.S
rename to guest/vmbase_example/idmap.S
diff --git a/libs/libvmbase/example/image.ld b/guest/vmbase_example/image.ld
similarity index 100%
rename from libs/libvmbase/example/image.ld
rename to guest/vmbase_example/image.ld
diff --git a/libs/libvmbase/example/src/exceptions.rs b/guest/vmbase_example/src/exceptions.rs
similarity index 100%
rename from libs/libvmbase/example/src/exceptions.rs
rename to guest/vmbase_example/src/exceptions.rs
diff --git a/libs/libvmbase/example/src/layout.rs b/guest/vmbase_example/src/layout.rs
similarity index 100%
rename from libs/libvmbase/example/src/layout.rs
rename to guest/vmbase_example/src/layout.rs
diff --git a/libs/libvmbase/example/src/main.rs b/guest/vmbase_example/src/main.rs
similarity index 95%
rename from libs/libvmbase/example/src/main.rs
rename to guest/vmbase_example/src/main.rs
index 4d535cc..02c9429 100644
--- a/libs/libvmbase/example/src/main.rs
+++ b/guest/vmbase_example/src/main.rs
@@ -25,10 +25,10 @@
use crate::layout::{boot_stack_range, print_addresses, DEVICE_REGION};
use crate::pci::{check_pci, get_bar_region};
-use aarch64_paging::paging::MemoryRegion;
use aarch64_paging::paging::VirtualAddress;
use aarch64_paging::MapError;
use alloc::{vec, vec::Vec};
+use core::mem;
use core::ptr::addr_of_mut;
use cstr::cstr;
use fdtpci::PciInfo;
@@ -52,16 +52,12 @@
main!(main);
configure_heap!(SIZE_64KB);
-fn init_page_table(dtb: &MemoryRegion, pci_bar_range: &MemoryRegion) -> Result<(), MapError> {
- let mut page_table = PageTable::default();
-
+fn init_page_table(page_table: &mut PageTable) -> Result<(), MapError> {
page_table.map_device(&DEVICE_REGION)?;
page_table.map_code(&text_range().into())?;
page_table.map_rodata(&rodata_range().into())?;
page_table.map_data(&scratch_range().into())?;
page_table.map_data(&boot_stack_range().into())?;
- page_table.map_rodata(dtb)?;
- page_table.map_device(pci_bar_range)?;
info!("Activating IdMap...");
// SAFETY: page_table duplicates the static mappings for everything that the Rust code is
@@ -102,7 +98,11 @@
check_alloc();
- init_page_table(&fdt_region, &get_bar_region(&pci_info)).unwrap();
+ let mut page_table = PageTable::default();
+ page_table.map_rodata(&fdt_region).unwrap();
+ page_table.map_device(&get_bar_region(&pci_info)).unwrap();
+ init_page_table(&mut page_table).unwrap();
+ mem::drop(page_table); // Release PageTable and switch back to idmap.S
check_data();
check_dice();
diff --git a/libs/libvmbase/example/src/pci.rs b/guest/vmbase_example/src/pci.rs
similarity index 100%
rename from libs/libvmbase/example/src/pci.rs
rename to guest/vmbase_example/src/pci.rs