X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkModulePkg%2FUniversal%2FEbc%2FDxe%2Fx64%2FEbcLowLevel.S;fp=EdkModulePkg%2FUniversal%2FEbc%2FDxe%2Fx64%2FEbcLowLevel.S;h=d9f638643af49b8f37fafab3f006c821308e4456;hp=61322a3264c6d2c0c9d439f56b9b422d75c0709b;hb=73ebf379a4bd48c69befdd8439ac9be952a5814f;hpb=784220c3f79a1c66818ae4dcca2afe7db06a0351 diff --git a/EdkModulePkg/Universal/Ebc/Dxe/x64/EbcLowLevel.S b/EdkModulePkg/Universal/Ebc/Dxe/x64/EbcLowLevel.S index 61322a3264..d9f638643a 100644 --- a/EdkModulePkg/Universal/Ebc/Dxe/x64/EbcLowLevel.S +++ b/EdkModulePkg/Universal/Ebc/Dxe/x64/EbcLowLevel.S @@ -44,6 +44,8 @@ # # Destroys no working registers. #**************************************************************************** +.global _CopyMem; + # VOID EbcLLCALLEXNative(UINTN FuncAddr, UINTN NewStackPointer, VOID *FramePtr) .global _EbcLLCALLEXNative; _EbcLLCALLEXNative: @@ -56,7 +58,12 @@ _EbcLLCALLEXNative: mov %rcx, %rbx # Set stack pointer to new value - mov %rdx, %rsp + sub %r8, %rdx + sub %rsp, %r8 + mov %rsp, %rcx + sub %rsp, 0x20 + call _CopyMem + add %rsp, 0x20 # Considering the worst case, load 4 potiential arguments # into registers.