rialto: Move PT Attributes to global constants
Define global constants for page table attributes.
Test: m rialto
Change-Id: I30d6ed5865112637f43397af3cba4190594aa06b
diff --git a/rialto/src/main.rs b/rialto/src/main.rs
index bbe41c0..e95be30 100644
--- a/rialto/src/main.rs
+++ b/rialto/src/main.rs
@@ -41,6 +41,22 @@
const PT_ROOT_LEVEL: usize = 1;
const PT_ASID: usize = 1;
+const PROT_DEV: Attributes = Attributes::from_bits_truncate(
+ Attributes::DEVICE_NGNRE.bits() | Attributes::EXECUTE_NEVER.bits(),
+);
+const PROT_RX: Attributes = Attributes::from_bits_truncate(
+ Attributes::NORMAL.bits() | Attributes::NON_GLOBAL.bits() | Attributes::READ_ONLY.bits(),
+);
+const PROT_RO: Attributes = Attributes::from_bits_truncate(
+ Attributes::NORMAL.bits()
+ | Attributes::NON_GLOBAL.bits()
+ | Attributes::READ_ONLY.bits()
+ | Attributes::EXECUTE_NEVER.bits(),
+);
+const PROT_RW: Attributes = Attributes::from_bits_truncate(
+ Attributes::NORMAL.bits() | Attributes::NON_GLOBAL.bits() | Attributes::EXECUTE_NEVER.bits(),
+);
+
#[global_allocator]
static HEAP_ALLOCATOR: LockedHeap<32> = LockedHeap::<32>::new();
@@ -75,24 +91,16 @@
let reg_rodata = unsafe { kimg_region(&rodata_begin, &rodata_end) };
let reg_data = unsafe { kimg_region(&data_begin, &boot_stack_end) };
- debug!("Preparing kernel page tables.");
+ debug!("Preparing kernel page table.");
debug!(" dev: {}-{}", reg_dev.start(), reg_dev.end());
debug!(" text: {}-{}", reg_text.start(), reg_text.end());
debug!(" rodata: {}-{}", reg_rodata.start(), reg_rodata.end());
debug!(" data: {}-{}", reg_data.start(), reg_data.end());
- let prot_dev = Attributes::DEVICE_NGNRE | Attributes::EXECUTE_NEVER;
- let prot_rx = Attributes::NORMAL | Attributes::NON_GLOBAL | Attributes::READ_ONLY;
- let prot_ro = Attributes::NORMAL
- | Attributes::NON_GLOBAL
- | Attributes::READ_ONLY
- | Attributes::EXECUTE_NEVER;
- let prot_rw = Attributes::NORMAL | Attributes::NON_GLOBAL | Attributes::EXECUTE_NEVER;
-
- pgt.map_range(®_dev, prot_dev)?;
- pgt.map_range(®_text, prot_rx)?;
- pgt.map_range(®_rodata, prot_ro)?;
- pgt.map_range(®_data, prot_rw)?;
+ pgt.map_range(®_dev, PROT_DEV)?;
+ pgt.map_range(®_text, PROT_RX)?;
+ pgt.map_range(®_rodata, PROT_RO)?;
+ pgt.map_range(®_data, PROT_RW)?;
info!("Finished preparing kernel page table.");
Ok(())