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(&reg_dev, prot_dev)?;
-    pgt.map_range(&reg_text, prot_rx)?;
-    pgt.map_range(&reg_rodata, prot_ro)?;
-    pgt.map_range(&reg_data, prot_rw)?;
+    pgt.map_range(&reg_dev, PROT_DEV)?;
+    pgt.map_range(&reg_text, PROT_RX)?;
+    pgt.map_range(&reg_rodata, PROT_RO)?;
+    pgt.map_range(&reg_data, PROT_RW)?;
 
     info!("Finished preparing kernel page table.");
     Ok(())
