stage1_main() calling conventions changed to use two parameters instead of one. This resulted in a stack underflow for i586 and GeodeLX because the stack was set up for only one parameter in their stage0 asm code.
Untested. Note that this didn't trigger on K8 because the stack setup there has excessive room, something that should be fixed as well.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Index: corebootv3-stage1_init_detected/arch/x86/geodelx/stage0.S =================================================================== --- corebootv3-stage1_init_detected/arch/x86/geodelx/stage0.S (Revision 832) +++ corebootv3-stage1_init_detected/arch/x86/geodelx/stage0.S (Arbeitskopie) @@ -365,6 +365,9 @@ movl $0, %eax pushl %eax
+ /* Store zero for the unused init_detected parameter. */ + pushl %eax + /* Restore the BIST result. */ movl %ebp, %eax
Index: corebootv3-stage1_init_detected/arch/x86/stage0_i586.S =================================================================== --- corebootv3-stage1_init_detected/arch/x86/stage0_i586.S (Revision 832) +++ corebootv3-stage1_init_detected/arch/x86/stage0_i586.S (Arbeitskopie) @@ -439,6 +439,9 @@ movl $0, %eax pushl %eax
+ /* Store zero for the unused init_detected parameter. */ + pushl %eax + /* Restore the BIST result */ movl %ebp, %eax /* We need to set ebp ? No need */