diff options
Diffstat (limited to 'src/vm/i386/gmsasm.S')
-rw-r--r-- | src/vm/i386/gmsasm.S | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/vm/i386/gmsasm.S b/src/vm/i386/gmsasm.S new file mode 100644 index 0000000000..1e43fd281f --- /dev/null +++ b/src/vm/i386/gmsasm.S @@ -0,0 +1,28 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +.intel_syntax noprefix +#include "unixasmmacros.inc" +#include "asmconstants.h" + +// int __fastcall LazyMachStateCaptureState(struct LazyMachState *pState); +LEAF_ENTRY LazyMachStateCaptureState, _TEXT + // marks that this is not yet valid + mov dword ptr [ecx+MachState__pRetAddr], 0 + + // remember register values + mov [ecx+MachState__edi], edi + mov [ecx+MachState__esi], esi + mov [ecx+MachState__ebx], ebx + mov [ecx+LazyMachState_captureEbp], ebp + mov [ecx+LazyMachState_captureEsp], esp + + // capture return address + mov eax, [esp] + mov dword ptr [ecx+LazyMachState_captureEip], eax + + // return 0 + xor eax, eax + ret +LEAF_END LazyMachStateCaptureState, _TEXT |