From 5aae0aa7d8347ce30d856aa5f39c53d181654e8b Mon Sep 17 00:00:00 2001 From: klu2 Date: Wed, 12 Sep 2007 09:52:37 +0000 Subject: [PATCH] PI Enable: 1) The entry point of PeiCore has been changed to EFI_PEI_CORE_ENTRY_POINT defined in PI. 2) Nt32, Tiger and lakeport platform's SecCore has been updated. 3) Autogen tools also has been updated. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3804 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Bin/Win32/build.exe | Bin 1445951 -> 1468968 bytes MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c | 19 ++-- MdeModulePkg/Core/Pei/Dispatcher/Stack.c | 26 +++++- .../Core/Pei/Ipf/InternalSwitchStack.c | 78 +++++++++++++++++ MdeModulePkg/Core/Pei/Ipf/Stack.c | 16 +++- MdeModulePkg/Core/Pei/Ipf/SwitchStack.s | 52 +++++++++++ MdeModulePkg/Core/Pei/Memory/MemoryServices.c | 24 +++--- MdeModulePkg/Core/Pei/PeiMain.h | 12 +-- MdeModulePkg/Core/Pei/PeiMain.inf | 4 +- MdeModulePkg/Core/Pei/PeiMain/PeiMain.c | 27 ++++-- Nt32Pkg/Sec/SecMain.c | 81 ++++++++++++++++-- Nt32Pkg/Sec/SecMain.inf | 3 + 12 files changed, 296 insertions(+), 46 deletions(-) create mode 100644 MdeModulePkg/Core/Pei/Ipf/InternalSwitchStack.c create mode 100644 MdeModulePkg/Core/Pei/Ipf/SwitchStack.s diff --git a/BaseTools/Bin/Win32/build.exe b/BaseTools/Bin/Win32/build.exe index ee09c625214d39c4476ead3f87e14b989dcc1bff..b72b8d9cf61d4d9c51da48a77d09c5a065481b25 100755 GIT binary patch delta 96648 zcmce<2YeMp_W-)H_3lmYl@w}1C!rH+0I2~kJ(Li*HxLL(NJ0-%rC1OMFcw6xU_(Iz zj?x4HDPp168;BiI5v&NjbLLWVcPHrg{_pqrzB_JCpEGCb&g{IlVc65BhHrHywOKwa zz2&B%i~sztfh6J2lq6|_C%1S?3@r?kR8N#N(J2)f5`lk(vP6b?02__c-4W6vf|MTMisg_< z4hfY!agrMtWvOVUM8-=}cDzKN57!g2#yh3#8q$n7$x}n>ItnBuNS;8+6EArZq=g`T zN*)=C^oi1pLGn*^DJ{w?Ta^)2@q62kNl3-&`>c!$C+U%-{Ni9qu6eJhY@Qf7{mAdLy9M255Ne08@u5Uorj&$uI zK$4(}Cf%;p=X!%cT8e>kF^pWzP`D0>r_fyt@|z+stzuaB6p@_piuK(`409omB$e|r z87WJ16lsnsl@X~-mdfG(3Kl6?ybx$qX(3=WsZ5p1;ZF@wb9AW;AiCt{63TT14os0N zitZ>H?zPPi&A_sCVO4NBP$T}CQ&>7Vx1hjNTIOnq2!BYt95>y^T{X!wlm9oru-Wzh zrqOwZ5+TS`o(3}75U5V5Mbbh^0tq7HFb>d7h|Ppw=?F;vJ=Z+rkXgt(Wa?J-wTixX zBuQ4xZ82#_=NO7TYIF=+dh(Nv@dEYl6;|*01=uS4|xQ#1&p4_pa3f@*zoCMTH($20WCZ zQ8_tP>k37tL`(wdzAs6b-OrH~clAypkrkVICumNc_&Y0(^o|eh zHnd@@-jD8x8U%U8Uz|i|{u)ukz&3CH;BPDA`jikq%v)C5k!2+w4_*15R;!|LP)OyW zzK>}_OvU2^AEW)-1gnOH=N=(6m@b+X8d}kHaBRTegB!M@H3qir05z^d#iYTp%J6~T z(%?IT>d~glNd#Sc#1UKh`QRUjU*lUARlGPnrSkWo+kJqQFAo1orh793ZyEt)>6LGf zoGRORr{q8uEdnb-azC}f;>HfQ!YUsd+fuaxEA;V?TVVAn-XHI_!NyN$TDRG%MJ?}r z^V*u^(UOEetYjs*h3=xsH@cn zz2vkoyOm>?ZPG;?6?IpL+!ncVx>(M0s}>N8FTk6Xy;rXj(`#!ND^|UgD<7<-T7g)G zl_wqoAf)1-XI~T$zxiBy0dZyB=c5$?^~kMP?K#J2pHX?z8tnsKUM{ft z%FD42%lc++Tzn$l7zoNDCyFvV~b0Q#(7FhZ?p=XuvOT2aBd8J-=D-* zw*5kj2&!voADaCUS25<&1|dB8x6uN4e8tA!z7oQp`hAfVUfJxA$;1k*@G8|S5B}*9 zA>%9i{M|&han1jyXUs_GBVi0W2gWgw%F>KZ1X_@;qgq#-{ik6A7?8U8*k++BWluQVp*6>nW>5e$P2ln5hs_ziU{m7!Oe5)Wm7LorFJS&He% zd_LyDWMobHH6inCc?XZt#WJZ+>arJQ(x1pwW{OIBkhx`sR7Al>RdPF}i4Li#HvAFH z|1kLwy)0D950e0dmH^G1V5tzEFo(AoLhKA7HyJ{_3@{eF#SnI#p#jbUuB!;U$q^<^ z`3j~as3uq{iuY24)1ewkCE;|wM#3F^WzH5(9|2&EaH$+5I;4+d0W$5k3Gsj$Fz7mwS(RubNP@_} zE{SyxCfPFG5K5wH#M*$M;8J@V5bwML?0?MbvY$gqM7j#Tije(DBp4p1M35jk0Gwvoev?FMkx|r{O!^CW;$ddplRwgr_CFTCS5k?Mw3I4z)iMJ8~Rp9}*;6VuQPOdWq-9%gm zc-tr#Jr;$7-5@mphmxQY=5=1dfwxe!NeYR=yZ{k2kbIi!B?A5gs58LnCryO*6ncc~ z3i!D6rX*}y1GxrO%7g0VLmGI~IBfIk0ckLj0t2YZ121su&>NDy?J;JaKAZy0qDBv< zkhBOeFN9Cfp#(4wJYUp5mDHIVCd~<#=0r$k5mJ66wwLA5YDVz6d!*zxr2HtUJQ9rn zcuq7<-}7UzjLKrA{5S*x>bhTsAu=8t+#4luJ-^-(MTbU127F43ZcQaID)9N!w^B*m z7<{_Xtzb4#LJg@LdJ+@W%!%R_0Lk@2ib5MFDpFBHFKxoD070wJ%0#I=3N4xwEtN;p z9`(tnmbki-e+?5!3YM}`u)l;ySW!rV#MK^?IhfoD37_j0GwPwSIL0oW#cr@vE+ z(`Z5iGM9{@>l=^`ei->KoH)Dc(c~a!*neqn(i)PwbmM(mJe}E)M39m6{)VKcpz6hk zV*_*wYaY}CNpggd0NI~@-H9mO?#W@8dX+On06iE!+6y#?#a z>NF+cA_?)l1#{6c%}7KbuD;;f5wGO$(uK{)rn#`D1M538?j+FN7Q^x(^cF=$gh0oZ z54D<)pvJ@6h$4-Ibsb>K>0dryi$OE6ZgLRD<&*)}#}EL~B$zLv=4`KK zsD>Qs)$FbDb3i}TVU?awBQcY_lDtDY-p0Tf4_dY=H5vqfRRXcPBofPqgV${ait9GZ zU^AVPP9l@NlBaA2!{Ij+dv}TV?lAg;!DN0AeL9`Qx5g*F$OeU=c}G@Y2s9ZzAZH;G zjHSFyQ&DShk17=bH)b`A{*z8(dO)q`SpwE6yJT<61X!rt(8dEfV4-Cin1V%~#Vbm_ z1l@YR1kvtYs(c7ADG_v7bBMxTbXs$g5IhDzt^!ObCQax=%}GtaQTU8~VTwOJ)SRRT zV<_bp7Edk9Day+$^_0=Snv-S;Bas4r-b6UKz}{~J7*INzdRmZL0XkHH1UXo(2Sc(j zTG4_G(7CeF^oJH?kf=`4F)c}S@=#MZ{ruw%)$C##X0X}c--Lf^K$_Xebi)7g*n=&} zY(lbVL~AlwAP46<8eP$vILK!9U~5t)sy=bFaa$PcY@i+6lCOgJ(j;Wog%t>fA5Gek zVHscIGnDRi|0wwM9VXvn@+~B{^#~tB==76z#Gf3Y-?bwv$X9e`2AQV+fc)oar|qH9 zBJ*kE_9Um~eP*f|f_=H4+`qS?h69fz;lkL@bw_Oa8cP0ax}`ly!j&<0qCFX?_%#QD z8!K%Cx{^k0SZ9(qA;u zp{>~`eMkcVagQw0!cM$1i=+sM>+~mWY{Yb3f3n*O&7cntAkD1M*3{`DUs|CVwDCZJ z5p?4~ve!=g_#l#Qg|?>QgUJyqG=nA%5z(#~LYSR)*-(+ae-0%(?6jALiD<_SCokJ+ zM`Vj=k7kos?X(9+h-jOSBq!{&Jw}OW*(h?@PP=ckh_-1CxoW2^9wRD?vt!72R@%u{ zKx|3m`EPh{90G3dMjsXEmJ$8I{$Rm~HmZ8fO!_sDs>>D-ECACS*& zs(AS<`H)oFFu*gz1_bg%`q@Whm<_`X8~iaztH!XWJ|n@^pguTFuGnn`RWbD9m*jyk zd=uPx!b`90b4U{YU>Z%YU5bdk@hX@$>#T&)=pZE=U&i{=ezk(*>AcQLFiZG~q!XXk zvGZUxncjI0Cc?|UCc1Aobpsbn-}r&76tdkbga%XAE-aMp$x;I2{7Gm^tsEx15V`o7fh!bkl|c8cIFFOp|`;cNdP@swP$f*FYK zV|hu2qN8ZcU$CC%^M2N=@{hmB)7B2bi`o4*nPcJTbeZh162JTpX=?9nFqzdjoYxC&gXODs`B8Lmh}=B@ zd!f>M-gs-pFiBcLpAM00^G@iU5ZUnUbaUfn*hLZ>uF}wOxwB7@Ad1}+E_YFEU@wOm zE%&yg?v0k$*r8m-s2I744aE+`$f4C56)*R!%E7>>D{55;y_o~{P_o?4SI~=jkh`D* z!A=%cTkh^#p?LPz)R7nah-1n1<>WA%0ye8XxX=!Mzmpth*ulv?moDuQG@B<)xn#%jMPM1L^%!U$GM*G!Wa+SnMdB~`=0 z9+@GtYBbSRv*ibD($I)VI=)=?RD&|-$fZJ56x%UJ-cX$(56qQQ#kfd%b)LLJC^C}1 zIbTi*ST-=Om40zgo3${AUAuOHTvOiPlGR=yuaW&)Rw><;&&kc%#YM8FTER_O<7M(Z zVgu8!?v|(7plroGvZ>p^^qrORaVxY5dvBGz#HO$bTS?_NZRP>^A^Ehxj-OtTO}cfR zJjyD+Db0LD1O*dS_VFX~%L3I0ACrHwscy=?e^MSV055)8)|9Gh8TfIh-A12LPlrL75NP4z=^R}sU6 zLr@ESdsoiDHXW8r#b&XVN9A$i%+QyQ$@d8@W@Fxx!9AAgr`NXhcjW~lOcXuwu56t- z^4!cgF7FW-O$VKjw~F93Ps(2j;H>s3xkQ-BXtwP=Ib7(NZ{C+9EC>ch{cV%O$j9<$ z7D}&g|M^7jBtp>a&*b+6cGA9|%O48hEb|Mwkw_3*ep((cM1*}QPZA;My0bE~tB7L7 zU&-)RT~KaO6i^N}>l-;j5OLSB+rE?CB6Y0g5Arx6f}N8`3K7lD%YB82bw9}igce3K zzhC5Fd(b8SDxbAyHJa7DC>IJfyl_cgBHL?E6kU3!9zb*ckXJhYYN3|g1IuIggtNc@ zkiV9Lk}R|8WL=4*m;aWRi7*lD(aW+!$P~d|zapO@BCbgK+BNxEA!f~8$~_`PB5gsG zN)aZKs7}iBqKC)TOzzgtBMC2RxqM_6hq7vC(4h7mG5f@$R zR2~*#B4`IcWvLj0n| zYts#ZN-%vmKAXngVJq}mAHeY_Wn{ps3(QudpYaR&8{QWEP1{B*Ny_@Scd${> zN;}o(1fot6_x#5LrL>}XTx!UbrdJdNmP#dz5?R7QMHs; z?MiypR#w=c4CIWpi)T;NRo)hWH>D_=514_%4w_9Y1rwaCQ4?j84>jfH8O@ZlNSfR`cXiPU} zDUAbhIIDf(?obP61+{|dcUelJvcKgC=Ip0r_~w7(Xs~@|eWt6W|Pz3wfrBwPxFPFS`sIo{vJ$;x`Utk?jYxJYxN;?6|9ob47-*~>EK%=jW zQYP71=#bG$Hyd~$FS_LTmV0-ENzx8Va+G-9yd>o)(}^FRvZ>O%B(ptZly3|hm;%^A zPfk!4R)e}LUwNb&)PRZAaWQ3*^0_QzGg(NX^1i^nz+xrD4o3S-+HZ<7RxFL4nW9V) zq8#4Ev`&kIR7y*faDEO!Z#lkGCY*-BAD%-Pn_ub~S9W8^F`h$U$4itQ_D+4}ROJAf zN6*btmeS9sDOpW&8|N36!f~*a8L3Ir^9u@`N$}4LN}4#ev@9t%4^E3El}+#@mE@0~ zK+nup_E|;+ATypdouOQ?jtT$~P4|{7D$SgwJmppUe$u~bq$g%8@7h&xNjojWi}`bu zerDj970XY+T=4|^XpV9$n7(r&;MTr)dc0BzXRj?+URHzf)J@eTd_>W$&ng;QU7@59 z0V92XwL(SkC2N%XMDWIIm8S)8_RCu3Fpl)5fd7kv zv=jVFKcJn%^)NPin=)1&mY*SIx0hyy<8eE8YiW`q6?BlYJK{mlT5!-4wxYv9PuOV< z|B#}MG^vwR(2-LV!sfYQ?zYk*IGWj6^1$w^c6_IjADqtY%)*$`QVxPeZ=d)Za8QYZ zQnY~lV5o0dzR3->9Y|$=d zFcF~=>DApZs;$;?_U0btVIgN6Te4SKAx6E7L?Y`ic6TuI0_-HvLoLpTkUvm`}*&c z`>aA4d|O1_Xj56j1!ar4I?$gkDm(0)7>h?PDNoxl zoqq>!to==SQiR!N1M-rH{6jf!$6&Qe`BQmDR7Su4sVuN_VAQVpOM&B&wwz)aJ#<;A zuw&2%S^p^e>=?{r(<@33kpT~0Q6|t0+hCkIX-BY0TUQ1I(73Bg3r&KZtO}iS6W zwD1L)?t4LxqnfIU``pk+fa*oeIQ$^vSt&X_;}82UUsBZsi@6vb+Ge17l>V-&MP#!m zPn-xh4>S6xrmhm2rm2A6Lx<|>dNCf}nn?#(oT1K^>6$BHK_aR|cGOf&lK3Lfx*B8B z6_ah4RAQ2Z3A}uBs%>rjyqOx{r(W{A#lDU9_g8C^mniX5qY_=)fxXHmTx-N|3H$uj zbp2)2^GbETAX{mZ0CgYPMlS@Y(Y3gFJ8v%?ada~6pMfMMhSe^ zFb)S@yJ)*0HP)6(UY()NsB~74+Cfm74{kosCHZdG$%nYUm7_j;n#>I81-H^J(> zG*0~r5@H;=xK;n+!CTh75TdpfS+|EeL)EE%TT$YxnCzi&!K8B(uK7R zQ|AyJD~@Y3-5st*hd&3;Ww0zK<&;jCTIMdAUg+9F-w#(4$YEij9aLgzN`yK&J;n@* zjD~&Ux~T{2{+a@ZB?3u=X1W5%t!>knHjGSn_uaqIA3mwzAH)tvs8k6`25nWRYo}w> zC|Vw)juv6&i-1w=&RBJiCPocUQlAnkiKOwh)h7ZTDEPBwc}(vWtH6v^^sU-zJ>{4C zpQLjS2etHBzJ!g`sdQu=wLv3%BYf)I-MzkoE&BMwPd(h>DeUepZ88w1=lMm2H)iPg zo_Jdwb&BrS3}|kwZ{#*r>(jvv)#X-b1A6EO63A*cQenx(!f}>vSS8=u4bEkhHB(;^ zfJdgO_06=YKO8?1jkD$Z)6{nM2^Z<5hO@6)smJWoG>$sjM!jU8N^{hQ9n?Fmvp$X} z?xGH`&we@TldkHaYEZlGP&>+&NhI)`vP}3;4E?#6+J!G9jkxE+4*0x}lubMIR-^es z((v9YEIl@?;%L~}RF@_6RXU z$`3F_vzHdB#g=3Il$+3TsrtGA5zP|sRa@HkXrVA#x-j zh8Ws-B1V1c&|puikV|uFDKZ_k->kAw!Nv9Q*D7GC>VOS#H9%W0LeQN-+9&}7Z56DI z5W!yz)^>@Eie~qOXn|sT=_{eyR)M*6NtjkCQZhVTdtLx%bs{v~rh-AvgN1n;6Q#W* z5JQ_qYiC99^cd}&0M6RSYQu#Jw#R9Y2^i?Kcx{ykUatnwpNsBfXwh8@6FvwMSFK1#^%7Gc=7ZNzo=aPn|md(#(32 zG_xN2D@9ASw+H>xwHmBjBTcjIvt)qsw^lHKMYCDWwL*I{HKqrk^p@HqRvwPn*GfyU zB2XB;(pp<=sd$`WV;k+9l>rg-*>>765kpdjHo;oAxui`Uv@!O^2vG4XrL)#k$a887r^%91uys4 z{;=}DI0W1rF-V(Zbq*k+=$64+sYNcpYtU{(v^-mr2$(e@U=5l-RNH756GiI{(>jIC zzI#B6uV+o3(;);tVFkZP*hM}1azvB^Kd9AqL-TIz!C~5To%ZWpwQeML3W{cpbF{Z* z+IN~2K>^`M>x|V}li_sqSZ!&-MEtH<*HI(!j47N6^)H5l{jhQjk9dfd{XSNEPSzSJ zWJ)8p$)gRIgK!E~wX;EeUa=_?v{vx(jWH9n?*uk^Y5Jr>wYf82OAW+xhz~yzQIEjn z9ZrF4&(~`4!$_axYxnrgdQ?$vq zK~E~V9hzM!f%d9ecAa%AgKy$hkEgSzYTiu_FYozi>D@5LyPNKss-^Hv4i{WO18D1M z+CF;vSkSHU{EeNdk+j8ht(#v4xa7uk;Rb4g5E{Y1)<$Cn2L%VVE!o_B?zyAWYW0AZ z(mhz|3~iV7b;`bbwFuU0mUhNA7-!AqXmCW{`tl4J=skC8S1luSppIZq%+&_k1X0cs zx_t~&(WU#e^%gnc*ckfaatIJ#Cvo`7`)$tP z1u=ewcE8oD91*h0?rucTZWY=q0u3yFwRWFS(t$M?O*We%*uzxYBt(pSP-`zj&}|QC zKL{jIU~tm?4{HyLkbO324my7w4%>W!hv%l>BichExVm1;6TsPB>$T1HBH#=$fAz%Fg74a4=P?ADf8?BX0pcWZZBbO1b@7VgnH@S_ED9{+kmJS-K)*P%Q1 zXtnuD#+f}@yzFzP0Y37X&RXu%4*4E+0B{;>aZo#HqfTR;4r{UiJnN{|%O)h9U3p6z zWdo?>u2EDYt_>oD1)y0Qrm8YrqQ`)wYKKT9#2*N2pf%lWUrsqdPU$FTc1JLK3NZ^ zb^p@7rGbY+s!Ws+&g%WGJw=2p?7Pcak}Tk%HLq%ah*{FFX|sudW&2^hwFpjQWqqTa z{uMhYoK`6MV*)tqr|Ol}6s$< zKYsdj5gg=bY?Z$b0}NY1fgW}(P>24=Qc}VCVk-y>FE>OF7L-sJy*o@_;Cyu9g#C{; zfj2cxSY){Vjb@u=BsbNgX>6=+IeJJD&d$W@_t+`*;f-#4AWca zDb*B3pH_NAHC%Js=|R@HE*H1CgYK|s=V3xmbkx5Pnfp#By~sMb21!wLL>GN|*s2xZ z^!^wo5ctFQe1)Frbmgev2o{p5-zi%~&H8a0 zy0J?@JU!Mp;29x?!Am&!I0CF7`ZSNo#J*@60Pk>xsHn7ncWvJh<*Jz3A^?I~$n{st zfcM2HdZBf|V?rjny-mP!A%=O{2Eg$LktX_KyMWzd49f_3NsPIteZXchW_X8yXT_L0 z9RuzaV@`Gq*ek|t?-XGB%B#1Oc6JUpZRKH56glEtvYK53;2n&}0c=h800?y<>Wdx$ zfvOl4)HeV=6D{JRU-t_*BgTB!Kj5ke6NgKF(^Byb+FRe(HyFe;{sJM?uD?O+o_F($ zx_AhbPnTQvQA64I?)p{LuMtq*m>5HUUyCm9t-~&dr^0Scr8)RoZ)j)i;9Y(64Fd38 zef2sGaV_PI>|Z19hBt5cgT*2#vuN_dFgUO7mw zPmTV1t{wV7e|@hF%9ak$%YAncgNSCV-9Wv+510WM_LN(7u`7c`Ca}iC^sjt3PNQY4 z%NYH8A0e#SSRLNp+r<7kPVZ|2r^45B^qw|weR@7mf7&V|l^qzb2l^6&vS!rG*I%&` z*Qa2x!T!wGFDNz~iz(Dw*}$o6?i9VkSH3rorFsv0p|BlObvTV{%jh@L^&xgJEtskQ zU?omvcg@m=*@#oAf4RQgPJERHViL_ z*k|>h#F&)l^vhyQ=4SmNG3Lr<{e3a!;`91CF=kAvq0-71^kqUc8@UDAMj?uF&VRP* z_K(i+tnD!kKl=KMdWD$#k(YHpHt!`E{|fQ!r%L^P`-g5&G6UA8)u7J5qIa~Tcp&uI zsXu5_#UoqWrKj1g;7mhz>xDul`t@$TOoU0GbN1+6MVMH2W{)0UjiMTR1tq{ucw?`A zmq^@L5ipjW+^5540BbenCGv4auph0lU!Qavbme|MM}$sftq$m;#e&)PgF0N?BGidN z^70`))&7wop1GdK^mlEHyinS_r4JF8B-`?i{+L}ImpA3O{*_H0&wS1=x<>nbpzCbj z34OLrG6SMi8E)(yJvqw1#tisEFSlX1Md!cJ4~Q@c^u5#i&mv4L{pyT

5kizSJY^X7lp9 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

4*wQFFx4U2X` zL4nIVcruW-_klBwevzke0H2$8StackBase @@ -360,7 +363,7 @@ VOID InitializeDispatcherData ( IN EFI_PEI_SERVICES **PeiServices, IN PEI_CORE_INSTANCE *OldCoreData, - IN EFI_PEI_STARTUP_DESCRIPTOR *PeiStartupDescriptor + IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData ) /*++ @@ -373,7 +376,9 @@ Arguments: PeiServices - The PEI core services table. OldCoreData - Pointer to old core data (before switching stack). NULL if being run in non-permament memory mode. - PeiStartupDescriptor - Information and services provided by SEC phase. + SecCoreData - Points to a data structure containing information about the PEI core's operating + environment, such as the size and location of temporary RAM, the stack location and + the BFV location. Returns: @@ -386,8 +391,8 @@ Returns: PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS (PeiServices); if (OldCoreData == NULL) { - PrivateData->DispatchData.CurrentFvAddress = (EFI_FIRMWARE_VOLUME_HEADER *) PeiStartupDescriptor->BootFirmwareVolume; - PrivateData->DispatchData.BootFvAddress = (EFI_FIRMWARE_VOLUME_HEADER *) PeiStartupDescriptor->BootFirmwareVolume; + PrivateData->DispatchData.CurrentFvAddress = (EFI_FIRMWARE_VOLUME_HEADER *) SecCoreData->BootFirmwareVolumeBase; + PrivateData->DispatchData.BootFvAddress = (EFI_FIRMWARE_VOLUME_HEADER *) SecCoreData->BootFirmwareVolumeBase; } else { // diff --git a/MdeModulePkg/Core/Pei/Dispatcher/Stack.c b/MdeModulePkg/Core/Pei/Dispatcher/Stack.c index 9e74eee587..551e23826c 100644 --- a/MdeModulePkg/Core/Pei/Dispatcher/Stack.c +++ b/MdeModulePkg/Core/Pei/Dispatcher/Stack.c @@ -47,9 +47,33 @@ PeiSwitchStacks ( IN SWITCH_STACK_ENTRY_POINT EntryPoint, IN VOID *Context1, OPTIONAL IN VOID *Context2, OPTIONAL + IN VOID *Context3, OPTIONAL IN VOID *NewStack, IN VOID *NewBsp ) { - SwitchStack (EntryPoint, Context1, Context2, NewStack); + BASE_LIBRARY_JUMP_BUFFER JumpBuffer; + + ASSERT (EntryPoint != NULL); + ASSERT (NewStack != NULL); + + // + // Stack should be aligned with CPU_STACK_ALIGNMENT + // + ASSERT (((UINTN)NewStack & (CPU_STACK_ALIGNMENT - 1)) == 0); + + JumpBuffer.Eip = (UINTN)EntryPoint; + JumpBuffer.Esp = (UINTN)NewStack - sizeof (VOID*); + JumpBuffer.Esp -= sizeof (Context1) + sizeof (Context2) + sizeof(Context3); + ((VOID**)JumpBuffer.Esp)[1] = Context1; + ((VOID**)JumpBuffer.Esp)[2] = Context2; + ((VOID**)JumpBuffer.Esp)[3] = Context3; + + LongJump (&JumpBuffer, (UINTN)-1); + + + // + // InternalSwitchStack () will never return + // + ASSERT (FALSE); } diff --git a/MdeModulePkg/Core/Pei/Ipf/InternalSwitchStack.c b/MdeModulePkg/Core/Pei/Ipf/InternalSwitchStack.c new file mode 100644 index 0000000000..4e5df1a44a --- /dev/null +++ b/MdeModulePkg/Core/Pei/Ipf/InternalSwitchStack.c @@ -0,0 +1,78 @@ +/** @file + SwitchStack() function for IPF. + + Copyright (c) 2007, 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 + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include + +VOID +EFIAPI +IpfAsmSwitchStack ( + IN SWITCH_STACK_ENTRY_POINT EntryPoint, + IN VOID *ConText1, OPTIONAL + IN VOID *Context2, OPTIONAL + IN VOID *Context3, OPTIONAL + IN VOID *NewStack, + IN VOID *NewBsp + ); + +/** + Transfers control to a function starting with a new stack. + + Transfers control to the function specified by EntryPoint using the + new stack specified by NewStack and passing in the parameters specified + by Context1 and Context2. Context1 and Context2 are optional and may + be NULL. The function EntryPoint must never return. + Marker will be ignored on IA-32, x64, and EBC. + IPF CPUs expect one additional parameter of type VOID * that specifies + the new backing store pointer. + + If EntryPoint is NULL, then ASSERT(). + If NewStack is NULL, then ASSERT(). + + @param EntryPoint A pointer to function to call with the new stack. + @param Context1 A pointer to the context to pass into the EntryPoint + function. + @param Context2 A pointer to the context to pass into the EntryPoint + function. + @param NewStack A pointer to the new stack to use for the EntryPoint + function. + @param Marker VA_LIST marker for the variable argument list. + +**/ +VOID +EFIAPI +InternalSwitchStack ( + IN SWITCH_STACK_ENTRY_POINT EntryPoint, + IN VOID *Context1, OPTIONAL + IN VOID *Context2, OPTIONAL + IN VOID *Context3, OPTIONAL + IN VOID *NewStack, + IN VA_LIST Marker + ) + +{ + VOID *NewBsp; + + // + // Get new backing store pointer from variable list + // + NewBsp = VA_ARG (Marker, VOID *); + + // + // Stack should be aligned with CPU_STACK_ALIGNMENT + // + ASSERT (((UINTN)NewStack & (CPU_STACK_ALIGNMENT - 1)) == 0); + ASSERT (((UINTN)NewBsp & (CPU_STACK_ALIGNMENT - 1)) == 0); + + IpfAsmSwitchStack (EntryPoint, Context1, Context2, Context3, NewStack, NewBsp); +} diff --git a/MdeModulePkg/Core/Pei/Ipf/Stack.c b/MdeModulePkg/Core/Pei/Ipf/Stack.c index 56a876df15..7ffdac54c7 100644 --- a/MdeModulePkg/Core/Pei/Ipf/Stack.c +++ b/MdeModulePkg/Core/Pei/Ipf/Stack.c @@ -16,6 +16,17 @@ #include +VOID +EFIAPI +InternalSwitchStack ( + IN SWITCH_STACK_ENTRY_POINT EntryPoint, + IN VOID *Context1, OPTIONAL + IN VOID *Context2, OPTIONAL + IN VOID *Context3, OPTIONAL + IN VOID *NewStack, + IN VA_LIST Marker + ); + /** Transfers control to a function starting with a new stack. @@ -44,15 +55,18 @@ PeiSwitchStacks ( IN SWITCH_STACK_ENTRY_POINT EntryPoint, IN VOID *Context1, OPTIONAL IN VOID *Context2, OPTIONAL + IN VOID *Context3, OPTIONAL IN VOID *NewStack, IN VOID *NewBsp ) { - SwitchStack ( + InternalSwitchStack( EntryPoint, Context1, Context2, + Context3, NewStack, NewBsp ); + } diff --git a/MdeModulePkg/Core/Pei/Ipf/SwitchStack.s b/MdeModulePkg/Core/Pei/Ipf/SwitchStack.s new file mode 100644 index 0000000000..2f20703913 --- /dev/null +++ b/MdeModulePkg/Core/Pei/Ipf/SwitchStack.s @@ -0,0 +1,52 @@ +/// @file +/// IPF specific SwitchStack() function +/// +/// Copyright (c) 2006, 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 +/// http://opensource.org/licenses/bsd-license.php +/// +/// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +/// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +/// +/// Module Name: SwitchStack.s +/// +/// + +.auto +.text + +.proc IpfAsmSwitchStack +.type IpfAsmSwitchStack, @function +.regstk 6, 0, 0, 0 +IpfAsmSwitchStack:: + mov r14 = ar.rsc + movl r2 = ~((((1 << 14) - 1) << 16) | 3) + + mov r17 = in1 + mov r18 = in2 + mov r19 = in3 + and r2 = r14, r2 + + mov ar.rsc = r2 + mov sp = in4 + mov r20 = in5 + + ld8.nt1 r16 = [in0], 8 + ld8.nta gp = [in0] + mov r3 = -1 + + loadrs + mov ar.bspstore = r20 + mov b7 = r16 + + alloc r2 = ar.pfs, 0, 0, 3, 0 + mov out0 = r17 + mov out1 = r18 + mov out2 = r19 + + mov ar.rnat = r3 + mov ar.rsc = r14 + br.call.sptk.many b0 = b7 +.endp IpfAsmSwitchStack diff --git a/MdeModulePkg/Core/Pei/Memory/MemoryServices.c b/MdeModulePkg/Core/Pei/Memory/MemoryServices.c index 431084f83b..49e9f7f552 100644 --- a/MdeModulePkg/Core/Pei/Memory/MemoryServices.c +++ b/MdeModulePkg/Core/Pei/Memory/MemoryServices.c @@ -24,7 +24,7 @@ Abstract: VOID InitializeMemoryServices ( IN EFI_PEI_SERVICES **PeiServices, - IN EFI_PEI_STARTUP_DESCRIPTOR *PeiStartupDescriptor, + IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, IN PEI_CORE_INSTANCE *OldCoreData ) /*++ @@ -36,7 +36,10 @@ Routine Description: Arguments: PeiServices - The PEI core services table. - PeiStartupDescriptor - Information and services provided by SEC phase. + SecCoreData - Points to a data structure containing information about the PEI core's operating + environment, such as the size and location of temporary RAM, the stack location and + the BFV location. + OldCoreData - Pointer to the PEI Core data. NULL if being run in non-permament memory mode. @@ -47,7 +50,6 @@ Returns: --*/ { PEI_CORE_INSTANCE *PrivateData; - UINT64 SizeOfCarHeap; PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS (PeiServices); PrivateData->SwitchStackSignal = FALSE; @@ -56,18 +58,12 @@ Returns: PrivateData->PeiMemoryInstalled = FALSE; - PrivateData->BottomOfCarHeap = (VOID *) (((UINTN)(VOID *)(&PrivateData)) - & (~((PeiStartupDescriptor->SizeOfCacheAsRam) - 1))); - PrivateData->TopOfCarHeap = (VOID *)((UINTN)(PrivateData->BottomOfCarHeap) + PeiStartupDescriptor->SizeOfCacheAsRam); - // - // SizeOfCarHeap is 1/2 (arbitrary) of CacheAsRam Size. - // - SizeOfCarHeap = (UINT64) PeiStartupDescriptor->SizeOfCacheAsRam; - SizeOfCarHeap = RShiftU64 (SizeOfCarHeap, 1); + PrivateData->BottomOfCarHeap = SecCoreData->PeiTemporaryRamBase; + PrivateData->TopOfCarHeap = (VOID *)((UINTN)(PrivateData->BottomOfCarHeap) + SecCoreData->PeiTemporaryRamSize); DEBUG_CODE_BEGIN (); - PrivateData->SizeOfCacheAsRam = PeiStartupDescriptor->SizeOfCacheAsRam; - PrivateData->MaxTopOfCarHeap = (VOID *) ((UINTN) PrivateData->BottomOfCarHeap + (UINTN) SizeOfCarHeap); + PrivateData->SizeOfCacheAsRam = SecCoreData->PeiTemporaryRamSize + SecCoreData->StackSize; + PrivateData->MaxTopOfCarHeap = (VOID *) ((UINTN) PrivateData->BottomOfCarHeap + (UINTN) PrivateData->SizeOfCacheAsRam); DEBUG_CODE_END (); PrivateData->HobList.Raw = PrivateData->BottomOfCarHeap; @@ -75,7 +71,7 @@ Returns: PeiCoreBuildHobHandoffInfoTable ( BOOT_WITH_FULL_CONFIGURATION, (EFI_PHYSICAL_ADDRESS) (UINTN) PrivateData->BottomOfCarHeap, - (UINTN) SizeOfCarHeap + (UINTN) SecCoreData->PeiTemporaryRamSize ); // // Copy PeiServices from ROM to Cache in PrivateData diff --git a/MdeModulePkg/Core/Pei/PeiMain.h b/MdeModulePkg/Core/Pei/PeiMain.h index 9e0d7a8530..b4d2462116 100644 --- a/MdeModulePkg/Core/Pei/PeiMain.h +++ b/MdeModulePkg/Core/Pei/PeiMain.h @@ -177,8 +177,9 @@ typedef union { EFI_STATUS EFIAPI PeiCore ( - IN EFI_PEI_STARTUP_DESCRIPTOR *PeiStartupDescriptor, - IN VOID *Data + IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, + IN CONST EFI_PEI_PPI_DESCRIPTOR *PpList, + IN VOID *Data ) /*++ @@ -248,7 +249,7 @@ Returns: EFI_STATUS PeiDispatcher ( - IN EFI_PEI_STARTUP_DESCRIPTOR *PeiStartupDescriptor, + IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, IN PEI_CORE_INSTANCE *PrivateData, IN PEI_CORE_DISPATCH_DATA *DispatchData ) @@ -278,7 +279,7 @@ VOID InitializeDispatcherData ( IN EFI_PEI_SERVICES **PeiServices, IN PEI_CORE_INSTANCE *OldCoreData, - IN EFI_PEI_STARTUP_DESCRIPTOR *PeiStartupDescriptor + IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData ) /*++ @@ -956,7 +957,7 @@ Returns: VOID InitializeMemoryServices ( IN EFI_PEI_SERVICES **PeiServices, - IN EFI_PEI_STARTUP_DESCRIPTOR *PeiStartupDescriptor, + IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, IN PEI_CORE_INSTANCE *OldCoreData ) /*++ @@ -1208,6 +1209,7 @@ PeiSwitchStacks ( IN SWITCH_STACK_ENTRY_POINT EntryPoint, IN VOID *Context1, OPTIONAL IN VOID *Context2, OPTIONAL + IN VOID *Context3, OPTIONAL IN VOID *NewStack, IN VOID *NewBsp ); diff --git a/MdeModulePkg/Core/Pei/PeiMain.inf b/MdeModulePkg/Core/Pei/PeiMain.inf index 245e979bd6..df9ca825c7 100644 --- a/MdeModulePkg/Core/Pei/PeiMain.inf +++ b/MdeModulePkg/Core/Pei/PeiMain.inf @@ -59,6 +59,8 @@ Ipf/IpfCpuCore.s Ipf/IpfCpuCore.i Ipf/SwitchToCacheMode.c + Ipf/InternalSwitchStack.c + Ipf/SwitchStack.s [Sources.EBC] Dispatcher/Stack.c @@ -77,7 +79,7 @@ PerformanceLib HobLib BaseLib - OldPeiCoreEntryPoint + PeiCoreEntryPoint DebugLib [Guids] diff --git a/MdeModulePkg/Core/Pei/PeiMain/PeiMain.c b/MdeModulePkg/Core/Pei/PeiMain/PeiMain.c index b2f7807479..a7944e130c 100644 --- a/MdeModulePkg/Core/Pei/PeiMain/PeiMain.c +++ b/MdeModulePkg/Core/Pei/PeiMain/PeiMain.c @@ -81,8 +81,9 @@ static EFI_PEI_SERVICES mPS = { EFI_STATUS EFIAPI PeiCore ( - IN EFI_PEI_STARTUP_DESCRIPTOR *PeiStartupDescriptor, - IN VOID *Data + IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, + IN CONST EFI_PEI_PPI_DESCRIPTOR *PpList, + IN VOID *Data ) /*++ @@ -94,8 +95,16 @@ Routine Description: Arguments: - PeiStartupDescriptor - Information and services provided by SEC phase. - OldCoreData - Pointer to old core data that is used to initialize the + SecCoreData - Points to a data structure containing information about the PEI core's operating + environment, such as the size and location of temporary RAM, the stack location and + the BFV location. + PpiList - Points to a list of one or more PPI descriptors to be installed initially by the PEI core. + An empty PPI list consists of a single descriptor with the end-tag + EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST. As part of its initialization + phase, the PEI Foundation will add these SEC-hosted PPIs to its PPI database such + that both the PEI Foundation and any modules can leverage the associated service + calls and/or code in these early PPIs + Data - Pointer to old core data that is used to initialize the core's data areas. Returns: @@ -142,13 +151,13 @@ Returns: // ProcessLibraryConstructorList (NULL, &PrivateData.PS); - InitializeMemoryServices (&PrivateData.PS, PeiStartupDescriptor, OldCoreData); + InitializeMemoryServices (&PrivateData.PS, SecCoreData, OldCoreData); InitializePpiServices (&PrivateData.PS, OldCoreData); InitializeSecurityServices (&PrivateData.PS, OldCoreData); - InitializeDispatcherData (&PrivateData.PS, OldCoreData, PeiStartupDescriptor); + InitializeDispatcherData (&PrivateData.PS, OldCoreData, SecCoreData); if (OldCoreData != NULL) { @@ -210,8 +219,8 @@ Returns: // // If SEC provided any PPI services to PEI, install them. // - if (PeiStartupDescriptor->DispatchTable != NULL) { - Status = PeiServicesInstallPpi (PeiStartupDescriptor->DispatchTable); + if (PpList != NULL) { + Status = PeiServicesInstallPpi (PpList); ASSERT_EFI_ERROR (Status); } } @@ -221,7 +230,7 @@ Returns: // // Call PEIM dispatcher // - PeiDispatcher (PeiStartupDescriptor, &PrivateData, DispatchData); + PeiDispatcher (SecCoreData, &PrivateData, DispatchData); // // Check if InstallPeiMemory service was called. diff --git a/Nt32Pkg/Sec/SecMain.c b/Nt32Pkg/Sec/SecMain.c index ab66dfc52c..a1ab3f20ef 100644 --- a/Nt32Pkg/Sec/SecMain.c +++ b/Nt32Pkg/Sec/SecMain.c @@ -484,6 +484,63 @@ Returns: return EFI_SUCCESS; } +/** + Transfers control to a function starting with a new stack. + + Transfers control to the function specified by EntryPoint using the new stack + specified by NewStack and passing in the parameters specified by Context1 and + Context2. Context1 and Context2 are optional and may be NULL. The function + EntryPoint must never return. + + If EntryPoint is NULL, then ASSERT(). + If NewStack is NULL, then ASSERT(). + + @param EntryPoint A pointer to function to call with the new stack. + @param Context1 A pointer to the context to pass into the EntryPoint + function. + @param Context2 A pointer to the context to pass into the EntryPoint + function. + @param NewStack A pointer to the new stack to use for the EntryPoint + function. + @param NewBsp A pointer to the new BSP for the EntryPoint on IPF. It's + Reserved on other architectures. + +**/ +VOID +EFIAPI +PeiSwitchStacks ( + IN SWITCH_STACK_ENTRY_POINT EntryPoint, + IN VOID *Context1, OPTIONAL + IN VOID *Context2, OPTIONAL + IN VOID *Context3, OPTIONAL + IN VOID *NewStack + ) +{ + BASE_LIBRARY_JUMP_BUFFER JumpBuffer; + + ASSERT (EntryPoint != NULL); + ASSERT (NewStack != NULL); + + // + // Stack should be aligned with CPU_STACK_ALIGNMENT + // + ASSERT (((UINTN)NewStack & (CPU_STACK_ALIGNMENT - 1)) == 0); + + JumpBuffer.Eip = (UINTN)EntryPoint; + JumpBuffer.Esp = (UINTN)NewStack - sizeof (VOID*); + JumpBuffer.Esp -= sizeof (Context1) + sizeof (Context2) + sizeof(Context3); + ((VOID**)JumpBuffer.Esp)[1] = Context1; + ((VOID**)JumpBuffer.Esp)[2] = Context2; + ((VOID**)JumpBuffer.Esp)[3] = Context3; + + LongJump (&JumpBuffer, (UINTN)-1); + + + // + // InternalSwitchStack () will never return + // + ASSERT (FALSE); +} VOID SecLoadFromCore ( @@ -514,7 +571,7 @@ Returns: UINT64 PeiCoreSize; EFI_PHYSICAL_ADDRESS PeiCoreEntryPoint; EFI_PHYSICAL_ADDRESS PeiImageAddress; - EFI_PEI_STARTUP_DESCRIPTOR *PeiStartup; + EFI_SEC_PEI_HAND_OFF *SecCoreData; // // Compute Top Of Memory for Stack and PEI Core Allocations @@ -524,7 +581,7 @@ Returns: // // Allocate 128KB for the Stack // - TopOfStack = (VOID *)((UINTN)TopOfMemory - sizeof (EFI_PEI_STARTUP_DESCRIPTOR) - CPU_STACK_ALIGNMENT); + TopOfStack = (VOID *)((UINTN)TopOfMemory - sizeof (EFI_SEC_PEI_HAND_OFF) - CPU_STACK_ALIGNMENT); TopOfStack = ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT); TopOfMemory = TopOfMemory - STACK_SIZE; @@ -536,10 +593,16 @@ Returns: // // Bind this information into the SEC hand-off state // - PeiStartup = (EFI_PEI_STARTUP_DESCRIPTOR *) (UINTN) TopOfStack; - PeiStartup->DispatchTable = (EFI_PEI_PPI_DESCRIPTOR *) &gPrivateDispatchTable; - PeiStartup->SizeOfCacheAsRam = STACK_SIZE; - PeiStartup->BootFirmwareVolume = BootFirmwareVolumeBase; + SecCoreData = (EFI_SEC_PEI_HAND_OFF*)(UINTN) TopOfStack; + SecCoreData->DataSize = sizeof(EFI_SEC_PEI_HAND_OFF); + SecCoreData->BootFirmwareVolumeBase = (VOID*)BootFirmwareVolumeBase; + SecCoreData->BootFirmwareVolumeSize = FixedPcdGet32(PcdWinNtFirmwareFdSize); + SecCoreData->TemporaryRamBase = (VOID*)(UINTN)TopOfMemory; + SecCoreData->TemporaryRamSize = STACK_SIZE; + SecCoreData->PeiTemporaryRamBase = SecCoreData->TemporaryRamBase; + SecCoreData->PeiTemporaryRamSize = (UINTN)RShiftU64((UINT64)STACK_SIZE,1); + SecCoreData->StackBase = (VOID*)((UINTN)SecCoreData->TemporaryRamBase + (UINTN)SecCoreData->TemporaryRamSize); + SecCoreData->StackSize = (UINTN)RShiftU64((UINT64)STACK_SIZE,1); // // Load the PEI Core from a Firmware Volume @@ -553,12 +616,14 @@ Returns: if (EFI_ERROR (Status)) { return ; } + // // Transfer control to the PEI Core // - SwitchStack ( + PeiSwitchStacks ( (SWITCH_STACK_ENTRY_POINT) (UINTN) PeiCoreEntryPoint, - PeiStartup, + SecCoreData, + (VOID *) (UINTN) ((EFI_PEI_PPI_DESCRIPTOR *) &gPrivateDispatchTable), NULL, TopOfStack ); diff --git a/Nt32Pkg/Sec/SecMain.inf b/Nt32Pkg/Sec/SecMain.inf index db891436e2..170e87188d 100644 --- a/Nt32Pkg/Sec/SecMain.inf +++ b/Nt32Pkg/Sec/SecMain.inf @@ -68,6 +68,9 @@ #gEfiNt32PkgTokenSpaceGuid.PcdWinNtMemorySizeForSecMain #gEfiNt32PkgTokenSpaceGuid.PcdWinNtFirmwareVolume +[FixedPcd.common] + gEfiNt32PkgTokenSpaceGuid.PcdWinNtFirmwareFdSize + [BuildOptions.common] MSFT:DEBUG_*_IA32_DLINK_FLAGS = /out:"$(BIN_DIR)\SecMain.exe" /base:0x10000000 /pdb:"$(BIN_DIR)\SecMain.pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib" /LIBPATH:"$(VCINSTALLDIR)\PlatformSdk\Lib" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib MSFT:DEBUG_*_IA32_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /Od /DSTRING_ARRAY_NAME=SecMainStrings /FI$(DEST_DIR_DEBUG)/AutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm -- 2.39.2