diff --git a/lib.rs b/lib.rs
index e9eec634ad2fd974e912819e7d8655e77cf3926a..0bc1c0ef528246d0f4bce6fcaf341464432d8469 100644
--- a/lib.rs
+++ b/lib.rs
@@ -162,7 +162,7 @@ pub extern fn kmain() {
         unsafe {
             interrupt::disable();
             context::switch();
-            interrupt::enable_and_halt();
+            interrupt::enable_and_nop();
         }
     }
 }
diff --git a/scheme/user.rs b/scheme/user.rs
index 7604b0fd70c9ac510cdbfa3ffcec1745060d3f6f..ba8fd959f6d04f6dd9798668476ef1812922866f 100644
--- a/scheme/user.rs
+++ b/scheme/user.rs
@@ -81,7 +81,7 @@ impl UserInner {
             let full_size = ((offset + size + 4095)/4096) * 4096;
             let mut to_address = arch::USER_GRANT_OFFSET;
 
-            let mut flags = entry::PRESENT | entry::NO_EXECUTE;
+            let mut flags = entry::PRESENT | entry::NO_EXECUTE | entry::USER_ACCESSIBLE;
             if writable {
                 flags |= entry::WRITABLE;
             }