Fix bug in EBC thunk for X64 that appears when higher levels of compiler optimization is used.

This is a temporary fix that should for for most tool chains.  A more complete fix will be required to guarantee compatibility with all tool chains.


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8970 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
mdkinney 2009-07-17 22:56:34 +00:00
parent 66775d1cb6
commit 045e90accd
2 changed files with 4 additions and 3 deletions

View File

@ -92,6 +92,7 @@ EbcLLCALLEXNative ENDP
; The contents of the register in which the entry point is passed. ; The contents of the register in which the entry point is passed.
; ;
EbcLLGetEbcEntryPoint PROC PUBLIC EbcLLGetEbcEntryPoint PROC PUBLIC
mov rax, r10
ret ret
EbcLLGetEbcEntryPoint ENDP EbcLLGetEbcEntryPoint ENDP

View File

@ -412,14 +412,14 @@ EbcCreateThunks (
// //
// Add code bytes to load up a processor register with the EBC entry point. // Add code bytes to load up a processor register with the EBC entry point.
// mov rax, 123456789abcdef0h => 48 B8 F0 DE BC 9A 78 56 34 12 // mov r10, 123456789abcdef0h => 48 B8 F0 DE BC 9A 78 56 34 12
// The first 8 bytes of the thunk entry is the address of the EBC // The first 8 bytes of the thunk entry is the address of the EBC
// entry point. // entry point.
// //
*Ptr = 0x48; *Ptr = 0x49;
Ptr++; Ptr++;
Size--; Size--;
*Ptr = 0xB8; *Ptr = 0xBA;
Ptr++; Ptr++;
Size--; Size--;
Addr = (UINT64) EbcEntryPoint; Addr = (UINT64) EbcEntryPoint;