]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/EbcDxe/Ia32/EbcLowLevel.S
1) Add type cast for better coding style.
[mirror_edk2.git] / MdeModulePkg / Universal / EbcDxe / Ia32 / EbcLowLevel.S
1 #/** @file
2 #
3 # Low level IA32 specific EBC support routines.
4 #
5 # Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
6 # This program and the accompanying materials
7 # are licensed and made available under the terms and conditions of the BSD License
8 # which accompanies this distribution. The full text of the license may be found at
9 # http://opensource.org/licenses/bsd-license.php
10 #
11 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 #
14 #**/
15
16 ASM_GLOBAL ASM_PFX(CopyMem)
17 ASM_GLOBAL ASM_PFX(EbcInterpret)
18 ASM_GLOBAL ASM_PFX(ExecuteEbcImageEntryPoint)
19
20 ASM_GLOBAL ASM_PFX(EbcLLCALLEXNative)
21 ASM_PFX(EbcLLCALLEXNative):
22 push %ebp
23 push %ebx
24 mov %esp,%ebp
25 mov 0xc(%esp),%ecx
26 mov 0x14(%esp),%eax
27 mov 0x10(%esp),%edx
28 sub %edx,%eax
29 sub %eax,%esp
30 mov %esp,%ebx
31 push %ecx
32 push %eax
33 push %edx
34 push %ebx
35 call ASM_PFX(CopyMem)
36 pop %eax
37 pop %eax
38 pop %eax
39 pop %ecx
40 call *%ecx
41 mov %ebp,%esp
42 mov %ebp,%esp
43 pop %ebx
44 pop %ebp
45 ret
46
47 ASM_GLOBAL ASM_PFX(EbcLLEbcInterpret)
48 ASM_PFX(EbcLLEbcInterpret):
49 # Construct new stack
50 push %ebp
51 mov %esp, %ebp
52 push %esi
53 push %edi
54 sub $0x40, %esp
55 push %eax
56 mov %ebp, %esi
57 add $0x8, %esi
58 mov %esp, %edi
59 add $0x4, %edi
60 mov $0x10, %ecx
61 rep movsd
62
63 # call C-code
64 call ASM_PFX(EbcInterpret)
65 add $0x44, %esp
66 pop %edi
67 pop %esi
68 pop %ebp
69 ret
70
71 ASM_GLOBAL ASM_PFX(EbcLLExecuteEbcImageEntryPoint)
72 ASM_PFX(EbcLLExecuteEbcImageEntryPoint):
73 # Construct new stack
74 mov %eax, -0xC(%esp)
75 mov 0x4(%esp), %eax
76 mov %eax, -0x8(%esp)
77 mov 0x8(%esp), %eax
78 mov %eax, -0x4(%esp)
79 # call C-code
80 sub $0xC, %esp
81 call ASM_PFX(ExecuteEbcImageEntryPoint)
82 add $0xC, %esp
83 ret