On Thu, Mar 03, 2016 at 07:26:06AM -0800, H. Peter Anvin wrote: > Why -8?
GLOBAL(stack_start) .quad init_thread_union+THREAD_SIZE-8 ^^^ But I don't see why it needed the -8 then. It came with a conglomerate dump in 2002: commit af53c7a2c81399b805b6d4eff887401a5e50feef Author: Andi Kleen <a...@muc.de> Date: Fri Apr 19 20:23:17 2002 -0700 [PATCH] x86-64 architecture specific sync for 2.5.8 - /* Setup the first kernel stack (this instruction is modified by smpboot) */ - .byte 0x48, 0xb8 /* movq *init_rsp,%rax */ -init_rsp: - .quad init_thread_union+THREAD_SIZE - movq %rax, %rsp ... - - /* SMP bootup changes this */ + /* SMP bootup changes these two */ .globl initial_code initial_code: .quad x86_64_start_kernel + .globl init_rsp +init_rsp: + .quad init_thread_union+THREAD_SIZE-8 + --- But since we decrement first and then copy to stack ptr when we push, I don't see why we need the -8. Do you have a better clue? -- Regards/Gruss, Boris. ECO tip #101: Trim your mails when you reply.