diff --git a/src/arch/x86_64/paging/entry.rs b/src/arch/x86_64/paging/entry.rs
index 56f9755bc3f2eafe5335e459bde62a219cf58814..ba6f941d3f88dfc6c51d410aa11ef0feb9c2c84a 100644
--- a/src/arch/x86_64/paging/entry.rs
+++ b/src/arch/x86_64/paging/entry.rs
@@ -77,3 +77,12 @@ impl Entry {
         self.0 = (self.0 & !COUNTER_MASK) | (count << 52);
     }
 }
+
+#[cfg(test)]
+mod tests {
+    #[test]
+    fn entry_has_required_arch_alignment() {
+        use super::Entry;
+        assert!(core::mem::align_of::<Entry>() >= core::mem::align_of::<u64>(), "alignment of Entry is less than the required alignment of u64 ({} < {})", core::mem::align_of::<Entry>(), core::mem::align_of::<u64>());
+    }
+}
diff --git a/src/arch/x86_64/paging/table.rs b/src/arch/x86_64/paging/table.rs
index 9ebfcef6efcb25319652c4b7c3834da00bff6695..a6f45c52c32115fa8d4eca1fa27504d699d92620 100644
--- a/src/arch/x86_64/paging/table.rs
+++ b/src/arch/x86_64/paging/table.rs
@@ -55,7 +55,7 @@ impl<L> Table<L> where L: TableLevel {
     }
 
     pub fn zero(&mut self) {
-        for entry in self.entries.iter_mut() {
+        for entry in unsafe { &mut self.entries }.iter_mut() {
             entry.set_zero();
         }
     }
@@ -63,12 +63,12 @@ impl<L> Table<L> where L: TableLevel {
     /// Set number of entries in first table entry
     fn set_entry_count(&mut self, count: u64) {
         debug_assert!(count <= ENTRY_COUNT as u64, "count can't be greater than ENTRY_COUNT");
-        self.entries[0].set_counter_bits(count);
+        unsafe { &mut self.entries[0] }.set_counter_bits(count)
     }
 
     /// Get number of entries in first table entry
     fn entry_count(&self) -> u64 {
-        self.entries[0].counter_bits()
+        unsafe { &self.entries[0] }.counter_bits()
     }
 
     pub fn increment_entry_count(&mut self) {
@@ -118,12 +118,12 @@ impl<L> Index<usize> for Table<L> where L: TableLevel {
     type Output = Entry;
 
     fn index(&self, index: usize) -> &Entry {
-        &self.entries[index]
+        unsafe { &self.entries[index] }
     }
 }
 
 impl<L> IndexMut<usize> for Table<L> where L: TableLevel {
     fn index_mut(&mut self, index: usize) -> &mut Entry {
-        &mut self.entries[index]
+        unsafe { &mut self.entries[index] }
     }
 }