From f7bb98019a719d8116fe840fd5e20703219c938d Mon Sep 17 00:00:00 2001 From: rsun3 Date: Wed, 28 Sep 2011 01:36:33 +0000 Subject: [PATCH] UefiCpuPkg VTF0: Fix support for finding SEC image of type TE. Update Flat32SearchForSecEntryPoint assembly code to support finding an SEC image using the TE image format. Signed-off-by: rsun3 Reviewed-by: jljusten git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12462 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Vtf0/Bin/ResetVector.ia32.port80.raw | Bin 500 -> 516 bytes .../ResetVector/Vtf0/Bin/ResetVector.ia32.raw | Bin 484 -> 484 bytes .../Vtf0/Bin/ResetVector.ia32.serial.raw | Bin 884 -> 884 bytes .../Vtf0/Bin/ResetVector.x64.port80.raw | Bin 28676 -> 28676 bytes .../ResetVector/Vtf0/Bin/ResetVector.x64.raw | Bin 28676 -> 28676 bytes .../Vtf0/Bin/ResetVector.x64.serial.raw | Bin 28676 -> 28676 bytes .../Vtf0/Ia32/SearchForSecEntry.asm | 38 ++++++++++-------- 7 files changed, 21 insertions(+), 17 deletions(-) diff --git a/UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.ia32.port80.raw b/UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.ia32.port80.raw index ec6bcfd48b1f71520c87f15fb3347eea72ff099f..2c6ff655ded2a5855ca8f4428d559a7727eb6983 100644 GIT binary patch delta 194 zcmeyu+`=*;iLr2Ea#lPyBLhS0fs!It2?hoR%M-@NsKlmQqVe(n|Nj{n zZxjWxG6NM9d8zz)c?~GU$^zu2HCp&am74Q!kFa4p+-M!(%D_;n$?UB0QVl2xR?#_G zkWpNR70BHI#0)RvfLb?*J!|;2o8d#>?cEdp>!tBCil^;RW?*pOS2~dPs$g;oqXNG@ iQ0)Y9h6O;?6M$fHAEOax{r{J`|Nj4f*){njqc#BiLq{413TA;4scwnJ$N&HTXJEWh7WU$m=|u)@b1yRm#S{J;H_&$gvKKDivmS=3vzT%JOfIX4Aa!QWVH+ zv<`4(U?}BacGh^w3gqtqVuqKQKyx;TJ!|;2TY}+3-|gK~{_CajGm59}P-b9o;8!}3 o_NsJpKBEGc6;QD_!vdh{$@3VEI9vX|wEg%0|I1mEZ!&5F0MkE7N&o-= diff --git a/UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.ia32.raw b/UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.ia32.raw index 02cb66c848ffc3bd8a8c574335d8b25425d3601b..e34780a3a2c9b22bd10a1d5a405e344faaff94f3 100644 GIT binary patch delta 166 zcmaFD{DgVJk%%Hz2?hoR%M-@NsKlmQqVe(n|Nj{nZxjWxG6NM9d8zz) zc?~GU$^zu2HCp&am74Q!kFa4p+-M!(%D_;n$?UB0QVl2xR?#_`kx^WO70BHI#0)Rf zfLed;X86!|d-sh0dTIQO;%PgS85kV+l@6r6s+k5IG_M delta 185 zcmaFD{DgVJk@|F22?hoR%M-#A4e|v-tBamYq7F86`0mKY13xVeR+RgBx@AmGV|9WZsjJ)D$JCqq19Qc(Eq`fMf9L*>r<^)tI&aeQe Sasm>V+{CEI*fMz|qcH&6$wM3f diff --git a/UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.ia32.serial.raw b/UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.ia32.serial.raw index 58542ad9d1a151aafcce1e9446b449e8c48ec881..6dfa68eabb48a44bc50a0b7fe678f80b5cdadfd5 100644 GIT binary patch delta 184 zcmeyu_JwW3ea8ACRtW|M2Fnx0nGF@p0woGSQmDkHTcYvt|Ns9P7;h8>vN8h|6nUxq zd3g;e#L5EXr8QdkMwOcLZ;!BHJltp<;L5;Is>$rE@lp*a30Bd0IIYn-EUHwP*_ne? z11QSBJ(^AP#!FTpa|aMJynOcW|NmWoCkHdx3eWnlm&VU1p0-1ofx&@a=|I{m`^k%$ ZVz|tK>cklq0BxNt!mQ6IKG}uY004-xJe&Xk delta 195 zcmeyu_JwW3ea8B9RtW|M2Fnx0aSavB0wq%25{-}l|Nqaxc%#UNl^G~i$L3TA;41t2L@V$&_r`1t?-{|t;biUL`gfeMPe zRQ|lY1{7jt0rJusEqtR&&H1-S*f1V$v<`4(U?|mOcGh^Q29yM==$w2oPn??-$lU?N z3@_s*f6mj@)dd413TA;4scwnJ$N&HTXJEWh7WU$m=|u)@b1yRm#S{J;H_&$gvKKDivmS=3vzT%JOfIX4Aa!QWVH+v<`4(U?}Ba zcGh^w3gqtqVuqKQKy!95Jox{gU+D(F!UO(Yllk&xb(Mgk5)2zso;AFj1yr>`>{-LF z-3%Z4Ztu?fub0NpD4w=MnSsH9U+F;FE5FGR`3j<*KxGr;85)2ZC&0nvrhGHL(*G~N S{{8>|Wzat$p*#6lz8wIl8eug6 diff --git a/UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.x64.raw b/UefiCpuPkg/ResetVector/Vtf0/Bin/ResetVector.x64.raw index 7ab1161a210e24c310cd9dc660fa3adb2cf87750..a78d5b407c8a106c221af127216d073cf8fdb99d 100644 GIT binary patch delta 240 zcmZp9z}WJDal?_^$yaj27#B{~&P$4SW@KP!Jy24_D#5_OV0ofAv!Q}nphN*k3YFM& zOEf~T%y$S@X5n$Niz{bG9uk;{o2M0snjlKhY5Bgs8U3lpQ)G5!<08}yo3?|p) X+wj%=f64mq|Noa!Ai`quv3xrK7)fA0 delta 232 zcmZp9z}WJDal?_^$qESqlaJ(vF;1K;otIQ^%*epddY~koRf2(m!SY0LTtfx3K#5eh zMC0TC|Nk>E-YD{6Wd=$WxvKnmc?T%O$^ztd9!_ht@Qo^EdHIr&@8qx#>B3=FLYN{Uz|7#J8VPZVc1R4@ya zC;&;J5}R&`#>fBv|7T#lQ549^3{+6$rSj+HHJ}hH3y_!AXyF@GYRn8xgj{118ty in}`SedCAQ1^2`61oc~|O{`vp^rO{s?(K`8LzBK^x<6t`g diff --git a/UefiCpuPkg/ResetVector/Vtf0/Ia32/SearchForSecEntry.asm b/UefiCpuPkg/ResetVector/Vtf0/Ia32/SearchForSecEntry.asm index 9558b9d350..6206b44485 100644 --- a/UefiCpuPkg/ResetVector/Vtf0/Ia32/SearchForSecEntry.asm +++ b/UefiCpuPkg/ResetVector/Vtf0/Ia32/SearchForSecEntry.asm @@ -2,7 +2,7 @@ ; @file ; Search for the SEC Core entry point ; -; Copyright (c) 2008 - 2009, Intel Corporation. All rights reserved.
+; Copyright (c) 2008 - 2011, 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 @@ -115,6 +115,7 @@ secCoreEntryPointWasFound: OneTimeCallRet Flat32SearchForSecEntryPoint %define EFI_SECTION_PE32 0x10 +%define EFI_SECTION_TE 0x12 ; ; Input: @@ -139,8 +140,11 @@ getEntryPointOfFfsFileLoopForSections: cmp byte [eax + 3], EFI_SECTION_PE32 je getEntryPointOfFfsFileFoundPe32Section + cmp byte [eax + 3], EFI_SECTION_TE + je getEntryPointOfFfsFileFoundTeSection + ; - ; The section type was not PE32, so move to next section + ; The section type was not PE32 or TE, so move to next section ; mov ebx, dword [eax] and ebx, 0x00ffffff @@ -158,16 +162,27 @@ getEntryPointOfFfsFileLoopForSections: getEntryPointOfFfsFileFoundPe32Section: add eax, 4 ; EAX = Start of PE32 image - mov ebx, eax cmp word [eax], 'MZ' - jne thereIsNotAnMzSignature + jne getEntryPointOfFfsFileErrorReturn movzx ebx, word [eax + 0x3c] add ebx, eax -thereIsNotAnMzSignature: + + ; if (Hdr.Pe32->Signature == EFI_IMAGE_NT_SIGNATURE) + cmp dword [ebx], `PE\x00\x00` + jne getEntryPointOfFfsFileErrorReturn + + ; *EntryPoint = (VOID *)((UINTN)Pe32Data + + ; (UINTN)(Hdr.Pe32->OptionalHeader.AddressOfEntryPoint & 0x0ffffffff)); + add eax, [ebx + 0x4 + 0x14 + 0x10] + jmp getEntryPointOfFfsFileReturn + +getEntryPointOfFfsFileFoundTeSection: + add eax, 4 ; EAX = Start of TE image + mov ebx, eax ; if (Hdr.Te->Signature == EFI_TE_IMAGE_HEADER_SIGNATURE) cmp word [ebx], 'VZ' - jne thereIsNoVzSignature + jne getEntryPointOfFfsFileErrorReturn ; *EntryPoint = (VOID *)((UINTN)Pe32Data + ; (UINTN)(Hdr.Te->AddressOfEntryPoint & 0x0ffffffff) + ; sizeof(EFI_TE_IMAGE_HEADER) - Hdr.Te->StrippedSize); @@ -177,17 +192,6 @@ thereIsNotAnMzSignature: sub eax, ebx jmp getEntryPointOfFfsFileReturn -thereIsNoVzSignature: - - ; if (Hdr.Pe32->Signature == EFI_IMAGE_NT_SIGNATURE) - cmp dword [ebx], `PE\x00\x00` - jne getEntryPointOfFfsFileErrorReturn - - ; *EntryPoint = (VOID *)((UINTN)Pe32Data + - ; (UINTN)(Hdr.Pe32->OptionalHeader.AddressOfEntryPoint & 0x0ffffffff)); - add eax, [ebx + 0x4 + 0x14 + 0x10] - jmp getEntryPointOfFfsFileReturn - getEntryPointOfFfsFileErrorReturn: mov eax, 0 -- 2.39.2