Reviewed-by: Ray Ni <ray...@intel.com> > -----Original Message----- > From: Liu, Zhiguang <zhiguang....@intel.com> > Sent: Wednesday, July 6, 2022 9:10 PM > To: devel@edk2.groups.io > Cc: Liu, Zhiguang <zhiguang....@intel.com>; Dong, Eric <eric.d...@intel.com>; > Ni, Ray <ray...@intel.com>; Kumar, > Rahul1 <rahul1.ku...@intel.com>; De, Debkumar <debkumar...@intel.com>; Han, > Harry <harry....@intel.com>; West, > Catharine <catharine.w...@intel.com> > Subject: [PATCH v2] 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.d...@intel.com> > Cc: Ray Ni <ray...@intel.com> > Cc: Rahul Kumar <rahul1.ku...@intel.com> > Cc: Debkumar De <debkumar...@intel.com> > Cc: Harry Han <harry....@intel.com> > Cc: Catharine West <catharine.w...@intel.com> > Signed-off-by: Zhiguang Liu <zhiguang....@intel.com> > --- > .../Library/CpuExceptionHandlerLib/CpuExceptionCommon.h | 2 +- > .../CpuExceptionHandlerLib/Ia32/ExceptionHandlerAsm.nasm | 7 +++---- > .../CpuExceptionHandlerLib/X64/Xcode5ExceptionHandlerAsm.nasm | 11 > +++++------ > 3 files changed, 9 insertions(+), 11 deletions(-) > > diff --git a/UefiCpuPkg/Library/CpuExceptionHandlerLib/CpuExceptionCommon.h > b/UefiCpuPkg/Library/CpuExceptionHandlerLib/CpuExceptionCommon.h > index 0f012bccde..fd42c4be0f 100644 > --- a/UefiCpuPkg/Library/CpuExceptionHandlerLib/CpuExceptionCommon.h > +++ b/UefiCpuPkg/Library/CpuExceptionHandlerLib/CpuExceptionCommon.h > @@ -22,7 +22,7 @@ > > #define CPU_EXCEPTION_NUM 32 > #define CPU_INTERRUPT_NUM 256 > -#define HOOKAFTER_STUB_SIZE 16 > +#define HOOKAFTER_STUB_SIZE 18 > > // > // Exception Error Code of Page-Fault Exception > diff --git > a/UefiCpuPkg/Library/CpuExceptionHandlerLib/Ia32/ExceptionHandlerAsm.nasm > b/UefiCpuPkg/Library/CpuExceptionHandlerLib/Ia32/ExceptionHandlerAsm.nasm > index 8ed2b8f455..31a00449a2 100644 > --- a/UefiCpuPkg/Library/CpuExceptionHandlerLib/Ia32/ExceptionHandlerAsm.nasm > +++ b/UefiCpuPkg/Library/CpuExceptionHandlerLib/Ia32/ExceptionHandlerAsm.nasm > @@ -34,7 +34,7 @@ ALIGN 8 > AsmIdtVectorBegin: > %assign Vector 0 > %rep 256 > - push byte %[Vector]; > + push strict dword %[Vector]; > push eax > mov eax, ASM_PFX(CommonInterruptEntry) > jmp eax > @@ -43,9 +43,8 @@ AsmIdtVectorBegin: > AsmIdtVectorEnd: > > HookAfterStubBegin: > - db 0x6a ; push > + push strict dword 0 ; 0 will be fixed > VectorNum: > - db 0 ; 0 will be fixed > push eax > mov eax, HookAfterStubHeaderEnd > jmp eax > @@ -453,5 +452,5 @@ global ASM_PFX(AsmVectorNumFixup) > ASM_PFX(AsmVectorNumFixup): > mov eax, dword [esp + 8] > mov ecx, [esp + 4] > - mov [ecx + (VectorNum - HookAfterStubBegin)], al > + mov [ecx + (VectorNum - 4 - HookAfterStubBegin)], al > ret > 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 > > -- > 2.16.2.windows.1
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#91173): https://edk2.groups.io/g/devel/message/91173 Mute This Topic: https://groups.io/mt/92205812/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-