mirror of https://github.com/acidanthera/audk.git
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:
parent
66775d1cb6
commit
045e90accd
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue