]> git.proxmox.com Git - mirror_edk2.git/blame - EmbeddedPkg/Scripts/LauterbachT32/EfiProcessTeImage.cmm
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / EmbeddedPkg / Scripts / LauterbachT32 / EfiProcessTeImage.cmm
CommitLineData
98790d81 1;\r
2; Copyright (c) 2011, Hewlett-Packard Company. All rights reserved.<BR>\r
3; \r
878b807a 4; SPDX-License-Identifier: BSD-2-Clause-Patent\r
98790d81 5; \r
6\r
7 LOCAL &imgstart &strippedsize &debugdirentryrva &debugtype &debugrva &dwarfsig &elfbase &elfpath &pathoffset\r
8 ENTRY &imgstart\r
9 \r
10 &imgstart=&imgstart\r
11 print "TE image found at &imgstart"\r
12\r
13 ; determine pe header bytes removed to account for in rva references\r
14 &strippedsize=(Data.Long(a:&imgstart+0x4)&0xffff0000)>>16.\r
15 &strippedsize=&strippedsize-0x28\r
16\r
17 &debugdirentryrva=Data.Long(a:&imgstart+0x20)\r
18 if &debugdirentryrva==0\r
19 (\r
20 print "no debug dir for image at &imgstart"\r
21 enddo\r
22 )\r
23 &debugdirentryrva=&debugdirentryrva-&strippedsize\r
24\r
25 &debugtype=Data.Long(a:&imgstart+&debugdirentryrva+0xc)\r
26 if (&debugtype!=0xdf)&&(&debugtype!=0x02)\r
27 (\r
28 print "debug type is not dwarf for image at &imgstart, it's &debugtype"\r
29 enddo\r
30 )\r
31 \r
32 &debugrva=Data.Long(a:&imgstart+&debugdirentryrva+0x14)\r
33 &debugrva=&debugrva-&strippedsize;\r
34 &dwarfsig=Data.Long(a:&imgstart+&debugrva);\r
35 if &dwarfsig==0x66727764\r
36 (\r
37 &pathoffset=0xc\r
38 )\r
39 else\r
40 (\r
41 if &dwarfsig==0x3031424E\r
42 (\r
43 &pathoffset=0x10\r
44 )\r
45 else\r
46 (\r
47 print "debug signature not found for image at &imgstart, its &dwarfsig"\r
48 enddo\r
49 )\r
50 )\r
51\r
52 &elfpath=Data.String(c:&imgstart+&debugrva+&pathoffset)\r
53\r
54 ; elf base is baseofcode (we hope that for TE images it's not baseofdata)\r
55 &elfbase=&imgstart+Data.Long(a:&imgstart+0xc)-&strippedsize\r
56\r
57 print "found path &elfpath"\r
58 ; $fprintf 50, "load /ni /np /a %s &0x%x\n",elfpath,elfbase$;\r
59 ON ERROR GOSUB\r
60 return\r
61 data.load.elf &elfpath &elfbase /NOCODE /NOCLEAR\r
62 ON error\r
63\r
64enddo\r