diff options
author | Aaron Durbin <adurbin@chromium.org> | 2017-06-23 11:14:58 -0500 |
---|---|---|
committer | Martin Roth <martinroth@google.com> | 2017-06-29 14:58:59 +0000 |
commit | 028e18ff3caef6976410c2baefbef954b12d92af (patch) | |
tree | 7f03b37ee18ae8507446414401c73e32671205a7 /src/soc | |
parent | d28bd0c79e47f425711eade50c9e2e5bb8cb2d86 (diff) |
arch/x86: update assembly to ensure 16-byte alignment into C
When the C compiler expects 16-byte alignment of the stack it is
at the call instruction. Correct existing call points from assembly
to ensure the stacks are aligned to 16 bytes at the call instruction.
Change-Id: Icadd7a1f9284e92aecd99c30cb2acb307823682c
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://review.coreboot.org/20314
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
Diffstat (limited to 'src/soc')
-rw-r--r-- | src/soc/intel/common/block/cpu/car/cache_as_ram.S | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/soc/intel/common/block/cpu/car/cache_as_ram.S b/src/soc/intel/common/block/cpu/car/cache_as_ram.S index 79c5c77d27..94e269446b 100644 --- a/src/soc/intel/common/block/cpu/car/cache_as_ram.S +++ b/src/soc/intel/common/block/cpu/car/cache_as_ram.S @@ -184,6 +184,11 @@ car_init_done: /* Setup bootblock stack */ mov $_car_stack_end, %esp + /* Need to align stack to 16 bytes at call instruction. Account for + the two pushes below. */ + andl $0xfffffff0, %esp + sub $8, %esp + /*push TSC value to stack*/ movd %mm2, %eax pushl %eax /* tsc[63:32] */ |