From 554dddfcd938be621514593d2b2d0d86f42579ac Mon Sep 17 00:00:00 2001 From: Jeff Fan Date: Fri, 10 Jan 2014 02:48:49 +0000 Subject: [PATCH] Fix bug when reserve stack space to fill exception context. Signed-off-by: Jeff Fan Reviewed-by: Feng Tian git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15086 6f19259b-4bc3-4df7-8a09-765794883524 --- .../CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.S | 8 ++++---- .../CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.asm | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.S b/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.S index 6e80d848fe..233dbcbcc5 100644 --- a/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.S +++ b/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.S @@ -1,5 +1,5 @@ #------------------------------------------------------------------------------ ; -# Copyright (c) 2012 - 2013, Intel Corporation. All rights reserved.
+# Copyright (c) 2012 - 2014, Intel Corporation. All rights reserved.
# This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at @@ -269,15 +269,15 @@ VectorNum: ASM_GLOBAL ASM_PFX(HookAfterStubHeaderEnd) ASM_PFX(HookAfterStubHeaderEnd): movq %rsp, %rax - subq $8, %rsp - andl $0x0fffffff0, %esp + andl $0x0fffffff0, %esp # make sure 16-byte aligned for exception context + subq $0x18, %rsp # reserve room for filling exception data later pushq %rcx movq 8(%rax), %rcx pushq %rax movabsl ASM_PFX(mErrorCodeFlag), %eax bt %ecx, %eax popq %rax - jc NoErrorData + jnc NoErrorData pushq (%rsp) # push additional rcx to make stack alignment NoErrorData: xchgq (%rsp), %rcx # restore rcx, save Exception Number in stack diff --git a/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.asm b/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.asm index f348efe4be..59bec5985a 100644 --- a/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.asm +++ b/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.asm @@ -1,5 +1,5 @@ ;------------------------------------------------------------------------------ ; -; Copyright (c) 2012 - 2013, Intel Corporation. All rights reserved.
+; Copyright (c) 2012 - 2014, Intel Corporation. All rights reserved.
; This program and the accompanying materials ; are licensed and made available under the terms and conditions of the BSD License ; which accompanies this distribution. The full text of the license may be found at @@ -53,12 +53,12 @@ HookAfterStubHeaderBegin: jmp rax HookAfterStubHeaderEnd: mov rax, rsp - sub rsp, 8h - and sp, 0fff0h + and sp, 0fff0h ; make sure 16-byte aligned for exception context + sub rsp, 18h ; reserve room for filling exception data later push rcx mov rcx, [rax + 8] bt mErrorCodeFlag, ecx - jc @F + jnc @F push [rsp] ; push additional rcx to make stack alignment @@: xchg rcx, [rsp] ; restore rcx, save Exception Number in stack