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 $40, %esp // sub extra 16 from the stack for alignment
116 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
124 call ASM_PFX(SecSetTimer)
130 ASM_GLOBAL ASM_PFX(GasketSecEnableInterrupt)
131 ASM_PFX(GasketSecEnableInterrupt):
134 subl $24, %esp // sub extra 16 from the stack for alignment
135 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
137 call ASM_PFX(SecEnableInterrupt)
143 ASM_GLOBAL ASM_PFX(GasketSecDisableInterrupt)
144 ASM_PFX(GasketSecDisableInterrupt):
147 subl $24, %esp // sub extra 16 from the stack for alignment
148 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
150 call ASM_PFX(SecDisableInterrupt)
155 ASM_GLOBAL ASM_PFX(GasketQueryPerformanceFrequency)
156 ASM_PFX(GasketQueryPerformanceFrequency):
159 subl $24, %esp // sub extra 16 from the stack for alignment
160 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
162 call ASM_PFX(QueryPerformanceFrequency)
168 ASM_GLOBAL ASM_PFX(GasketQueryPerformanceCounter)
169 ASM_PFX(GasketQueryPerformanceCounter):
172 subl $24, %esp // sub extra 16 from the stack for alignment
173 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
175 call ASM_PFX(QueryPerformanceCounter)
181 ASM_GLOBAL ASM_PFX(GasketSecSleep)
182 ASM_PFX(GasketSecSleep):
185 subl $24, %esp // sub extra 16 from the stack for alignment
186 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
192 call ASM_PFX(SecSleep)
198 ASM_GLOBAL ASM_PFX(GasketSecCpuSleep)
199 ASM_PFX(GasketSecCpuSleep):
202 subl $24, %esp // sub extra 16 from the stack for alignment
203 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
205 call ASM_PFX(SecCpuSleep)
211 ASM_GLOBAL ASM_PFX(GasketSecExit)
212 ASM_PFX(GasketSecExit):
215 subl $24, %esp // sub extra 16 from the stack for alignment
216 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
220 call ASM_PFX(SecExit) // Less to do as we will never return to EFI ABI world
222 jmp LDEAD_LOOP // _exit should never return
225 ASM_GLOBAL ASM_PFX(GasketSecGetTime)
226 ASM_PFX(GasketSecGetTime):
229 subl $24, %esp // sub extra 16 from the stack for alignment
230 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
236 call ASM_PFX(SecGetTime)
241 ASM_GLOBAL ASM_PFX(GasketSecSetTime)
242 ASM_PFX(GasketSecSetTime):
245 subl $24, %esp // sub extra 16 from the stack for alignment
246 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
252 call ASM_PFX(SecSetTime)
258 ASM_GLOBAL ASM_PFX(GasketSecGetNextProtocol)
259 ASM_PFX(GasketSecGetNextProtocol):
262 subl $40, %esp // sub extra 16 from the stack for alignment
263 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
273 call ASM_PFX(SecGetNextProtocol)
278 // PPIs produced by SEC
280 ASM_GLOBAL ASM_PFX(GasketSecPeCoffGetEntryPoint)
281 ASM_PFX(GasketSecPeCoffGetEntryPoint):
284 subl $24, %esp // sub extra 16 from the stack for alignment
285 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
291 call ASM_PFX(SecPeCoffGetEntryPoint)
296 ASM_GLOBAL ASM_PFX(GasketSecPeCoffRelocateImageExtraAction)
297 ASM_PFX(GasketSecPeCoffRelocateImageExtraAction):
300 subl $24, %esp // sub extra 16 from the stack for alignment
301 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
305 call ASM_PFX(SecPeCoffRelocateImageExtraAction)
310 ASM_GLOBAL ASM_PFX(GasketSecPeCoffUnloadImageExtraAction)
311 ASM_PFX(GasketSecPeCoffUnloadImageExtraAction):
314 subl $24, %esp // sub extra 16 from the stack for alignment
315 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
319 call ASM_PFX(SecPeCoffUnloadImageExtraAction)
325 ASM_GLOBAL ASM_PFX(GasketSecEmuThunkAddress)
326 ASM_PFX(GasketSecEmuThunkAddress):
329 subl $24, %esp // sub extra 16 from the stack for alignment
330 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
332 call ASM_PFX(SecEmuThunkAddress)
338 // Gasket functions for EFI_EMU_UGA_IO_PROTOCOL
341 ASM_GLOBAL ASM_PFX(GasketX11Size)
342 ASM_PFX(GasketX11Size):
345 subl $40, %esp // sub extra 16 from the stack for alignment
346 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
356 call ASM_PFX(X11Size)
362 ASM_GLOBAL ASM_PFX(GasketX11CheckKey)
363 ASM_PFX(GasketX11CheckKey):
366 subl $24, %esp // sub extra 16 from the stack for alignment
367 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
371 call ASM_PFX(X11CheckKey)
376 ASM_GLOBAL ASM_PFX(GasketX11GetKey)
377 ASM_PFX(GasketX11GetKey):
380 subl $24, %esp // sub extra 16 from the stack for alignment
381 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
387 call ASM_PFX(X11GetKey)
393 ASM_GLOBAL ASM_PFX(GasketX11KeySetState)
394 ASM_PFX(GasketX11KeySetState):
397 subl $24, %esp // sub extra 16 from the stack for alignment
398 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
404 call ASM_PFX(X11KeySetState)
410 ASM_GLOBAL ASM_PFX(GasketX11RegisterKeyNotify)
411 ASM_PFX(GasketX11RegisterKeyNotify):
414 subl $40, %esp // sub extra 16 from the stack for alignment
415 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
425 call ASM_PFX(X11RegisterKeyNotify)
431 ASM_GLOBAL ASM_PFX(GasketX11Blt)
432 ASM_PFX(GasketX11Blt):
435 subl $40, %esp // sub extra 16 from the stack for alignment
436 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
452 ASM_GLOBAL ASM_PFX(GasketX11CheckPointer)
453 ASM_PFX(GasketX11CheckPointer):
456 subl $24, %esp // sub extra 16 from the stack for alignment
457 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
461 call ASM_PFX(X11CheckPointer)
467 ASM_GLOBAL ASM_PFX(GasketX11GetPointerState)
468 ASM_PFX(GasketX11GetPointerState):
471 subl $24, %esp // sub extra 16 from the stack for alignment
472 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
478 call ASM_PFX(X11GetPointerState)
484 ASM_GLOBAL ASM_PFX(GasketX11GraphicsWindowOpen)
485 ASM_PFX(GasketX11GraphicsWindowOpen):
488 subl $24, %esp // sub extra 16 from the stack for alignment
489 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
493 call ASM_PFX(X11GraphicsWindowOpen)
499 ASM_GLOBAL ASM_PFX(GasketX11GraphicsWindowClose)
500 ASM_PFX(GasketX11GraphicsWindowClose):
503 subl $24, %esp // sub extra 16 from the stack for alignment
504 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
510 call ASM_PFX(X11GraphicsWindowClose)
518 ASM_GLOBAL ASM_PFX(GasketPthreadMutexLock)
519 ASM_PFX(GasketPthreadMutexLock):
522 subl $24, %esp // sub extra 16 from the stack for alignment
523 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
527 call ASM_PFX(PthreadMutexLock)
533 ASM_GLOBAL ASM_PFX(GasketPthreadMutexUnLock)
534 ASM_PFX(GasketPthreadMutexUnLock):
537 subl $24, %esp // sub extra 16 from the stack for alignment
538 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
542 call ASM_PFX(PthreadMutexUnLock)
547 ASM_GLOBAL ASM_PFX(GasketPthreadMutexTryLock)
548 ASM_PFX(GasketPthreadMutexTryLock):
551 subl $24, %esp // sub extra 16 from the stack for alignment
552 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
556 call ASM_PFX(PthreadMutexTryLock)
561 ASM_GLOBAL ASM_PFX(GasketPthreadMutexInit)
562 ASM_PFX(GasketPthreadMutexInit):
565 subl $24, %esp // sub extra 16 from the stack for alignment
566 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
568 call ASM_PFX(PthreadMutexInit)
575 ASM_GLOBAL ASM_PFX(GasketPthreadMutexDestroy)
576 ASM_PFX(GasketPthreadMutexDestroy):
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(PthreadMutexDestroy)
590 ASM_GLOBAL ASM_PFX(GasketPthreadCreate)
591 ASM_PFX(GasketPthreadCreate):
594 subl $40, %esp // sub extra 16 from the stack for alignment
595 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
605 call ASM_PFX(PthreadCreate)
611 ASM_GLOBAL ASM_PFX(GasketPthreadExit)
612 ASM_PFX(GasketPthreadExit):
615 subl $24, %esp // sub extra 16 from the stack for alignment
616 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
620 call ASM_PFX(PthreadExit)
627 ASM_GLOBAL ASM_PFX(GasketPthreadSelf)
628 ASM_PFX(GasketPthreadSelf):
631 subl $24, %esp // sub extra 16 from the stack for alignment
632 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
634 call ASM_PFX(PthreadSelf)
640 ASM_GLOBAL ASM_PFX(GasketPthreadOpen)
641 ASM_PFX(GasketPthreadOpen):
644 subl $24, %esp // sub extra 16 from the stack for alignment
645 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
649 call ASM_PFX(PthreadOpen)
655 ASM_GLOBAL ASM_PFX(GasketPthreadClose)
656 ASM_PFX(GasketPthreadClose):
659 subl $24, %esp // sub extra 16 from the stack for alignment
660 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
664 call ASM_PFX(PthreadClose)
673 // UNIX ABI to EFI ABI call
676 // ReverseGasketUint64 (
680 ASM_GLOBAL ASM_PFX(ReverseGasketUint64)
681 ASM_PFX(ReverseGasketUint64):
697 // UNIX ABI to EFI ABI call
700 // ReverseGasketUint64Uint64 (
705 ASM_GLOBAL ASM_PFX(ReverseGasketUint64Uint64)
706 ASM_PFX(ReverseGasketUint64Uint64):
724 ASM_GLOBAL ASM_PFX(GasketSecUnixPeiAutoScan)
725 ASM_PFX(GasketSecUnixPeiAutoScan):
728 subl $40, %esp // sub extra 16 from the stack for alignment
729 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
737 call ASM_PFX(SecUnixPeiAutoScan)
743 ASM_GLOBAL ASM_PFX(GasketSecUnixFdAddress)
744 ASM_PFX(GasketSecUnixFdAddress):
747 subl $40, %esp // sub extra 16 from the stack for alignment
748 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
758 call ASM_PFX(SecUnixFdAddress)
764 // EmuIoThunk SimpleFileSystem
766 ASM_GLOBAL ASM_PFX(GasketPosixOpenVolume)
767 ASM_PFX(GasketPosixOpenVolume):
770 subl $40, %esp // sub extra 16 from the stack for alignment
771 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
781 call ASM_PFX(PosixOpenVolume)
787 ASM_GLOBAL ASM_PFX(GasketPosixFileOpen)
788 ASM_PFX(GasketPosixFileOpen):
791 subl $56, %esp // sub extra 16 from the stack for alignment
792 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
808 call ASM_PFX(PosixFileOpen)
814 ASM_GLOBAL ASM_PFX(GasketPosixFileCLose)
815 ASM_PFX(GasketPosixFileCLose):
818 subl $24, %esp // sub extra 16 from the stack for alignment
819 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
823 call ASM_PFX(PosixFileCLose)
829 ASM_GLOBAL ASM_PFX(GasketPosixFileDelete)
830 ASM_PFX(GasketPosixFileDelete):
833 subl $24, %esp // sub extra 16 from the stack for alignment
834 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
838 call ASM_PFX(PosixFileDelete)
844 ASM_GLOBAL ASM_PFX(GasketPosixFileRead)
845 ASM_PFX(GasketPosixFileRead):
848 subl $40, %esp // sub extra 16 from the stack for alignment
849 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
857 call ASM_PFX(PosixFileRead)
863 ASM_GLOBAL ASM_PFX(GasketPosixFileWrite)
864 ASM_PFX(GasketPosixFileWrite):
867 subl $40, %esp // sub extra 16 from the stack for alignment
868 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
876 call ASM_PFX(PosixFileWrite)
882 ASM_GLOBAL ASM_PFX(GasketPosixFileSetPossition)
883 ASM_PFX(GasketPosixFileSetPossition):
886 subl $40, %esp // sub extra 16 from the stack for alignment
887 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
895 call ASM_PFX(PosixFileSetPossition)
901 ASM_GLOBAL ASM_PFX(GasketPosixFileGetPossition)
902 ASM_PFX(GasketPosixFileGetPossition):
905 subl $24, %esp // sub extra 16 from the stack for alignment
906 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
912 call ASM_PFX(PosixFileGetPossition)
918 ASM_GLOBAL ASM_PFX(GasketPosixFileGetInfo)
919 ASM_PFX(GasketPosixFileGetInfo):
922 subl $40, %esp // sub extra 16 from the stack for alignment
923 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
933 call ASM_PFX(PosixFileGetInfo)
939 ASM_GLOBAL ASM_PFX(GasketPosixFileSetInfo)
940 ASM_PFX(GasketPosixFileSetInfo):
943 subl $40, %esp // sub extra 16 from the stack for alignment
944 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
954 call ASM_PFX(PosixFileSetInfo)
960 ASM_GLOBAL ASM_PFX(GasketPosixFileFlush)
961 ASM_PFX(GasketPosixFileFlush):
964 subl $24, %esp // sub extra 16 from the stack for alignment
965 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
969 call ASM_PFX(PosixFileFlush)
975 ASM_GLOBAL ASM_PFX(GasketPosixFileSystmeThunkOpen)
976 ASM_PFX(GasketPosixFileSystmeThunkOpen):
979 subl $24, %esp // sub extra 16 from the stack for alignment
980 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
984 call ASM_PFX(PosixFileSystmeThunkOpen)
990 ASM_GLOBAL ASM_PFX(GasketPosixFileSystmeThunkClose)
991 ASM_PFX(GasketPosixFileSystmeThunkClose):
994 subl $24, %esp // sub extra 16 from the stack for alignment
995 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
999 call ASM_PFX(PosixFileSystmeThunkClose)
1004 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoReset)
1005 ASM_PFX(GasketEmuBlockIoReset):
1008 subl $24, %esp // sub extra 16 from the stack for alignment
1009 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1015 call ASM_PFX(EmuBlockIoReset)
1021 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoReadBlocks)
1022 ASM_PFX(GasketEmuBlockIoReadBlocks):
1025 subl $40, %esp // sub extra 16 from the stack for alignment
1026 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1040 call ASM_PFX(EmuBlockIoReadBlocks)
1046 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoWriteBlocks)
1047 ASM_PFX(GasketEmuBlockIoWriteBlocks):
1050 subl $40, %esp // sub extra 16 from the stack for alignment
1051 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1065 call ASM_PFX(EmuBlockIoWriteBlocks)
1071 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoFlushBlocks)
1072 ASM_PFX(GasketEmuBlockIoFlushBlocks): pushl %ebp
1074 subl $24, %esp // sub extra 16 from the stack for alignment
1075 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1082 call ASM_PFX(EmuBlockIoFlushBlocks)
1088 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoCreateMapping)
1089 ASM_PFX(GasketEmuBlockIoCreateMapping):
1092 subl $24, %esp // sub extra 16 from the stack for alignment
1093 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1099 call ASM_PFX(EmuBlockIoCreateMapping)
1105 ASM_GLOBAL ASM_PFX(GasketBlockIoThunkOpen)
1106 ASM_PFX(GasketBlockIoThunkOpen):
1109 subl $24, %esp // sub extra 16 from the stack for alignment
1110 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1114 call ASM_PFX(EmuBlockIoThunkOpen)
1120 ASM_GLOBAL ASM_PFX(GasketBlockIoThunkClose)
1121 ASM_PFX(GasketBlockIoThunkClose):
1124 subl $24, %esp // sub extra 16 from the stack for alignment
1125 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1129 call ASM_PFX(EmuBlockIoThunkClose)
1136 ASM_GLOBAL ASM_PFX(GasketSnpCreateMapping)
1137 ASM_PFX(GasketSnpCreateMapping):
1140 subl $24, %esp // sub extra 16 from the stack for alignment
1141 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1147 call ASM_PFX(EmuSnpCreateMapping)
1153 ASM_GLOBAL ASM_PFX(GasketSnpStart)
1154 ASM_PFX(GasketSnpStart):
1157 subl $24, %esp // sub extra 16 from the stack for alignment
1158 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1162 call ASM_PFX(EmuSnpStart)
1168 ASM_GLOBAL ASM_PFX(GasketSnpStop)
1169 ASM_PFX(GasketSnpStop):
1172 subl $24, %esp // sub extra 16 from the stack for alignment
1173 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1177 call ASM_PFX(EmuSnpStop)
1183 ASM_GLOBAL ASM_PFX(GasketSnpInitialize)
1184 ASM_PFX(GasketSnpInitialize):
1187 subl $40, %esp // sub extra 16 from the stack for alignment
1188 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1196 call ASM_PFX(EmuSnpInitialize)
1202 ASM_GLOBAL ASM_PFX(GasketSnpReset)
1203 ASM_PFX(GasketSnpReset):
1206 subl $24, %esp // sub extra 16 from the stack for alignment
1207 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1213 call ASM_PFX(EmuSnpReset)
1219 ASM_GLOBAL ASM_PFX(GasketSnpShutdown)
1220 ASM_PFX(GasketSnpShutdown):
1223 subl $24, %esp // sub extra 16 from the stack for alignment
1224 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1228 call ASM_PFX(EmuSnpShutdown)
1234 ASM_GLOBAL ASM_PFX(GasketSnpReceiveFilters)
1235 ASM_PFX(GasketSnpReceiveFilters):
1238 subl $40, %esp // sub extra 16 from the stack for alignment
1239 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1253 call ASM_PFX(EmuSnpReceiveFilters)
1259 ASM_GLOBAL ASM_PFX(GasketSnpStationAddress)
1260 ASM_PFX(GasketSnpStationAddress):
1263 subl $40, %esp // sub extra 16 from the stack for alignment
1264 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1277 ASM_GLOBAL ASM_PFX(GasketSnpStatistics)
1278 ASM_PFX(GasketSnpStatistics):
1281 subl $40, %esp // sub extra 16 from the stack for alignment
1282 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1292 call ASM_PFX(EmuSnpStatistics)
1298 ASM_GLOBAL ASM_PFX(GasketSnpMCastIpToMac)
1299 ASM_PFX(GasketSnpMCastIpToMac):
1302 subl $40, %esp // sub extra 16 from the stack for alignment
1303 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1313 call ASM_PFX(EmuSnpMCastIpToMac)
1319 ASM_GLOBAL ASM_PFX(GasketSnpNvData)
1320 ASM_PFX(GasketSnpNvData):
1323 subl $40, %esp // sub extra 16 from the stack for alignment
1324 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1336 call ASM_PFX(EmuSnpNvData)
1342 ASM_GLOBAL ASM_PFX(GasketSnpGetStatus)
1343 ASM_PFX(GasketSnpGetStatus):
1346 subl $40, %esp // sub extra 16 from the stack for alignment
1347 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1355 call ASM_PFX(EmuSnpGetStatus)
1362 ASM_GLOBAL ASM_PFX(GasketSnpTransmit)
1363 ASM_PFX(GasketSnpTransmit):
1366 subl $56, %esp // sub extra 16 from the stack for alignment
1367 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1383 call ASM_PFX(EmuSnpTransmit)
1390 ASM_GLOBAL ASM_PFX(GasketSnpReceive)
1391 ASM_PFX(GasketSnpReceive):
1394 subl $56, %esp // sub extra 16 from the stack for alignment
1395 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1411 call ASM_PFX(EmuSnpReceive)
1417 ASM_GLOBAL ASM_PFX(GasketSnpThunkOpen)
1418 ASM_PFX(GasketSnpThunkOpen):
1421 subl $24, %esp // sub extra 16 from the stack for alignment
1422 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1426 call ASM_PFX(EmuSnpThunkOpen)
1432 ASM_GLOBAL ASM_PFX(GasketSnpThunkClose)
1433 ASM_PFX(GasketSnpThunkClose):
1436 subl $24, %esp // sub extra 16 from the stack for alignment
1437 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1441 call ASM_PFX(EmuSnpThunkClose)