summaryrefslogtreecommitdiff
path: root/src/pal/src/arch
diff options
context:
space:
mode:
authorJonghyun Park <parjong@gmail.com>2017-02-17 18:19:16 +0900
committerJan Vorlicek <janvorli@microsoft.com>2017-02-17 10:19:16 +0100
commit00fc8f9f212bc00eda9c94707b50e278d9b8d7c4 (patch)
treec28efb3b009e5302ec645424d4a7228bae1dbbce /src/pal/src/arch
parentc75fee493ec0eb8b4ac57ac3ff69281531218386 (diff)
downloadcoreclr-00fc8f9f212bc00eda9c94707b50e278d9b8d7c4.tar.gz
coreclr-00fc8f9f212bc00eda9c94707b50e278d9b8d7c4.tar.bz2
coreclr-00fc8f9f212bc00eda9c94707b50e278d9b8d7c4.zip
[x86/Linux] Fix GetCallerSp (#9384)
* [x86/Linux] Fix GetCallerSp * Do NOT pop stack argument for TransitionFrame * Add ResumeEsp to CONTEXT
Diffstat (limited to 'src/pal/src/arch')
-rw-r--r--src/pal/src/arch/i386/asmconstants.h1
-rw-r--r--src/pal/src/arch/i386/context2.S3
-rw-r--r--src/pal/src/arch/i386/exceptionhelper.S2
3 files changed, 4 insertions, 2 deletions
diff --git a/src/pal/src/arch/i386/asmconstants.h b/src/pal/src/arch/i386/asmconstants.h
index ff763ef16b..d947cb8bcd 100644
--- a/src/pal/src/arch/i386/asmconstants.h
+++ b/src/pal/src/arch/i386/asmconstants.h
@@ -28,3 +28,4 @@
#define CONTEXT_Xmm5 CONTEXT_Xmm4+16
#define CONTEXT_Xmm6 CONTEXT_Xmm5+16
#define CONTEXT_Xmm7 CONTEXT_Xmm6+16
+#define CONTEXT_ResumeEsp CONTEXT_ExtendedRegisters+512
diff --git a/src/pal/src/arch/i386/context2.S b/src/pal/src/arch/i386/context2.S
index 11aba5e647..16843c8fc9 100644
--- a/src/pal/src/arch/i386/context2.S
+++ b/src/pal/src/arch/i386/context2.S
@@ -42,6 +42,7 @@ LEAF_ENTRY CONTEXT_CaptureContext, _TEXT
mov [eax + CONTEXT_Ebp], ebp
lea ebx, [esp + 12]
mov [eax + CONTEXT_Esp], ebx
+ mov [eax + CONTEXT_ResumeEsp], ebx
mov ebx, [esp + 8]
mov [eax + CONTEXT_Eip], ebx
@@ -114,7 +115,7 @@ LOCAL_LABEL(Done_Restore_CONTEXT_FLOATING_POINT):
LOCAL_LABEL(Done_Restore_CONTEXT_EXTENDED_REGISTERS):
// Restore Stack
- mov esp, [eax + CONTEXT_Esp]
+ mov esp, [eax + CONTEXT_ResumeEsp]
// Create a minimal frame
push DWORD PTR [eax + CONTEXT_Eip]
diff --git a/src/pal/src/arch/i386/exceptionhelper.S b/src/pal/src/arch/i386/exceptionhelper.S
index 2061be26f8..4980b89451 100644
--- a/src/pal/src/arch/i386/exceptionhelper.S
+++ b/src/pal/src/arch/i386/exceptionhelper.S
@@ -23,7 +23,7 @@ LEAF_ENTRY ThrowExceptionFromContextInternal, _TEXT
mov ebx, [esp + 8] // eax: CONTEXT *
mov ebp, [ebx + CONTEXT_Ebp]
- mov esp, [ebx + CONTEXT_Esp]
+ mov esp, [ebx + CONTEXT_ResumeEsp]
// The ESP is re-initialized as the target frame's value, so the current function's
// CFA is now right at the ESP.