summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonghyun Park <parjong@gmail.com>2016-06-01 19:19:55 +0900
committerJan Kotas <jkotas@microsoft.com>2016-06-01 03:19:55 -0700
commita027256a9491ad003cfd9cbd263397228ee2eefb (patch)
treecef3a0a4ae05119ab25474e02a0f19326af35b6b
parenta123c3972c447c8bcfa1810fde0c7ffb842fa31b (diff)
downloadcoreclr-a027256a9491ad003cfd9cbd263397228ee2eefb.tar.gz
coreclr-a027256a9491ad003cfd9cbd263397228ee2eefb.tar.bz2
coreclr-a027256a9491ad003cfd9cbd263397228ee2eefb.zip
Fix JIT PInvoke Check Failure on Linux/ARM (#5322)
Disable SP check on ARM
-rw-r--r--src/jit/codegenlegacy.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/jit/codegenlegacy.cpp b/src/jit/codegenlegacy.cpp
index 6bdcf56c50..5939557b68 100644
--- a/src/jit/codegenlegacy.cpp
+++ b/src/jit/codegenlegacy.cpp
@@ -20371,13 +20371,13 @@ regMaskTP CodeGen::genCodeForCall(GenTreePtr call,
{
genDefineTempLabel(returnLabel);
+#ifdef _TARGET_X86_
if (getInlinePInvokeCheckEnabled())
{
noway_assert(compiler->lvaInlinedPInvokeFrameVar != BAD_VAR_NUM);
BasicBlock * esp_check;
CORINFO_EE_INFO * pInfo = compiler->eeGetEEInfo();
-
/* mov ecx, dword ptr [frame.callSiteTracker] */
getEmitter()->emitIns_R_S (INS_mov,
@@ -20394,15 +20394,14 @@ regMaskTP CodeGen::genCodeForCall(GenTreePtr call,
if (argSize)
{
getEmitter()->emitIns_R_I (INS_add,
- EA_4BYTE,
+ EA_PTRSIZE,
REG_ARG_0,
argSize);
}
}
-
/* cmp ecx, esp */
- getEmitter()->emitIns_R_R(INS_cmp, EA_4BYTE, REG_ARG_0, REG_SPBASE);
+ getEmitter()->emitIns_R_R(INS_cmp, EA_PTRSIZE, REG_ARG_0, REG_SPBASE);
esp_check = genCreateTempLabel();
@@ -20415,6 +20414,7 @@ regMaskTP CodeGen::genCodeForCall(GenTreePtr call,
genDefineTempLabel(esp_check);
}
+#endif
}
/* Are we supposed to pop the arguments? */