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)
47 ASM_GLOBAL ASM_PFX(GasketSecConfigStdIn)
48 ASM_PFX(GasketSecConfigStdIn):
51 subl $24, %esp // sub extra 16 from the stack for alignment
52 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
58 call ASM_PFX(SecConfigStdIn)
64 ASM_GLOBAL ASM_PFX(GasketSecWriteStdOut)
65 ASM_PFX(GasketSecWriteStdOut):
68 subl $24, %esp // sub extra 16 from the stack for alignment
69 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
75 call ASM_PFX(SecWriteStdOut)
81 ASM_GLOBAL ASM_PFX(GasketSecReadStdIn)
82 ASM_PFX(GasketSecReadStdIn):
85 subl $24, %esp // sub extra 16 from the stack for alignment
86 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
92 call ASM_PFX(SecReadStdIn)
98 ASM_GLOBAL ASM_PFX(GasketSecPollStdIn)
99 ASM_PFX(GasketSecPollStdIn):
102 subl $24, %esp // sub extra 16 from the stack for alignment
103 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
109 call ASM_PFX(SecPollStdIn)
116 ASM_GLOBAL ASM_PFX(GasketSecSetTimer)
117 ASM_PFX(GasketSecSetTimer):
120 subl $24, %esp // sub extra 16 from the stack for alignment
121 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
127 call ASM_PFX(SecSetTimer)
134 ASM_GLOBAL ASM_PFX(GasketSecEnableInterrupt)
135 ASM_PFX(GasketSecEnableInterrupt):
138 subl $24, %esp // sub extra 16 from the stack for alignment
139 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
141 call ASM_PFX(SecEnableInterrupt)
148 ASM_GLOBAL ASM_PFX(GasketSecDisableInterrupt)
149 ASM_PFX(GasketSecDisableInterrupt):
152 subl $24, %esp // sub extra 16 from the stack for alignment
153 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
155 call ASM_PFX(SecDisableInterrupt)
161 ASM_GLOBAL ASM_PFX(GasketQueryPerformanceFrequency)
162 ASM_PFX(GasketQueryPerformanceFrequency):
165 subl $24, %esp // sub extra 16 from the stack for alignment
166 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
168 call ASM_PFX(QueryPerformanceFrequency)
175 ASM_GLOBAL ASM_PFX(GasketQueryPerformanceCounter)
176 ASM_PFX(GasketQueryPerformanceCounter):
179 subl $24, %esp // sub extra 16 from the stack for alignment
180 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
182 call ASM_PFX(QueryPerformanceCounter)
189 ASM_GLOBAL ASM_PFX(GasketSecSleep)
190 ASM_PFX(GasketSecSleep):
193 subl $24, %esp // sub extra 16 from the stack for alignment
194 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
198 call ASM_PFX(SecSleep)
205 ASM_GLOBAL ASM_PFX(GasketSecCpuSleep)
206 ASM_PFX(GasketSecCpuSleep):
209 subl $24, %esp // sub extra 16 from the stack for alignment
210 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
212 call ASM_PFX(SecCpuSleep)
219 ASM_GLOBAL ASM_PFX(GasketSecExit)
220 ASM_PFX(GasketSecExit):
223 subl $24, %esp // sub extra 16 from the stack for alignment
224 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
228 call ASM_PFX(SecExit) // Less to do as we will never return to EFI ABI world
230 jmp LDEAD_LOOP // _exit should never return
233 ASM_GLOBAL ASM_PFX(GasketSecGetTime)
234 ASM_PFX(GasketSecGetTime):
237 subl $24, %esp // sub extra 16 from the stack for alignment
238 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
244 call ASM_PFX(SecGetTime)
250 ASM_GLOBAL ASM_PFX(GasketSecSetTime)
251 ASM_PFX(GasketSecSetTime):
254 subl $24, %esp // sub extra 16 from the stack for alignment
255 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
261 call ASM_PFX(SecSetTime)
268 ASM_GLOBAL ASM_PFX(GasketSecGetNextProtocol)
269 ASM_PFX(GasketSecGetNextProtocol):
272 subl $40, %esp // sub extra 16 from the stack for alignment
273 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
283 call ASM_PFX(SecGetNextProtocol)
289 // PPIs produced by SEC
291 ASM_GLOBAL ASM_PFX(GasketSecPeCoffGetEntryPoint)
292 ASM_PFX(GasketSecPeCoffGetEntryPoint):
295 subl $24, %esp // sub extra 16 from the stack for alignment
296 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
302 call ASM_PFX(SecPeCoffGetEntryPoint)
308 ASM_GLOBAL ASM_PFX(GasketSecPeCoffRelocateImageExtraAction)
309 ASM_PFX(GasketSecPeCoffRelocateImageExtraAction):
312 subl $24, %esp // sub extra 16 from the stack for alignment
313 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
317 call ASM_PFX(SecPeCoffRelocateImageExtraAction)
323 ASM_GLOBAL ASM_PFX(GasketSecPeCoffUnloadImageExtraAction)
324 ASM_PFX(GasketSecPeCoffUnloadImageExtraAction):
327 subl $24, %esp // sub extra 16 from the stack for alignment
328 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
332 call ASM_PFX(SecPeCoffUnloadImageExtraAction)
339 ASM_GLOBAL ASM_PFX(GasketSecEmuThunkAddress)
340 ASM_PFX(GasketSecEmuThunkAddress):
343 subl $24, %esp // sub extra 16 from the stack for alignment
344 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
346 call ASM_PFX(SecEmuThunkAddress)
353 // Gasket functions for EFI_EMU_UGA_IO_PROTOCOL
356 ASM_GLOBAL ASM_PFX(GasketX11Size)
357 ASM_PFX(GasketX11Size):
360 subl $40, %esp // sub extra 16 from the stack for alignment
361 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
371 call ASM_PFX(X11Size)
378 ASM_GLOBAL ASM_PFX(GasketX11CheckKey)
379 ASM_PFX(GasketX11CheckKey):
382 subl $24, %esp // sub extra 16 from the stack for alignment
383 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
387 call ASM_PFX(X11CheckKey)
393 ASM_GLOBAL ASM_PFX(GasketX11GetKey)
394 ASM_PFX(GasketX11GetKey):
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(X11GetKey)
411 ASM_GLOBAL ASM_PFX(GasketX11KeySetState)
412 ASM_PFX(GasketX11KeySetState):
415 subl $24, %esp // sub extra 16 from the stack for alignment
416 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
422 call ASM_PFX(X11KeySetState)
429 ASM_GLOBAL ASM_PFX(GasketX11RegisterKeyNotify)
430 ASM_PFX(GasketX11RegisterKeyNotify):
433 subl $40, %esp // sub extra 16 from the stack for alignment
434 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
444 call ASM_PFX(X11RegisterKeyNotify)
451 ASM_GLOBAL ASM_PFX(GasketX11Blt)
452 ASM_PFX(GasketX11Blt):
455 subl $40, %esp // sub extra 16 from the stack for alignment
456 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
473 ASM_GLOBAL ASM_PFX(GasketX11CheckPointer)
474 ASM_PFX(GasketX11CheckPointer):
477 subl $24, %esp // sub extra 16 from the stack for alignment
478 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
482 call ASM_PFX(X11CheckPointer)
489 ASM_GLOBAL ASM_PFX(GasketX11GetPointerState)
490 ASM_PFX(GasketX11GetPointerState):
493 subl $24, %esp // sub extra 16 from the stack for alignment
494 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
500 call ASM_PFX(X11GetPointerState)
507 ASM_GLOBAL ASM_PFX(GasketX11GraphicsWindowOpen)
508 ASM_PFX(GasketX11GraphicsWindowOpen):
511 subl $24, %esp // sub extra 16 from the stack for alignment
512 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
516 call ASM_PFX(X11GraphicsWindowOpen)
523 ASM_GLOBAL ASM_PFX(GasketX11GraphicsWindowClose)
524 ASM_PFX(GasketX11GraphicsWindowClose):
527 subl $24, %esp // sub extra 16 from the stack for alignment
528 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
534 call ASM_PFX(X11GraphicsWindowClose)
543 ASM_GLOBAL ASM_PFX(GasketPthreadMutexLock)
544 ASM_PFX(GasketPthreadMutexLock):
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(PthreadMutexLock)
559 ASM_GLOBAL ASM_PFX(GasketPthreadMutexUnLock)
560 ASM_PFX(GasketPthreadMutexUnLock):
563 subl $24, %esp // sub extra 16 from the stack for alignment
564 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
568 call ASM_PFX(PthreadMutexUnLock)
574 ASM_GLOBAL ASM_PFX(GasketPthreadMutexTryLock)
575 ASM_PFX(GasketPthreadMutexTryLock):
578 subl $24, %esp // sub extra 16 from the stack for alignment
579 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
583 call ASM_PFX(PthreadMutexTryLock)
589 ASM_GLOBAL ASM_PFX(GasketPthreadMutexInit)
590 ASM_PFX(GasketPthreadMutexInit):
593 subl $24, %esp // sub extra 16 from the stack for alignment
594 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
596 call ASM_PFX(PthreadMutexInit)
604 ASM_GLOBAL ASM_PFX(GasketPthreadMutexDestroy)
605 ASM_PFX(GasketPthreadMutexDestroy):
608 subl $24, %esp // sub extra 16 from the stack for alignment
609 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
613 call ASM_PFX(PthreadMutexDestroy)
620 ASM_GLOBAL ASM_PFX(GasketPthreadCreate)
621 ASM_PFX(GasketPthreadCreate):
624 subl $40, %esp // sub extra 16 from the stack for alignment
625 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
635 call ASM_PFX(PthreadCreate)
642 ASM_GLOBAL ASM_PFX(GasketPthreadExit)
643 ASM_PFX(GasketPthreadExit):
646 subl $24, %esp // sub extra 16 from the stack for alignment
647 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
651 call ASM_PFX(PthreadExit)
659 ASM_GLOBAL ASM_PFX(GasketPthreadSelf)
660 ASM_PFX(GasketPthreadSelf):
663 subl $24, %esp // sub extra 16 from the stack for alignment
664 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
666 call ASM_PFX(PthreadSelf)
673 ASM_GLOBAL ASM_PFX(GasketPthreadOpen)
674 ASM_PFX(GasketPthreadOpen):
677 subl $24, %esp // sub extra 16 from the stack for alignment
678 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
682 call ASM_PFX(PthreadOpen)
689 ASM_GLOBAL ASM_PFX(GasketPthreadClose)
690 ASM_PFX(GasketPthreadClose):
693 subl $24, %esp // sub extra 16 from the stack for alignment
694 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
698 call ASM_PFX(PthreadClose)
708 // UNIX ABI to EFI ABI call
711 // ReverseGasketUint64 (
715 ASM_GLOBAL ASM_PFX(ReverseGasketUint64)
716 ASM_PFX(ReverseGasketUint64):
718 movl %esp, %ebp // stack frame is for the debugger
728 // UNIX ABI to EFI ABI call
731 // ReverseGasketUint64Uint64 (
736 ASM_GLOBAL ASM_PFX(ReverseGasketUint64Uint64)
737 ASM_PFX(ReverseGasketUint64Uint64):
739 movl %esp, %ebp // stack frame is for the debugger
751 ASM_GLOBAL ASM_PFX(GasketSecUnixPeiAutoScan)
752 ASM_PFX(GasketSecUnixPeiAutoScan):
755 subl $40, %esp // sub extra 16 from the stack for alignment
756 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
764 call ASM_PFX(SecUnixPeiAutoScan)
771 ASM_GLOBAL ASM_PFX(GasketSecUnixFdAddress)
772 ASM_PFX(GasketSecUnixFdAddress):
775 subl $40, %esp // sub extra 16 from the stack for alignment
776 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
786 call ASM_PFX(SecUnixFdAddress)
793 // EmuIoThunk SimpleFileSystem
795 ASM_GLOBAL ASM_PFX(GasketPosixOpenVolume)
796 ASM_PFX(GasketPosixOpenVolume):
799 subl $40, %esp // sub extra 16 from the stack for alignment
800 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
810 call ASM_PFX(PosixOpenVolume)
817 ASM_GLOBAL ASM_PFX(GasketPosixFileOpen)
818 ASM_PFX(GasketPosixFileOpen):
821 subl $40, %esp // sub extra 16 from the stack for alignment
822 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
834 call ASM_PFX(PosixFileOpen)
841 ASM_GLOBAL ASM_PFX(GasketPosixFileCLose)
842 ASM_PFX(GasketPosixFileCLose):
845 subl $24, %esp // sub extra 16 from the stack for alignment
846 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
850 call ASM_PFX(PosixFileCLose)
857 ASM_GLOBAL ASM_PFX(GasketPosixFileDelete)
858 ASM_PFX(GasketPosixFileDelete):
861 subl $24, %esp // sub extra 16 from the stack for alignment
862 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
866 call ASM_PFX(PosixFileDelete)
873 ASM_GLOBAL ASM_PFX(GasketPosixFileRead)
874 ASM_PFX(GasketPosixFileRead):
877 subl $40, %esp // sub extra 16 from the stack for alignment
878 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
886 call ASM_PFX(PosixFileRead)
893 ASM_GLOBAL ASM_PFX(GasketPosixFileWrite)
894 ASM_PFX(GasketPosixFileWrite):
897 subl $40, %esp // sub extra 16 from the stack for alignment
898 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
906 call ASM_PFX(PosixFileWrite)
913 ASM_GLOBAL ASM_PFX(GasketPosixFileSetPossition)
914 ASM_PFX(GasketPosixFileSetPossition):
917 subl $24, %esp // sub extra 16 from the stack for alignment
918 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
924 call ASM_PFX(PosixFileSetPossition)
931 ASM_GLOBAL ASM_PFX(GasketPosixFileGetPossition)
932 ASM_PFX(GasketPosixFileGetPossition):
935 subl $24, %esp // sub extra 16 from the stack for alignment
936 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
942 call ASM_PFX(PosixFileGetPossition)
949 ASM_GLOBAL ASM_PFX(GasketPosixFileGetInfo)
950 ASM_PFX(GasketPosixFileGetInfo):
953 subl $40, %esp // sub extra 16 from the stack for alignment
954 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
964 call ASM_PFX(PosixFileGetInfo)
971 ASM_GLOBAL ASM_PFX(GasketPosixFileSetInfo)
972 ASM_PFX(GasketPosixFileSetInfo):
975 subl $40, %esp // sub extra 16 from the stack for alignment
976 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
986 call ASM_PFX(PosixFileSetInfo)
993 ASM_GLOBAL ASM_PFX(GasketPosixFileFlush)
994 ASM_PFX(GasketPosixFileFlush):
997 subl $24, %esp // sub extra 16 from the stack for alignment
998 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1002 call ASM_PFX(PosixFileFlush)
1009 ASM_GLOBAL ASM_PFX(GasketPosixFileSystmeThunkOpen)
1010 ASM_PFX(GasketPosixFileSystmeThunkOpen):
1013 subl $24, %esp // sub extra 16 from the stack for alignment
1014 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1018 call ASM_PFX(PosixFileSystmeThunkOpen)
1025 ASM_GLOBAL ASM_PFX(GasketPosixFileSystmeThunkClose)
1026 ASM_PFX(GasketPosixFileSystmeThunkClose):
1029 subl $24, %esp // sub extra 16 from the stack for alignment
1030 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1034 call ASM_PFX(PosixFileSystmeThunkClose)
1040 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoReset)
1041 ASM_PFX(GasketEmuBlockIoReset):
1044 subl $24, %esp // sub extra 16 from the stack for alignment
1045 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1051 call ASM_PFX(EmuBlockIoReset)
1058 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoReadBlocks)
1059 ASM_PFX(GasketEmuBlockIoReadBlocks):
1062 subl $40, %esp // sub extra 16 from the stack for alignment
1063 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1077 call ASM_PFX(EmuBlockIoReadBlocks)
1084 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoWriteBlocks)
1085 ASM_PFX(GasketEmuBlockIoWriteBlocks):
1088 subl $40, %esp // sub extra 16 from the stack for alignment
1089 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1103 call ASM_PFX(EmuBlockIoWriteBlocks)
1110 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoFlushBlocks)
1111 ASM_PFX(GasketEmuBlockIoFlushBlocks): pushl %ebp
1113 subl $24, %esp // sub extra 16 from the stack for alignment
1114 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1121 call ASM_PFX(EmuBlockIoFlushBlocks)
1128 ASM_GLOBAL ASM_PFX(GasketEmuBlockIoCreateMapping)
1129 ASM_PFX(GasketEmuBlockIoCreateMapping):
1132 subl $24, %esp // sub extra 16 from the stack for alignment
1133 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1139 call ASM_PFX(EmuBlockIoCreateMapping)
1146 ASM_GLOBAL ASM_PFX(GasketBlockIoThunkOpen)
1147 ASM_PFX(GasketBlockIoThunkOpen):
1150 subl $24, %esp // sub extra 16 from the stack for alignment
1151 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1155 call ASM_PFX(EmuBlockIoThunkOpen)
1162 ASM_GLOBAL ASM_PFX(GasketBlockIoThunkClose)
1163 ASM_PFX(GasketBlockIoThunkClose):
1166 subl $24, %esp // sub extra 16 from the stack for alignment
1167 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1171 call ASM_PFX(EmuBlockIoThunkClose)
1179 ASM_GLOBAL ASM_PFX(GasketSnpCreateMapping)
1180 ASM_PFX(GasketSnpCreateMapping):
1183 subl $24, %esp // sub extra 16 from the stack for alignment
1184 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1190 call ASM_PFX(EmuSnpCreateMapping)
1197 ASM_GLOBAL ASM_PFX(GasketSnpStart)
1198 ASM_PFX(GasketSnpStart):
1201 subl $24, %esp // sub extra 16 from the stack for alignment
1202 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1206 call ASM_PFX(EmuSnpStart)
1213 ASM_GLOBAL ASM_PFX(GasketSnpStop)
1214 ASM_PFX(GasketSnpStop):
1217 subl $24, %esp // sub extra 16 from the stack for alignment
1218 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1222 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)
1249 ASM_GLOBAL ASM_PFX(GasketSnpReset)
1250 ASM_PFX(GasketSnpReset):
1253 subl $24, %esp // sub extra 16 from the stack for alignment
1254 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1260 call ASM_PFX(EmuSnpReset)
1267 ASM_GLOBAL ASM_PFX(GasketSnpShutdown)
1268 ASM_PFX(GasketSnpShutdown):
1271 subl $24, %esp // sub extra 16 from the stack for alignment
1272 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1276 call ASM_PFX(EmuSnpShutdown)
1283 ASM_GLOBAL ASM_PFX(GasketSnpReceiveFilters)
1284 ASM_PFX(GasketSnpReceiveFilters):
1287 subl $40, %esp // sub extra 16 from the stack for alignment
1288 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1302 call ASM_PFX(EmuSnpReceiveFilters)
1309 ASM_GLOBAL ASM_PFX(GasketSnpStationAddress)
1310 ASM_PFX(GasketSnpStationAddress):
1313 subl $40, %esp // sub extra 16 from the stack for alignment
1314 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1328 ASM_GLOBAL ASM_PFX(GasketSnpStatistics)
1329 ASM_PFX(GasketSnpStatistics):
1332 subl $40, %esp // sub extra 16 from the stack for alignment
1333 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1343 call ASM_PFX(EmuSnpStatistics)
1350 ASM_GLOBAL ASM_PFX(GasketSnpMCastIpToMac)
1351 ASM_PFX(GasketSnpMCastIpToMac):
1354 subl $40, %esp // sub extra 16 from the stack for alignment
1355 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1365 call ASM_PFX(EmuSnpMCastIpToMac)
1372 ASM_GLOBAL ASM_PFX(GasketSnpNvData)
1373 ASM_PFX(GasketSnpNvData):
1376 subl $40, %esp // sub extra 16 from the stack for alignment
1377 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1389 call ASM_PFX(EmuSnpNvData)
1396 ASM_GLOBAL ASM_PFX(GasketSnpGetStatus)
1397 ASM_PFX(GasketSnpGetStatus):
1400 subl $40, %esp // sub extra 16 from the stack for alignment
1401 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1409 call ASM_PFX(EmuSnpGetStatus)
1417 ASM_GLOBAL ASM_PFX(GasketSnpTransmit)
1418 ASM_PFX(GasketSnpTransmit):
1421 subl $56, %esp // sub extra 16 from the stack for alignment
1422 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1438 call ASM_PFX(EmuSnpTransmit)
1446 ASM_GLOBAL ASM_PFX(GasketSnpReceive)
1447 ASM_PFX(GasketSnpReceive):
1450 subl $56, %esp // sub extra 16 from the stack for alignment
1451 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1467 call ASM_PFX(EmuSnpReceive)
1474 ASM_GLOBAL ASM_PFX(GasketSnpThunkOpen)
1475 ASM_PFX(GasketSnpThunkOpen):
1478 subl $24, %esp // sub extra 16 from the stack for alignment
1479 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1483 call ASM_PFX(EmuSnpThunkOpen)
1490 ASM_GLOBAL ASM_PFX(GasketSnpThunkClose)
1491 ASM_PFX(GasketSnpThunkClose):
1494 subl $24, %esp // sub extra 16 from the stack for alignment
1495 and $-16, %esp // stack needs to end in 0xFFFFFFF0 before call
1499 call ASM_PFX(EmuSnpThunkClose)