From f1407dff7b82f6c7bb29cec31e5e2cc3fb5ba3fa Mon Sep 17 00:00:00 2001 From: WangRunji Date: Sun, 15 Jul 2018 20:50:57 +0800 Subject: [PATCH] Note the reason of double fault in x86_64 release mode. --- kernel/src/memory.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/src/memory.rs b/kernel/src/memory.rs index a2dc902..cd4d17c 100644 --- a/kernel/src/memory.rs +++ b/kernel/src/memory.rs @@ -28,6 +28,8 @@ pub fn dealloc_frame(target: usize) { pub fn alloc_stack() -> Stack { use alloc::boxed::Box; const STACK_SIZE: usize = 0x8000; + // FIXME: This alignment will cause rsp align with 0x8000 in x86_64 release mode. + // Because kernel stack is not large enough, it will trigger double fault. #[repr(align(0x8000))] struct StackData([u8; STACK_SIZE]); let data = Box::new(StackData([0; STACK_SIZE]));