Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.

Commit

Permalink
[x86/Linux] Port gmsasm.asm (#8456)
Browse files Browse the repository at this point in the history
  • Loading branch information
parjong authored and jkotas committed Dec 6, 2016
1 parent 61ffc9f commit ea8387f
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/vm/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,10 @@ else(WIN32)
${ARCH_SOURCES_DIR}/umthunkstub.S
${ARCH_SOURCES_DIR}/virtualcallstubamd64.S
)
elseif(CLR_CMAKE_TARGET_ARCH_I386)
set(VM_SOURCES_WKS_ARCH_ASM
${ARCH_SOURCES_DIR}/gmsasm.S
)
elseif(CLR_CMAKE_TARGET_ARCH_ARM)
set(VM_SOURCES_WKS_ARCH_ASM
${ARCH_SOURCES_DIR}/asmhelpers.S
Expand Down
28 changes: 28 additions & 0 deletions src/vm/i386/gmsasm.S
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit ea8387f

Please sign in to comment.