#/** @file # # Low level IA32 specific EBC support routines. # # Copyright (c) 2007 - 2011, 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. # #**/ ASM_GLOBAL ASM_PFX(CopyMem) ASM_GLOBAL ASM_PFX(EbcInterpret) ASM_GLOBAL ASM_PFX(ExecuteEbcImageEntryPoint) ASM_GLOBAL ASM_PFX(EbcLLCALLEXNative) ASM_PFX(EbcLLCALLEXNative): push %ebp push %ebx mov %esp,%ebp mov 0xc(%esp),%ecx mov 0x14(%esp),%eax mov 0x10(%esp),%edx sub %edx,%eax sub %eax,%esp mov %esp,%ebx push %ecx push %eax push %edx push %ebx call ASM_PFX(CopyMem) pop %eax pop %eax pop %eax pop %ecx call *%ecx mov %ebp,%esp mov %ebp,%esp pop %ebx pop %ebp ret ASM_GLOBAL ASM_PFX(EbcLLEbcInterpret) ASM_PFX(EbcLLEbcInterpret): # Construct new stack push %ebp mov %esp, %ebp push %esi push %edi sub $0x40, %esp push %eax mov %ebp, %esi add $0x8, %esi mov %esp, %edi add $0x4, %edi mov $0x10, %ecx rep movsd # call C-code call ASM_PFX(EbcInterpret) add $0x44, %esp pop %edi pop %esi pop %ebp ret ASM_GLOBAL ASM_PFX(EbcLLExecuteEbcImageEntryPoint) ASM_PFX(EbcLLExecuteEbcImageEntryPoint): # Construct new stack mov %eax, -0xC(%esp) mov 0x4(%esp), %eax mov %eax, -0x8(%esp) mov 0x8(%esp), %eax mov %eax, -0x4(%esp) # call C-code sub $0xC, %esp call ASM_PFX(ExecuteEbcImageEntryPoint) add $0xC, %esp ret