1 #------------------------------------------------------------------------------
3 # Manage differenced between UNIX ABI and EFI/Windows ABI
5 # For IA-32 the only difference is Mac OS X requires a 16-byte aligned stack.
6 # For Linux this stack adjustment is a no-op, but we may as well make the
9 # Copyright (c) 2008 - 2011, Apple Inc. All rights reserved.<BR>
10 # This program and the accompanying materials
11 # are licensed and made available under the terms and conditions of the BSD License
12 # which accompanies this distribution. The full text of the license may be found at
13 # http://opensource.org/licenses/bsd-license.php
15 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
16 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 #------------------------------------------------------------------------------
25 // EMU_THUNK_PROTOCOL gaskets (EFIAPI to UNIX ABI)
29 ASM_GLOBAL ASM_PFX(GasketSecWriteStdErr)
30 ASM_PFX(GasketSecWriteStdErr):
33 subl $24, %esp // sub extra 16 from the stack for alignment
34 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
40 call ASM_PFX(SecWriteStdErr)
46 ASM_GLOBAL ASM_PFX(GasketSecConfigStdIn)
47 ASM_PFX(GasketSecConfigStdIn):
50 subl $24, %esp // sub extra 16 from the stack for alignment
51 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
57 call ASM_PFX(SecConfigStdIn)
62 ASM_GLOBAL ASM_PFX(GasketSecWriteStdOut)
63 ASM_PFX(GasketSecWriteStdOut):
66 subl $24, %esp // sub extra 16 from the stack for alignment
67 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
73 call ASM_PFX(SecWriteStdOut)
78 ASM_GLOBAL ASM_PFX(GasketSecReadStdIn)
79 ASM_PFX(GasketSecReadStdIn):
82 subl $24, %esp // sub extra 16 from the stack for alignment
83 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
89 call ASM_PFX(SecReadStdIn)
94 ASM_GLOBAL ASM_PFX(GasketSecPollStdIn)
95 ASM_PFX(GasketSecPollStdIn):
98 subl $24, %esp // sub extra 16 from the stack for alignment
99 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
105 call ASM_PFX(SecPollStdIn)
111 ASM_GLOBAL ASM_PFX(GasketSecSetTimer)
112 ASM_PFX(GasketSecSetTimer):
115 subl $24, %esp // sub extra 16 from the stack for alignment
116 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
122 call ASM_PFX(SecSetTimer)
128 ASM_GLOBAL ASM_PFX(GasketSecEnableInterrupt)
129 ASM_PFX(GasketSecEnableInterrupt):
132 subl $24, %esp // sub extra 16 from the stack for alignment
133 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
135 call ASM_PFX(SecEnableInterrupt)
141 ASM_GLOBAL ASM_PFX(GasketSecDisableInterrupt)
142 ASM_PFX(GasketSecDisableInterrupt):
145 subl $24, %esp // sub extra 16 from the stack for alignment
146 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
148 call ASM_PFX(SecDisableInterrupt)
153 ASM_GLOBAL ASM_PFX(GasketQueryPerformanceFrequency)
154 ASM_PFX(GasketQueryPerformanceFrequency):
157 subl $24, %esp // sub extra 16 from the stack for alignment
158 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
160 call ASM_PFX(QueryPerformanceFrequency)
166 ASM_GLOBAL ASM_PFX(GasketQueryPerformanceCounter)
167 ASM_PFX(GasketQueryPerformanceCounter):
170 subl $24, %esp // sub extra 16 from the stack for alignment
171 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
173 call ASM_PFX(QueryPerformanceCounter)
179 ASM_GLOBAL ASM_PFX(GasketSecSleep)
180 ASM_PFX(GasketSecSleep):
183 subl $24, %esp // sub extra 16 from the stack for alignment
184 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
188 call ASM_PFX(SecSleep)
194 ASM_GLOBAL ASM_PFX(GasketSecCpuSleep)
195 ASM_PFX(GasketSecCpuSleep):
198 subl $24, %esp // sub extra 16 from the stack for alignment
199 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
201 call ASM_PFX(SecCpuSleep)
207 ASM_GLOBAL ASM_PFX(GasketSecExit)
208 ASM_PFX(GasketSecExit):
211 subl $24, %esp // sub extra 16 from the stack for alignment
212 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
216 call ASM_PFX(SecExit) // Less to do as we will never return to EFI ABI world
218 jmp LDEAD_LOOP // _exit should never return
221 ASM_GLOBAL ASM_PFX(GasketSecGetTime)
222 ASM_PFX(GasketSecGetTime):
225 subl $24, %esp // sub extra 16 from the stack for alignment
226 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
232 call ASM_PFX(SecGetTime)
237 ASM_GLOBAL ASM_PFX(GasketSecSetTime)
238 ASM_PFX(GasketSecSetTime):
241 subl $24, %esp // sub extra 16 from the stack for alignment
242 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
248 call ASM_PFX(SecSetTime)
254 ASM_GLOBAL ASM_PFX(GasketSecGetNextProtocol)
255 ASM_PFX(GasketSecGetNextProtocol):
258 subl $40, %esp // sub extra 16 from the stack for alignment
259 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
269 call ASM_PFX(SecGetNextProtocol)
274 // PPIs produced by SEC
276 ASM_GLOBAL ASM_PFX(GasketSecPeCoffGetEntryPoint)
277 ASM_PFX(GasketSecPeCoffGetEntryPoint):
280 subl $24, %esp // sub extra 16 from the stack for alignment
281 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
287 call ASM_PFX(SecPeCoffGetEntryPoint)
292 ASM_GLOBAL ASM_PFX(GasketSecPeCoffRelocateImageExtraAction)
293 ASM_PFX(GasketSecPeCoffRelocateImageExtraAction):
296 subl $24, %esp // sub extra 16 from the stack for alignment
297 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
301 call ASM_PFX(SecPeCoffRelocateImageExtraAction)
306 ASM_GLOBAL ASM_PFX(GasketSecPeCoffUnloadImageExtraAction)
307 ASM_PFX(GasketSecPeCoffUnloadImageExtraAction):
310 subl $24, %esp // sub extra 16 from the stack for alignment
311 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
315 call ASM_PFX(SecPeCoffUnloadImageExtraAction)
321 ASM_GLOBAL ASM_PFX(GasketSecEmuThunkAddress)
322 ASM_PFX(GasketSecEmuThunkAddress):
325 subl $24, %esp // sub extra 16 from the stack for alignment
326 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
328 call ASM_PFX(SecEmuThunkAddress)
334 // Gasket functions for EFI_EMU_UGA_IO_PROTOCOL
337 ASM_GLOBAL ASM_PFX(GasketX11Size)
338 ASM_PFX(GasketX11Size):
341 subl $40, %esp // sub extra 16 from the stack for alignment
342 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
352 call ASM_PFX(X11Size)
358 ASM_GLOBAL ASM_PFX(GasketX11CheckKey)
359 ASM_PFX(GasketX11CheckKey):
362 subl $24, %esp // sub extra 16 from the stack for alignment
363 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
367 call ASM_PFX(X11CheckKey)
372 ASM_GLOBAL ASM_PFX(GasketX11GetKey)
373 ASM_PFX(GasketX11GetKey):
376 subl $24, %esp // sub extra 16 from the stack for alignment
377 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
383 call ASM_PFX(X11GetKey)
389 ASM_GLOBAL ASM_PFX(GasketX11KeySetState)
390 ASM_PFX(GasketX11KeySetState):
393 subl $24, %esp // sub extra 16 from the stack for alignment
394 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
400 call ASM_PFX(X11KeySetState)
406 ASM_GLOBAL ASM_PFX(GasketX11RegisterKeyNotify)
407 ASM_PFX(GasketX11RegisterKeyNotify):
410 subl $40, %esp // sub extra 16 from the stack for alignment
411 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
421 call ASM_PFX(X11RegisterKeyNotify)
427 ASM_GLOBAL ASM_PFX(GasketX11Blt)
428 ASM_PFX(GasketX11Blt):
431 subl $40, %esp // sub extra 16 from the stack for alignment
432 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
448 ASM_GLOBAL ASM_PFX(GasketX11CheckPointer)
449 ASM_PFX(GasketX11CheckPointer):
452 subl $24, %esp // sub extra 16 from the stack for alignment
453 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
457 call ASM_PFX(X11CheckPointer)
463 ASM_GLOBAL ASM_PFX(GasketX11GetPointerState)
464 ASM_PFX(GasketX11GetPointerState):
467 subl $24, %esp // sub extra 16 from the stack for alignment
468 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
474 call ASM_PFX(X11GetPointerState)
480 ASM_GLOBAL ASM_PFX(GasketX11GraphicsWindowOpen)
481 ASM_PFX(GasketX11GraphicsWindowOpen):
484 subl $24, %esp // sub extra 16 from the stack for alignment
485 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
489 call ASM_PFX(X11GraphicsWindowOpen)
495 ASM_GLOBAL ASM_PFX(GasketX11GraphicsWindowClose)
496 ASM_PFX(GasketX11GraphicsWindowClose):
499 subl $24, %esp // sub extra 16 from the stack for alignment
500 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
506 call ASM_PFX(X11GraphicsWindowClose)
514 ASM_GLOBAL ASM_PFX(GasketPthreadMutexLock)
515 ASM_PFX(GasketPthreadMutexLock):
518 subl $24, %esp // sub extra 16 from the stack for alignment
519 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
523 call ASM_PFX(PthreadMutexLock)
529 ASM_GLOBAL ASM_PFX(GasketPthreadMutexUnLock)
530 ASM_PFX(GasketPthreadMutexUnLock):
533 subl $24, %esp // sub extra 16 from the stack for alignment
534 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
538 call ASM_PFX(PthreadMutexUnLock)
543 ASM_GLOBAL ASM_PFX(GasketPthreadMutexTryLock)
544 ASM_PFX(GasketPthreadMutexTryLock):
547 subl $24, %esp // sub extra 16 from the stack for alignment
548 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
552 call ASM_PFX(PthreadMutexTryLock)
557 ASM_GLOBAL ASM_PFX(GasketPthreadMutexInit)
558 ASM_PFX(GasketPthreadMutexInit):
561 subl $24, %esp // sub extra 16 from the stack for alignment
562 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
564 call ASM_PFX(PthreadMutexInit)
571 ASM_GLOBAL ASM_PFX(GasketPthreadMutexDestroy)
572 ASM_PFX(GasketPthreadMutexDestroy):
575 subl $24, %esp // sub extra 16 from the stack for alignment
576 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
580 call ASM_PFX(PthreadMutexDestroy)
586 ASM_GLOBAL ASM_PFX(GasketPthreadCreate)
587 ASM_PFX(GasketPthreadCreate):
590 subl $40, %esp // sub extra 16 from the stack for alignment
591 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
601 call ASM_PFX(PthreadCreate)
607 ASM_GLOBAL ASM_PFX(GasketPthreadExit)
608 ASM_PFX(GasketPthreadExit):
611 subl $24, %esp // sub extra 16 from the stack for alignment
612 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
616 call ASM_PFX(PthreadExit)
623 ASM_GLOBAL ASM_PFX(GasketPthreadSelf)
624 ASM_PFX(GasketPthreadSelf):
627 subl $24, %esp // sub extra 16 from the stack for alignment
628 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
630 call ASM_PFX(PthreadSelf)
636 ASM_GLOBAL ASM_PFX(GasketPthreadOpen)
637 ASM_PFX(GasketPthreadOpen):
640 subl $24, %esp // sub extra 16 from the stack for alignment
641 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
645 call ASM_PFX(PthreadOpen)
651 ASM_GLOBAL ASM_PFX(GasketPthreadClose)
652 ASM_PFX(GasketPthreadClose):
655 subl $24, %esp // sub extra 16 from the stack for alignment
656 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
660 call ASM_PFX(PthreadClose)
669 // UNIX ABI to EFI ABI call
672 // ReverseGasketUint64 (
676 ASM_GLOBAL ASM_PFX(ReverseGasketUint64)
677 ASM_PFX(ReverseGasketUint64):
693 // UNIX ABI to EFI ABI call
696 // ReverseGasketUint64Uint64 (
701 ASM_GLOBAL ASM_PFX(ReverseGasketUint64Uint64)
702 ASM_PFX(ReverseGasketUint64Uint64):
720 ASM_GLOBAL ASM_PFX(GasketSecUnixPeiAutoScan)
721 ASM_PFX(GasketSecUnixPeiAutoScan):
724 subl $40, %esp // sub extra 16 from the stack for alignment
725 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
733 call ASM_PFX(SecUnixPeiAutoScan)
739 ASM_GLOBAL ASM_PFX(GasketSecUnixFdAddress)
740 ASM_PFX(GasketSecUnixFdAddress):
743 subl $40, %esp // sub extra 16 from the stack for alignment
744 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
754 call ASM_PFX(SecUnixFdAddress)
760 // EmuIoThunk SimpleFileSystem
762 ASM_GLOBAL ASM_PFX(GasketPosixOpenVolume)
763 ASM_PFX(GasketPosixOpenVolume):
766 subl $40, %esp // sub extra 16 from the stack for alignment
767 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
777 call ASM_PFX(PosixOpenVolume)
783 ASM_GLOBAL ASM_PFX(GasketPosixFileOpen)
784 ASM_PFX(GasketPosixFileOpen):
787 subl $40, %esp // sub extra 16 from the stack for alignment
788 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
800 call ASM_PFX(PosixFileOpen)
806 ASM_GLOBAL ASM_PFX(GasketPosixFileCLose)
807 ASM_PFX(GasketPosixFileCLose):
810 subl $24, %esp // sub extra 16 from the stack for alignment
811 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
815 call ASM_PFX(PosixFileCLose)
821 ASM_GLOBAL ASM_PFX(GasketPosixFileDelete)
822 ASM_PFX(GasketPosixFileDelete):
825 subl $24, %esp // sub extra 16 from the stack for alignment
826 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
830 call ASM_PFX(PosixFileDelete)
836 ASM_GLOBAL ASM_PFX(GasketPosixFileRead)
837 ASM_PFX(GasketPosixFileRead):
840 subl $40, %esp // sub extra 16 from the stack for alignment
841 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
849 call ASM_PFX(PosixFileRead)
855 ASM_GLOBAL ASM_PFX(GasketPosixFileWrite)
856 ASM_PFX(GasketPosixFileWrite):
859 subl $40, %esp // sub extra 16 from the stack for alignment
860 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
868 call ASM_PFX(PosixFileWrite)
874 ASM_GLOBAL ASM_PFX(GasketPosixFileSetPossition)
875 ASM_PFX(GasketPosixFileSetPossition):
878 subl $24, %esp // sub extra 16 from the stack for alignment
879 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
885 call ASM_PFX(PosixFileSetPossition)
891 ASM_GLOBAL ASM_PFX(GasketPosixFileGetPossition)
892 ASM_PFX(GasketPosixFileGetPossition):
895 subl $24, %esp // sub extra 16 from the stack for alignment
896 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
902 call ASM_PFX(PosixFileGetPossition)
908 ASM_GLOBAL ASM_PFX(GasketPosixFileGetInfo)
909 ASM_PFX(GasketPosixFileGetInfo):
912 subl $40, %esp // sub extra 16 from the stack for alignment
913 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
923 call ASM_PFX(PosixFileGetInfo)
929 ASM_GLOBAL ASM_PFX(GasketPosixFileSetInfo)
930 ASM_PFX(GasketPosixFileSetInfo):
933 subl $40, %esp // sub extra 16 from the stack for alignment
934 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
944 call ASM_PFX(PosixFileSetInfo)
950 ASM_GLOBAL ASM_PFX(GasketPosixFileFlush)
951 ASM_PFX(GasketPosixFileFlush):
954 subl $24, %esp // sub extra 16 from the stack for alignment
955 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
959 call ASM_PFX(PosixFileFlush)
965 ASM_GLOBAL ASM_PFX(GasketPosixFileSystmeThunkOpen)
966 ASM_PFX(GasketPosixFileSystmeThunkOpen):
969 subl $24, %esp // sub extra 16 from the stack for alignment
970 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
974 call ASM_PFX(PosixFileSystmeThunkOpen)
980 ASM_GLOBAL ASM_PFX(GasketPosixFileSystmeThunkClose)
981 ASM_PFX(GasketPosixFileSystmeThunkClose):
984 subl $24, %esp // sub extra 16 from the stack for alignment
985 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
989 call ASM_PFX(PosixFileSystmeThunkClose)
994 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoReset)
995 ASM_PFX(GasketEmuBlockIoReset):
998 subl $24, %esp // sub extra 16 from the stack for alignment
999 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1005 call ASM_PFX(EmuBlockIoReset)
1011 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoReadBlocks)
1012 ASM_PFX(GasketEmuBlockIoReadBlocks):
1015 subl $40, %esp // sub extra 16 from the stack for alignment
1016 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1030 call ASM_PFX(EmuBlockIoReadBlocks)
1036 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoWriteBlocks)
1037 ASM_PFX(GasketEmuBlockIoWriteBlocks):
1040 subl $40, %esp // sub extra 16 from the stack for alignment
1041 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1055 call ASM_PFX(EmuBlockIoWriteBlocks)
1061 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoFlushBlocks)
1062 ASM_PFX(GasketEmuBlockIoFlushBlocks): pushl %ebp
1064 subl $24, %esp // sub extra 16 from the stack for alignment
1065 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1072 call ASM_PFX(EmuBlockIoFlushBlocks)
1078 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoCreateMapping)
1079 ASM_PFX(GasketEmuBlockIoCreateMapping):
1082 subl $24, %esp // sub extra 16 from the stack for alignment
1083 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1089 call ASM_PFX(EmuBlockIoCreateMapping)
1095 ASM_GLOBAL ASM_PFX(GasketBlockIoThunkOpen)
1096 ASM_PFX(GasketBlockIoThunkOpen):
1099 subl $24, %esp // sub extra 16 from the stack for alignment
1100 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1104 call ASM_PFX(EmuBlockIoThunkOpen)
1110 ASM_GLOBAL ASM_PFX(GasketBlockIoThunkClose)
1111 ASM_PFX(GasketBlockIoThunkClose):
1114 subl $24, %esp // sub extra 16 from the stack for alignment
1115 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1119 call ASM_PFX(EmuBlockIoThunkClose)
1126 ASM_GLOBAL ASM_PFX(GasketSnpCreateMapping)
1127 ASM_PFX(GasketSnpCreateMapping):
1130 subl $24, %esp // sub extra 16 from the stack for alignment
1131 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1137 call ASM_PFX(EmuSnpCreateMapping)
1143 ASM_GLOBAL ASM_PFX(GasketSnpStart)
1144 ASM_PFX(GasketSnpStart):
1147 subl $24, %esp // sub extra 16 from the stack for alignment
1148 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1152 call ASM_PFX(EmuSnpStart)
1158 ASM_GLOBAL ASM_PFX(GasketSnpStop)
1159 ASM_PFX(GasketSnpStop):
1162 subl $24, %esp // sub extra 16 from the stack for alignment
1163 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1167 call ASM_PFX(EmuSnpStop)
1173 ASM_GLOBAL ASM_PFX(GasketSnpInitialize)
1174 ASM_PFX(GasketSnpInitialize):
1177 subl $40, %esp // sub extra 16 from the stack for alignment
1178 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1186 call ASM_PFX(EmuSnpInitialize)
1192 ASM_GLOBAL ASM_PFX(GasketSnpReset)
1193 ASM_PFX(GasketSnpReset):
1196 subl $24, %esp // sub extra 16 from the stack for alignment
1197 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1203 call ASM_PFX(EmuSnpReset)
1209 ASM_GLOBAL ASM_PFX(GasketSnpShutdown)
1210 ASM_PFX(GasketSnpShutdown):
1213 subl $24, %esp // sub extra 16 from the stack for alignment
1214 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1218 call ASM_PFX(EmuSnpShutdown)
1224 ASM_GLOBAL ASM_PFX(GasketSnpReceiveFilters)
1225 ASM_PFX(GasketSnpReceiveFilters):
1228 subl $40, %esp // sub extra 16 from the stack for alignment
1229 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1243 call ASM_PFX(EmuSnpReceiveFilters)
1249 ASM_GLOBAL ASM_PFX(GasketSnpStationAddress)
1250 ASM_PFX(GasketSnpStationAddress):
1253 subl $40, %esp // sub extra 16 from the stack for alignment
1254 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1267 ASM_GLOBAL ASM_PFX(GasketSnpStatistics)
1268 ASM_PFX(GasketSnpStatistics):
1271 subl $40, %esp // sub extra 16 from the stack for alignment
1272 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1282 call ASM_PFX(EmuSnpStatistics)
1288 ASM_GLOBAL ASM_PFX(GasketSnpMCastIpToMac)
1289 ASM_PFX(GasketSnpMCastIpToMac):
1292 subl $40, %esp // sub extra 16 from the stack for alignment
1293 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1303 call ASM_PFX(EmuSnpMCastIpToMac)
1309 ASM_GLOBAL ASM_PFX(GasketSnpNvData)
1310 ASM_PFX(GasketSnpNvData):
1313 subl $40, %esp // sub extra 16 from the stack for alignment
1314 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1326 call ASM_PFX(EmuSnpNvData)
1332 ASM_GLOBAL ASM_PFX(GasketSnpGetStatus)
1333 ASM_PFX(GasketSnpGetStatus):
1336 subl $40, %esp // sub extra 16 from the stack for alignment
1337 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1345 call ASM_PFX(EmuSnpGetStatus)
1352 ASM_GLOBAL ASM_PFX(GasketSnpTransmit)
1353 ASM_PFX(GasketSnpTransmit):
1356 subl $56, %esp // sub extra 16 from the stack for alignment
1357 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1373 call ASM_PFX(EmuSnpTransmit)
1380 ASM_GLOBAL ASM_PFX(GasketSnpReceive)
1381 ASM_PFX(GasketSnpReceive):
1384 subl $56, %esp // sub extra 16 from the stack for alignment
1385 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1401 call ASM_PFX(EmuSnpReceive)
1407 ASM_GLOBAL ASM_PFX(GasketSnpThunkOpen)
1408 ASM_PFX(GasketSnpThunkOpen):
1411 subl $24, %esp // sub extra 16 from the stack for alignment
1412 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1416 call ASM_PFX(EmuSnpThunkOpen)
1422 ASM_GLOBAL ASM_PFX(GasketSnpThunkClose)
1423 ASM_PFX(GasketSnpThunkClose):
1426 subl $24, %esp // sub extra 16 from the stack for alignment
1427 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1431 call ASM_PFX(EmuSnpThunkClose)