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 $56, %esp // sub extra 16 from the stack for alignment
1026 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1042 call ASM_PFX(EmuBlockIoReadBlocks)
1048 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoWriteBlocks)
1049 ASM_PFX(GasketEmuBlockIoWriteBlocks):
1052 subl $56, %esp // sub extra 16 from the stack for alignment
1053 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1069 call ASM_PFX(EmuBlockIoWriteBlocks)
1075 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoFlushBlocks)
1076 ASM_PFX(GasketEmuBlockIoFlushBlocks): pushl %ebp
1078 subl $24, %esp // sub extra 16 from the stack for alignment
1079 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1086 call ASM_PFX(EmuBlockIoFlushBlocks)
1092 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoCreateMapping)
1093 ASM_PFX(GasketEmuBlockIoCreateMapping):
1096 subl $24, %esp // sub extra 16 from the stack for alignment
1097 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1103 call ASM_PFX(EmuBlockIoCreateMapping)
1109 ASM_GLOBAL ASM_PFX(GasketBlockIoThunkOpen)
1110 ASM_PFX(GasketBlockIoThunkOpen):
1113 subl $24, %esp // sub extra 16 from the stack for alignment
1114 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1118 call ASM_PFX(EmuBlockIoThunkOpen)
1124 ASM_GLOBAL ASM_PFX(GasketBlockIoThunkClose)
1125 ASM_PFX(GasketBlockIoThunkClose):
1128 subl $24, %esp // sub extra 16 from the stack for alignment
1129 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1133 call ASM_PFX(EmuBlockIoThunkClose)
1140 ASM_GLOBAL ASM_PFX(GasketSnpCreateMapping)
1141 ASM_PFX(GasketSnpCreateMapping):
1144 subl $24, %esp // sub extra 16 from the stack for alignment
1145 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1151 call ASM_PFX(EmuSnpCreateMapping)
1157 ASM_GLOBAL ASM_PFX(GasketSnpStart)
1158 ASM_PFX(GasketSnpStart):
1161 subl $24, %esp // sub extra 16 from the stack for alignment
1162 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1166 call ASM_PFX(EmuSnpStart)
1172 ASM_GLOBAL ASM_PFX(GasketSnpStop)
1173 ASM_PFX(GasketSnpStop):
1176 subl $24, %esp // sub extra 16 from the stack for alignment
1177 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1181 call ASM_PFX(EmuSnpStop)
1187 ASM_GLOBAL ASM_PFX(GasketSnpInitialize)
1188 ASM_PFX(GasketSnpInitialize):
1191 subl $40, %esp // sub extra 16 from the stack for alignment
1192 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1200 call ASM_PFX(EmuSnpInitialize)
1206 ASM_GLOBAL ASM_PFX(GasketSnpReset)
1207 ASM_PFX(GasketSnpReset):
1210 subl $24, %esp // sub extra 16 from the stack for alignment
1211 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1217 call ASM_PFX(EmuSnpReset)
1223 ASM_GLOBAL ASM_PFX(GasketSnpShutdown)
1224 ASM_PFX(GasketSnpShutdown):
1227 subl $24, %esp // sub extra 16 from the stack for alignment
1228 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1232 call ASM_PFX(EmuSnpShutdown)
1238 ASM_GLOBAL ASM_PFX(GasketSnpReceiveFilters)
1239 ASM_PFX(GasketSnpReceiveFilters):
1242 subl $40, %esp // sub extra 16 from the stack for alignment
1243 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1257 call ASM_PFX(EmuSnpReceiveFilters)
1263 ASM_GLOBAL ASM_PFX(GasketSnpStationAddress)
1264 ASM_PFX(GasketSnpStationAddress):
1267 subl $40, %esp // sub extra 16 from the stack for alignment
1268 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1281 ASM_GLOBAL ASM_PFX(GasketSnpStatistics)
1282 ASM_PFX(GasketSnpStatistics):
1285 subl $40, %esp // sub extra 16 from the stack for alignment
1286 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1296 call ASM_PFX(EmuSnpStatistics)
1302 ASM_GLOBAL ASM_PFX(GasketSnpMCastIpToMac)
1303 ASM_PFX(GasketSnpMCastIpToMac):
1306 subl $40, %esp // sub extra 16 from the stack for alignment
1307 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1317 call ASM_PFX(EmuSnpMCastIpToMac)
1323 ASM_GLOBAL ASM_PFX(GasketSnpNvData)
1324 ASM_PFX(GasketSnpNvData):
1327 subl $40, %esp // sub extra 16 from the stack for alignment
1328 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1340 call ASM_PFX(EmuSnpNvData)
1346 ASM_GLOBAL ASM_PFX(GasketSnpGetStatus)
1347 ASM_PFX(GasketSnpGetStatus):
1350 subl $40, %esp // sub extra 16 from the stack for alignment
1351 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1359 call ASM_PFX(EmuSnpGetStatus)
1366 ASM_GLOBAL ASM_PFX(GasketSnpTransmit)
1367 ASM_PFX(GasketSnpTransmit):
1370 subl $56, %esp // sub extra 16 from the stack for alignment
1371 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1387 call ASM_PFX(EmuSnpTransmit)
1394 ASM_GLOBAL ASM_PFX(GasketSnpReceive)
1395 ASM_PFX(GasketSnpReceive):
1398 subl $56, %esp // sub extra 16 from the stack for alignment
1399 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1415 call ASM_PFX(EmuSnpReceive)
1421 ASM_GLOBAL ASM_PFX(GasketSnpThunkOpen)
1422 ASM_PFX(GasketSnpThunkOpen):
1425 subl $24, %esp // sub extra 16 from the stack for alignment
1426 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1430 call ASM_PFX(EmuSnpThunkOpen)
1436 ASM_GLOBAL ASM_PFX(GasketSnpThunkClose)
1437 ASM_PFX(GasketSnpThunkClose):
1440 subl $24, %esp // sub extra 16 from the stack for alignment
1441 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1445 call ASM_PFX(EmuSnpThunkClose)