diff --git a/src/arch/x86_64/paging/entry.rs b/src/arch/x86_64/paging/entry.rs
index 3f59f0e1e1f1321fd78b1b1f1ba7edb2351e7823..56f9755bc3f2eafe5335e459bde62a219cf58814 100644
--- a/src/arch/x86_64/paging/entry.rs
+++ b/src/arch/x86_64/paging/entry.rs
@@ -6,6 +6,7 @@ use crate::memory::Frame;
 use super::PhysicalAddress;
 
 /// A page table entry
+#[repr(packed(8))]
 pub struct Entry(u64);
 
 bitflags! {
diff --git a/src/arch/x86_64/paging/table.rs b/src/arch/x86_64/paging/table.rs
index 28f5982549296ae5183add5e8b19aa3a67be6dfb..9ebfcef6efcb25319652c4b7c3834da00bff6695 100644
--- a/src/arch/x86_64/paging/table.rs
+++ b/src/arch/x86_64/paging/table.rs
@@ -39,6 +39,7 @@ impl HierarchicalLevel for Level2 {
     type NextLevel = Level1;
 }
 
+#[repr(packed(4096))]
 pub struct Table<L: TableLevel> {
     entries: [Entry; ENTRY_COUNT],
     level: PhantomData<L>,