cpu/x86: Align stack in SIPI handler
Ensure the stack is properly aligned in the SIPI handler. This avoids an exception when an aligned instruction is performed on stack data. BUG=b:66003093 TEST=boot kahlee built with gcc 6.3 Change-Id: Ibdd8242494c6a2bc0c6ead7ac98be55149219d7c Signed-off-by: Marshall Dawson <marshalldawson3rd@gmail.com> Reviewed-on: https://review.coreboot.org/21768 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
38f19400f9
commit
df31904133
|
@ -114,6 +114,8 @@ _start:
|
||||||
movl stack_top, %edx
|
movl stack_top, %edx
|
||||||
subl %eax, %edx
|
subl %eax, %edx
|
||||||
mov %edx, %esp
|
mov %edx, %esp
|
||||||
|
andl $0xfffffff0, %esp /* ensure stack alignment */
|
||||||
|
|
||||||
/* Save CPU number. */
|
/* Save CPU number. */
|
||||||
mov %ecx, %esi
|
mov %ecx, %esi
|
||||||
|
|
||||||
|
@ -192,7 +194,8 @@ load_msr:
|
||||||
mov %eax, %cr4
|
mov %eax, %cr4
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* c_handler(cpu_num) */
|
/* c_handler(cpu_num), preserve proper stack alignment */
|
||||||
|
sub $12, %esp
|
||||||
push %esi /* cpu_num */
|
push %esi /* cpu_num */
|
||||||
mov c_handler, %eax
|
mov c_handler, %eax
|
||||||
call *%eax
|
call *%eax
|
||||||
|
|
Loading…
Reference in New Issue