@@ -188,6 +188,12 @@ SYM_CODE_START(secondary_startup_64)
movl initial_gs+4(%rip),%edx
wrmsr
+ /*
+ * Setup a boot time stack - Any secondary CPU will have lost its stack
+ * by now because the cr3-switch above unmaps the real-mode stack
+ */
+ movq initial_stack(%rip), %rsp
+
/* Check if nx is implemented */
movl $0x80000001, %eax
cpuid
@@ -208,9 +214,6 @@ SYM_CODE_START(secondary_startup_64)
/* Make changes effective */
movq %rax, %cr0
- /* Setup a boot time stack */
- movq initial_stack(%rip), %rsp
-
/* zero EFLAGS after setting rsp */
pushq $0
popfq