Acked-by: Bret Barkelew - Bret ________________________________ From: devel@edk2.groups.io on behalf of Lendacky, Thomas via groups.io Sent: Friday, May 1, 2020 1:17:41 PM To: devel@edk2.groups.io Cc: Jordan Justen ; Laszlo Ersek ; Ard Biesheuvel ; Liming Gao ; Eric Dong ; Ray Ni ; Brijesh Singh ; Anthony Perard ; Benjamin You ; Guo Dong ; Julien Grall ; Maurice Ma ; Andrew Fish Subject: [EXTERNAL] [edk2-devel] [PATCH 4/4] UefiCpuPkg/CpuExceptionHandler: Revert binary patching in standard CpuExceptionHandlerLib BZ: https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.tianocore.org%2Fshow_bug.cgi%3Fid%3D2340&data=02%7C01%7Cbret.barkelew%40microsoft.com%7Cc233bc94949a424f66bf08d7ee0cc626%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637239610952998859&sdata=rm%2FpiCDgatUHtU9PEQGWTzFT70XmkpbIukV7eiHWHeo%3D&reserved=0 Now that an XCODE5 specific CpuExceptionHandlerLib library is in place, revert the changes made to the ExceptionHandlerAsm.nasm in commit 2db0ccc2d7fe ("UefiCpuPkg: Update CpuExceptionHandlerLib pass XCODE5 tool chain") so that binary patching of flash code is not performed. Cc: Eric Dong Cc: Ray Ni Cc: Laszlo Ersek Cc: Liming Gao Signed-off-by: Tom Lendacky --- .../X64/ExceptionHandlerAsm.nasm | 25 +++++-------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.nasm b/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.nasm index 19198f273137..3814f9de3703 100644 --- a/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.nasm +++ b/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.nasm @@ -34,7 +34,7 @@ AsmIdtVectorBegin: db 0x6a ; push #VectorNum db ($ - AsmIdtVectorBegin) / ((AsmIdtVectorEnd - AsmIdtVectorBegin) / 32) ; VectorNum push rax - mov rax, strict qword 0 ; mov rax, ASM_PFX(CommonInterruptEntry) + mov rax, ASM_PFX(CommonInterruptEntry) jmp rax %endrep AsmIdtVectorEnd: @@ -44,8 +44,7 @@ HookAfterStubHeaderBegin: @VectorNum: db 0 ; 0 will be fixed push rax - mov rax, strict qword 0 ; mov rax, HookAfterStubHeaderEnd -JmpAbsoluteAddress: + mov rax, HookAfterStubHeaderEnd jmp rax HookAfterStubHeaderEnd: mov rax, rsp @@ -257,7 +256,8 @@ HasErrorCode: ; and make sure RSP is 16-byte aligned ; sub rsp, 4 * 8 + 8 - call ASM_PFX(CommonExceptionHandler) + mov rax, ASM_PFX(CommonExceptionHandler) + call rax add rsp, 4 * 8 + 8 cli @@ -365,24 +365,11 @@ DoIret: ; comments here for definition of address map global ASM_PFX(AsmGetTemplateAddressMap) ASM_PFX(AsmGetTemplateAddressMap): - lea rax, [AsmIdtVectorBegin] + mov rax, AsmIdtVectorBegin mov qword [rcx], rax mov qword [rcx + 0x8], (AsmIdtVectorEnd - AsmIdtVectorBegin) / 32 - lea rax, [HookAfterStubHeaderBegin] + mov rax, HookAfterStubHeaderBegin mov qword [rcx + 0x10], rax - -; Fix up CommonInterruptEntry address - lea rax, [ASM_PFX(CommonInterruptEntry)] - lea rcx, [AsmIdtVectorBegin] -%rep 32 - mov qword [rcx + (JmpAbsoluteAddress - 8 - HookAfterStubHeaderBegin)], rax - add rcx, (AsmIdtVectorEnd - AsmIdtVectorBegin) / 32 -%endrep -; Fix up HookAfterStubHeaderEnd - lea rax, [HookAfterStubHeaderEnd] - lea rcx, [JmpAbsoluteAddress] - mov qword [rcx - 8], rax - ret ;------------------------------------------------------------------------------------- -- 2.17.1