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)
110 ASM_GLOBAL ASM_PFX(GasketSecMalloc)
111 ASM_PFX(GasketSecMalloc):
114 subl $24, %esp // sub extra 16 from the stack for alignment
115 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
119 call ASM_PFX(SecMalloc)
124 ASM_GLOBAL ASM_PFX(GasketSecValloc)
125 ASM_PFX(GasketSecValloc):
128 subl $24, %esp // sub extra 16 from the stack for alignment
129 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
133 call ASM_PFX(SecValloc)
138 ASM_GLOBAL ASM_PFX(GasketSecFree)
139 ASM_PFX(GasketSecFree):
142 subl $24, %esp // sub extra 16 from the stack for alignment
143 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
147 call ASM_PFX(SecFree)
153 ASM_GLOBAL ASM_PFX(GasketSecSetTimer)
154 ASM_PFX(GasketSecSetTimer):
157 subl $40, %esp // sub extra 16 from the stack for alignment
158 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
166 call ASM_PFX(SecSetTimer)
172 ASM_GLOBAL ASM_PFX(GasketSecEnableInterrupt)
173 ASM_PFX(GasketSecEnableInterrupt):
176 subl $24, %esp // sub extra 16 from the stack for alignment
177 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
179 call ASM_PFX(SecEnableInterrupt)
185 ASM_GLOBAL ASM_PFX(GasketSecDisableInterrupt)
186 ASM_PFX(GasketSecDisableInterrupt):
189 subl $24, %esp // sub extra 16 from the stack for alignment
190 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
192 call ASM_PFX(SecDisableInterrupt)
197 ASM_GLOBAL ASM_PFX(GasketQueryPerformanceFrequency)
198 ASM_PFX(GasketQueryPerformanceFrequency):
201 subl $24, %esp // sub extra 16 from the stack for alignment
202 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
204 call ASM_PFX(QueryPerformanceFrequency)
210 ASM_GLOBAL ASM_PFX(GasketQueryPerformanceCounter)
211 ASM_PFX(GasketQueryPerformanceCounter):
214 subl $24, %esp // sub extra 16 from the stack for alignment
215 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
217 call ASM_PFX(QueryPerformanceCounter)
223 ASM_GLOBAL ASM_PFX(GasketSecSleep)
224 ASM_PFX(GasketSecSleep):
227 subl $24, %esp // sub extra 16 from the stack for alignment
228 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
234 call ASM_PFX(SecSleep)
240 ASM_GLOBAL ASM_PFX(GasketSecCpuSleep)
241 ASM_PFX(GasketSecCpuSleep):
244 subl $24, %esp // sub extra 16 from the stack for alignment
245 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
247 call ASM_PFX(SecCpuSleep)
253 ASM_GLOBAL ASM_PFX(GasketSecExit)
254 ASM_PFX(GasketSecExit):
257 subl $24, %esp // sub extra 16 from the stack for alignment
258 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
262 call ASM_PFX(SecExit) // Less to do as we will never return to EFI ABI world
264 jmp LDEAD_LOOP // _exit should never return
267 ASM_GLOBAL ASM_PFX(GasketSecGetTime)
268 ASM_PFX(GasketSecGetTime):
271 subl $24, %esp // sub extra 16 from the stack for alignment
272 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
278 call ASM_PFX(SecGetTime)
283 ASM_GLOBAL ASM_PFX(GasketSecSetTime)
284 ASM_PFX(GasketSecSetTime):
287 subl $24, %esp // sub extra 16 from the stack for alignment
288 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
294 call ASM_PFX(SecSetTime)
300 ASM_GLOBAL ASM_PFX(GasketSecGetNextProtocol)
301 ASM_PFX(GasketSecGetNextProtocol):
304 subl $40, %esp // sub extra 16 from the stack for alignment
305 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
315 call ASM_PFX(SecGetNextProtocol)
320 // PPIs produced by SEC
322 ASM_GLOBAL ASM_PFX(GasketSecPeCoffGetEntryPoint)
323 ASM_PFX(GasketSecPeCoffGetEntryPoint):
326 subl $24, %esp // sub extra 16 from the stack for alignment
327 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
333 call ASM_PFX(SecPeCoffGetEntryPoint)
338 ASM_GLOBAL ASM_PFX(GasketSecPeCoffRelocateImageExtraAction)
339 ASM_PFX(GasketSecPeCoffRelocateImageExtraAction):
342 subl $24, %esp // sub extra 16 from the stack for alignment
343 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
347 call ASM_PFX(SecPeCoffRelocateImageExtraAction)
352 ASM_GLOBAL ASM_PFX(GasketSecPeCoffUnloadImageExtraAction)
353 ASM_PFX(GasketSecPeCoffUnloadImageExtraAction):
356 subl $24, %esp // sub extra 16 from the stack for alignment
357 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
361 call ASM_PFX(SecPeCoffUnloadImageExtraAction)
367 ASM_GLOBAL ASM_PFX(GasketSecEmuThunkAddress)
368 ASM_PFX(GasketSecEmuThunkAddress):
371 subl $24, %esp // sub extra 16 from the stack for alignment
372 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
374 call ASM_PFX(SecEmuThunkAddress)
380 // Gasket functions for EFI_EMU_UGA_IO_PROTOCOL
383 ASM_GLOBAL ASM_PFX(GasketX11Size)
384 ASM_PFX(GasketX11Size):
387 subl $40, %esp // sub extra 16 from the stack for alignment
388 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
398 call ASM_PFX(X11Size)
404 ASM_GLOBAL ASM_PFX(GasketX11CheckKey)
405 ASM_PFX(GasketX11CheckKey):
408 subl $24, %esp // sub extra 16 from the stack for alignment
409 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
413 call ASM_PFX(X11CheckKey)
418 ASM_GLOBAL ASM_PFX(GasketX11GetKey)
419 ASM_PFX(GasketX11GetKey):
422 subl $24, %esp // sub extra 16 from the stack for alignment
423 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
429 call ASM_PFX(X11GetKey)
435 ASM_GLOBAL ASM_PFX(GasketX11KeySetState)
436 ASM_PFX(GasketX11KeySetState):
439 subl $24, %esp // sub extra 16 from the stack for alignment
440 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
446 call ASM_PFX(X11KeySetState)
452 ASM_GLOBAL ASM_PFX(GasketX11RegisterKeyNotify)
453 ASM_PFX(GasketX11RegisterKeyNotify):
456 subl $40, %esp // sub extra 16 from the stack for alignment
457 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
467 call ASM_PFX(X11RegisterKeyNotify)
473 ASM_GLOBAL ASM_PFX(GasketX11Blt)
474 ASM_PFX(GasketX11Blt):
477 subl $40, %esp // sub extra 16 from the stack for alignment
478 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
494 ASM_GLOBAL ASM_PFX(GasketX11CheckPointer)
495 ASM_PFX(GasketX11CheckPointer):
498 subl $24, %esp // sub extra 16 from the stack for alignment
499 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
503 call ASM_PFX(X11CheckPointer)
509 ASM_GLOBAL ASM_PFX(GasketX11GetPointerState)
510 ASM_PFX(GasketX11GetPointerState):
513 subl $24, %esp // sub extra 16 from the stack for alignment
514 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
520 call ASM_PFX(X11GetPointerState)
526 ASM_GLOBAL ASM_PFX(GasketX11GraphicsWindowOpen)
527 ASM_PFX(GasketX11GraphicsWindowOpen):
530 subl $24, %esp // sub extra 16 from the stack for alignment
531 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
535 call ASM_PFX(X11GraphicsWindowOpen)
541 ASM_GLOBAL ASM_PFX(GasketX11GraphicsWindowClose)
542 ASM_PFX(GasketX11GraphicsWindowClose):
545 subl $24, %esp // sub extra 16 from the stack for alignment
546 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
552 call ASM_PFX(X11GraphicsWindowClose)
560 ASM_GLOBAL ASM_PFX(GasketPthreadMutexLock)
561 ASM_PFX(GasketPthreadMutexLock):
564 subl $24, %esp // sub extra 16 from the stack for alignment
565 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
569 call ASM_PFX(PthreadMutexLock)
575 ASM_GLOBAL ASM_PFX(GasketPthreadMutexUnLock)
576 ASM_PFX(GasketPthreadMutexUnLock):
579 subl $24, %esp // sub extra 16 from the stack for alignment
580 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
584 call ASM_PFX(PthreadMutexUnLock)
589 ASM_GLOBAL ASM_PFX(GasketPthreadMutexTryLock)
590 ASM_PFX(GasketPthreadMutexTryLock):
593 subl $24, %esp // sub extra 16 from the stack for alignment
594 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
598 call ASM_PFX(PthreadMutexTryLock)
603 ASM_GLOBAL ASM_PFX(GasketPthreadMutexInit)
604 ASM_PFX(GasketPthreadMutexInit):
607 subl $24, %esp // sub extra 16 from the stack for alignment
608 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
610 call ASM_PFX(PthreadMutexInit)
617 ASM_GLOBAL ASM_PFX(GasketPthreadMutexDestroy)
618 ASM_PFX(GasketPthreadMutexDestroy):
621 subl $24, %esp // sub extra 16 from the stack for alignment
622 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
626 call ASM_PFX(PthreadMutexDestroy)
632 ASM_GLOBAL ASM_PFX(GasketPthreadCreate)
633 ASM_PFX(GasketPthreadCreate):
636 subl $40, %esp // sub extra 16 from the stack for alignment
637 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
647 call ASM_PFX(PthreadCreate)
653 ASM_GLOBAL ASM_PFX(GasketPthreadExit)
654 ASM_PFX(GasketPthreadExit):
657 subl $24, %esp // sub extra 16 from the stack for alignment
658 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
662 call ASM_PFX(PthreadExit)
669 ASM_GLOBAL ASM_PFX(GasketPthreadSelf)
670 ASM_PFX(GasketPthreadSelf):
673 subl $24, %esp // sub extra 16 from the stack for alignment
674 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
676 call ASM_PFX(PthreadSelf)
682 ASM_GLOBAL ASM_PFX(GasketPthreadOpen)
683 ASM_PFX(GasketPthreadOpen):
686 subl $24, %esp // sub extra 16 from the stack for alignment
687 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
691 call ASM_PFX(PthreadOpen)
697 ASM_GLOBAL ASM_PFX(GasketPthreadClose)
698 ASM_PFX(GasketPthreadClose):
701 subl $24, %esp // sub extra 16 from the stack for alignment
702 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
706 call ASM_PFX(PthreadClose)
715 // UNIX ABI to EFI ABI call
718 // ReverseGasketUint64 (
722 ASM_GLOBAL ASM_PFX(ReverseGasketUint64)
723 ASM_PFX(ReverseGasketUint64):
739 // UNIX ABI to EFI ABI call
742 // ReverseGasketUint64Uint64 (
747 ASM_GLOBAL ASM_PFX(ReverseGasketUint64Uint64)
748 ASM_PFX(ReverseGasketUint64Uint64):
766 ASM_GLOBAL ASM_PFX(GasketSecUnixPeiAutoScan)
767 ASM_PFX(GasketSecUnixPeiAutoScan):
770 subl $40, %esp // sub extra 16 from the stack for alignment
771 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
779 call ASM_PFX(SecUnixPeiAutoScan)
785 ASM_GLOBAL ASM_PFX(GasketSecUnixFdAddress)
786 ASM_PFX(GasketSecUnixFdAddress):
789 subl $40, %esp // sub extra 16 from the stack for alignment
790 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
800 call ASM_PFX(SecUnixFdAddress)
806 // EmuIoThunk SimpleFileSystem
808 ASM_GLOBAL ASM_PFX(GasketPosixOpenVolume)
809 ASM_PFX(GasketPosixOpenVolume):
812 subl $40, %esp // sub extra 16 from the stack for alignment
813 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
823 call ASM_PFX(PosixOpenVolume)
829 ASM_GLOBAL ASM_PFX(GasketPosixFileOpen)
830 ASM_PFX(GasketPosixFileOpen):
833 subl $56, %esp // sub extra 16 from the stack for alignment
834 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
850 call ASM_PFX(PosixFileOpen)
856 ASM_GLOBAL ASM_PFX(GasketPosixFileCLose)
857 ASM_PFX(GasketPosixFileCLose):
860 subl $24, %esp // sub extra 16 from the stack for alignment
861 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
865 call ASM_PFX(PosixFileCLose)
871 ASM_GLOBAL ASM_PFX(GasketPosixFileDelete)
872 ASM_PFX(GasketPosixFileDelete):
875 subl $24, %esp // sub extra 16 from the stack for alignment
876 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
880 call ASM_PFX(PosixFileDelete)
886 ASM_GLOBAL ASM_PFX(GasketPosixFileRead)
887 ASM_PFX(GasketPosixFileRead):
890 subl $40, %esp // sub extra 16 from the stack for alignment
891 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
899 call ASM_PFX(PosixFileRead)
905 ASM_GLOBAL ASM_PFX(GasketPosixFileWrite)
906 ASM_PFX(GasketPosixFileWrite):
909 subl $40, %esp // sub extra 16 from the stack for alignment
910 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
918 call ASM_PFX(PosixFileWrite)
924 ASM_GLOBAL ASM_PFX(GasketPosixFileSetPossition)
925 ASM_PFX(GasketPosixFileSetPossition):
928 subl $40, %esp // sub extra 16 from the stack for alignment
929 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
937 call ASM_PFX(PosixFileSetPossition)
943 ASM_GLOBAL ASM_PFX(GasketPosixFileGetPossition)
944 ASM_PFX(GasketPosixFileGetPossition):
947 subl $24, %esp // sub extra 16 from the stack for alignment
948 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
954 call ASM_PFX(PosixFileGetPossition)
960 ASM_GLOBAL ASM_PFX(GasketPosixFileGetInfo)
961 ASM_PFX(GasketPosixFileGetInfo):
964 subl $40, %esp // sub extra 16 from the stack for alignment
965 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
975 call ASM_PFX(PosixFileGetInfo)
981 ASM_GLOBAL ASM_PFX(GasketPosixFileSetInfo)
982 ASM_PFX(GasketPosixFileSetInfo):
985 subl $40, %esp // sub extra 16 from the stack for alignment
986 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
996 call ASM_PFX(PosixFileSetInfo)
1002 ASM_GLOBAL ASM_PFX(GasketPosixFileFlush)
1003 ASM_PFX(GasketPosixFileFlush):
1006 subl $24, %esp // sub extra 16 from the stack for alignment
1007 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1011 call ASM_PFX(PosixFileFlush)
1017 ASM_GLOBAL ASM_PFX(GasketPosixFileSystmeThunkOpen)
1018 ASM_PFX(GasketPosixFileSystmeThunkOpen):
1021 subl $24, %esp // sub extra 16 from the stack for alignment
1022 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1026 call ASM_PFX(PosixFileSystmeThunkOpen)
1032 ASM_GLOBAL ASM_PFX(GasketPosixFileSystmeThunkClose)
1033 ASM_PFX(GasketPosixFileSystmeThunkClose):
1036 subl $24, %esp // sub extra 16 from the stack for alignment
1037 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1041 call ASM_PFX(PosixFileSystmeThunkClose)
1046 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoReset)
1047 ASM_PFX(GasketEmuBlockIoReset):
1050 subl $24, %esp // sub extra 16 from the stack for alignment
1051 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1057 call ASM_PFX(EmuBlockIoReset)
1063 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoReadBlocks)
1064 ASM_PFX(GasketEmuBlockIoReadBlocks):
1067 subl $56, %esp // sub extra 16 from the stack for alignment
1068 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1084 call ASM_PFX(EmuBlockIoReadBlocks)
1090 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoWriteBlocks)
1091 ASM_PFX(GasketEmuBlockIoWriteBlocks):
1094 subl $56, %esp // sub extra 16 from the stack for alignment
1095 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1111 call ASM_PFX(EmuBlockIoWriteBlocks)
1117 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoFlushBlocks)
1118 ASM_PFX(GasketEmuBlockIoFlushBlocks): pushl %ebp
1120 subl $24, %esp // sub extra 16 from the stack for alignment
1121 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1128 call ASM_PFX(EmuBlockIoFlushBlocks)
1134 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoCreateMapping)
1135 ASM_PFX(GasketEmuBlockIoCreateMapping):
1138 subl $24, %esp // sub extra 16 from the stack for alignment
1139 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1145 call ASM_PFX(EmuBlockIoCreateMapping)
1151 ASM_GLOBAL ASM_PFX(GasketBlockIoThunkOpen)
1152 ASM_PFX(GasketBlockIoThunkOpen):
1155 subl $24, %esp // sub extra 16 from the stack for alignment
1156 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1160 call ASM_PFX(EmuBlockIoThunkOpen)
1166 ASM_GLOBAL ASM_PFX(GasketBlockIoThunkClose)
1167 ASM_PFX(GasketBlockIoThunkClose):
1170 subl $24, %esp // sub extra 16 from the stack for alignment
1171 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1175 call ASM_PFX(EmuBlockIoThunkClose)
1182 ASM_GLOBAL ASM_PFX(GasketSnpCreateMapping)
1183 ASM_PFX(GasketSnpCreateMapping):
1186 subl $24, %esp // sub extra 16 from the stack for alignment
1187 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1193 call ASM_PFX(EmuSnpCreateMapping)
1199 ASM_GLOBAL ASM_PFX(GasketSnpStart)
1200 ASM_PFX(GasketSnpStart):
1203 subl $24, %esp // sub extra 16 from the stack for alignment
1204 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1208 call ASM_PFX(EmuSnpStart)
1214 ASM_GLOBAL ASM_PFX(GasketSnpStop)
1215 ASM_PFX(GasketSnpStop):
1218 subl $24, %esp // sub extra 16 from the stack for alignment
1219 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1223 call ASM_PFX(EmuSnpStop)
1229 ASM_GLOBAL ASM_PFX(GasketSnpInitialize)
1230 ASM_PFX(GasketSnpInitialize):
1233 subl $40, %esp // sub extra 16 from the stack for alignment
1234 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1242 call ASM_PFX(EmuSnpInitialize)
1248 ASM_GLOBAL ASM_PFX(GasketSnpReset)
1249 ASM_PFX(GasketSnpReset):
1252 subl $24, %esp // sub extra 16 from the stack for alignment
1253 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1259 call ASM_PFX(EmuSnpReset)
1265 ASM_GLOBAL ASM_PFX(GasketSnpShutdown)
1266 ASM_PFX(GasketSnpShutdown):
1269 subl $24, %esp // sub extra 16 from the stack for alignment
1270 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1274 call ASM_PFX(EmuSnpShutdown)
1280 ASM_GLOBAL ASM_PFX(GasketSnpReceiveFilters)
1281 ASM_PFX(GasketSnpReceiveFilters):
1284 subl $40, %esp // sub extra 16 from the stack for alignment
1285 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1299 call ASM_PFX(EmuSnpReceiveFilters)
1305 ASM_GLOBAL ASM_PFX(GasketSnpStationAddress)
1306 ASM_PFX(GasketSnpStationAddress):
1309 subl $40, %esp // sub extra 16 from the stack for alignment
1310 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1323 ASM_GLOBAL ASM_PFX(GasketSnpStatistics)
1324 ASM_PFX(GasketSnpStatistics):
1327 subl $40, %esp // sub extra 16 from the stack for alignment
1328 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1338 call ASM_PFX(EmuSnpStatistics)
1344 ASM_GLOBAL ASM_PFX(GasketSnpMCastIpToMac)
1345 ASM_PFX(GasketSnpMCastIpToMac):
1348 subl $40, %esp // sub extra 16 from the stack for alignment
1349 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1359 call ASM_PFX(EmuSnpMCastIpToMac)
1365 ASM_GLOBAL ASM_PFX(GasketSnpNvData)
1366 ASM_PFX(GasketSnpNvData):
1369 subl $40, %esp // sub extra 16 from the stack for alignment
1370 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1382 call ASM_PFX(EmuSnpNvData)
1388 ASM_GLOBAL ASM_PFX(GasketSnpGetStatus)
1389 ASM_PFX(GasketSnpGetStatus):
1392 subl $40, %esp // sub extra 16 from the stack for alignment
1393 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1401 call ASM_PFX(EmuSnpGetStatus)
1408 ASM_GLOBAL ASM_PFX(GasketSnpTransmit)
1409 ASM_PFX(GasketSnpTransmit):
1412 subl $56, %esp // sub extra 16 from the stack for alignment
1413 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1429 call ASM_PFX(EmuSnpTransmit)
1436 ASM_GLOBAL ASM_PFX(GasketSnpReceive)
1437 ASM_PFX(GasketSnpReceive):
1440 subl $56, %esp // sub extra 16 from the stack for alignment
1441 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1457 call ASM_PFX(EmuSnpReceive)
1463 ASM_GLOBAL ASM_PFX(GasketSnpThunkOpen)
1464 ASM_PFX(GasketSnpThunkOpen):
1467 subl $24, %esp // sub extra 16 from the stack for alignment
1468 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1472 call ASM_PFX(EmuSnpThunkOpen)
1478 ASM_GLOBAL ASM_PFX(GasketSnpThunkClose)
1479 ASM_PFX(GasketSnpThunkClose):
1482 subl $24, %esp // sub extra 16 from the stack for alignment
1483 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1487 call ASM_PFX(EmuSnpThunkClose)