summaryrefslogtreecommitdiffstats
path: root/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64
diff options
context:
space:
mode:
authorZhiguang Liu <zhiguang.liu@intel.com>2022-07-06 21:10:13 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2022-07-25 02:18:26 +0000
commit8a5782d704cfeb78aafdec1c03685107586f4ee6 (patch)
tree885b4a6e7440a8028922275e9ea2f0bff956a0d5 /UefiCpuPkg/Library/CpuExceptionHandlerLib/X64
parentfca5de51e1fd2f3c5ddbf5974d785f0f6b2f6c38 (diff)
downloadedk2-8a5782d704cfeb78aafdec1c03685107586f4ee6.tar.gz
edk2-8a5782d704cfeb78aafdec1c03685107586f4ee6.tar.bz2
edk2-8a5782d704cfeb78aafdec1c03685107586f4ee6.zip
UefiCpuPkg: Fix nasm warning "signed byte value exceeds"
Currently, "push byte %[Vector]" causes nasm warning when Vector is larger than 0x7F. This is because push accepts a signed value, and byte means signed int8. Maximum signed int8 is 0x7F. When Vector is larger the 0x7F, for example, when Vector is 255, byte 255 turns to -1, and causes the warning "signed byte value exceeds". To avoid such warning, use dword instead of byte, this will increase 3 bytes for each IdtVector. For IA32, the size of IdtVector will increase from 10 bytes to 13 bytes. For X64, the size of IdtVector will increase from 15 bytes to 18 bytes. Cc: Eric Dong <eric.dong@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Rahul Kumar <rahul1.kumar@intel.com> Cc: Debkumar De <debkumar.de@intel.com> Cc: Harry Han <harry.han@intel.com> Cc: Catharine West <catharine.west@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com> Signed-off-by: Zhiguang Liu <zhiguang.liu@intel.com>
Diffstat (limited to 'UefiCpuPkg/Library/CpuExceptionHandlerLib/X64')
-rw-r--r--UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/Xcode5ExceptionHandlerAsm.nasm11
1 files changed, 5 insertions, 6 deletions
diff --git a/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/Xcode5ExceptionHandlerAsm.nasm b/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/Xcode5ExceptionHandlerAsm.nasm
index 7c0e3d3b0b..9574785742 100644
--- a/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/Xcode5ExceptionHandlerAsm.nasm
+++ b/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/Xcode5ExceptionHandlerAsm.nasm
@@ -57,18 +57,17 @@ ALIGN 8
AsmIdtVectorBegin:
%assign Vector 0
%rep 256
- push byte %[Vector]
+ push strict dword %[Vector] ; This instruction pushes sign-extended 8-byte value on stack
push rax
- mov rax, strict qword 0 ; mov rax, ASM_PFX(CommonInterruptEntry)
+ mov rax, strict qword 0 ; mov rax, ASM_PFX(CommonInterruptEntry)
jmp rax
%assign Vector Vector+1
%endrep
AsmIdtVectorEnd:
HookAfterStubHeaderBegin:
- db 0x6a ; push
-@VectorNum:
- db 0 ; 0 will be fixed
+ push strict dword 0 ; 0 will be fixed
+VectorNum:
push rax
mov rax, strict qword 0 ; mov rax, HookAfterStubHeaderEnd
JmpAbsoluteAddress:
@@ -478,6 +477,6 @@ ASM_PFX(AsmGetTemplateAddressMap):
global ASM_PFX(AsmVectorNumFixup)
ASM_PFX(AsmVectorNumFixup):
mov rax, rdx
- mov [rcx + (@VectorNum - HookAfterStubHeaderBegin)], al
+ mov [rcx + (VectorNum - 4 - HookAfterStubHeaderBegin)], al
ret