diff --git a/x86_64/startup-x86_64.asm b/x86_64/startup-x86_64.asm
index 3d9b865cb084bd66748c7044b5dec6cdd4532702..fa6b9e8406e02c9caf02ce7519f26b64808ba5bc 100644
--- a/x86_64/startup-x86_64.asm
+++ b/x86_64/startup-x86_64.asm
@@ -1,5 +1,6 @@
 trampoline:
     .ready: dq 0
+    .cpu_id: dq 0
     .stack_start: dq 0
     .stack_end: dq 0
     .code: dq 0
@@ -131,11 +132,11 @@ long_mode_ap:
     mov gs, rax
     mov ss, rax
 
+    mov rdi, [trampoline.cpu_id]
+    mov rsi, [trampoline.stack_start]
+    mov rdx, [trampoline.stack_end]
 
-    mov rdi, [trampoline.stack_start]
-    mov rsi, [trampoline.stack_end]
-
-    lea rsp, [rsi - 16]
+    lea rsp, [rdx - 256]
 
     mov qword [trampoline.ready], 1
     mov rax, [trampoline.code]