summaryrefslogtreecommitdiff
path: root/src/debug
diff options
context:
space:
mode:
Diffstat (limited to 'src/debug')
-rw-r--r--src/debug/ee/debugger.inl17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/debug/ee/debugger.inl b/src/debug/ee/debugger.inl
index 612aacd609..c7aea02d6e 100644
--- a/src/debug/ee/debugger.inl
+++ b/src/debug/ee/debugger.inl
@@ -242,9 +242,24 @@ inline void FuncEvalFrame::UpdateRegDisplay(const PREGDISPLAY pRD)
pRD->SetEcxLocation(&(pDE->m_context.Ecx));
pRD->SetEaxLocation(&(pDE->m_context.Eax));
pRD->SetEbpLocation(&(pDE->m_context.Ebp));
- pRD->SP = (DWORD)GetSP(&pDE->m_context);
pRD->PCTAddr = GetReturnAddressPtr();
+
+#ifdef WIN64EXCEPTIONS
+
+ pRD->IsCallerContextValid = FALSE;
+ pRD->IsCallerSPValid = FALSE; // Don't add usage of this field. This is only temporary.
+
+ pRD->pCurrentContext->Eip = *PTR_PCODE(pRD->PCTAddr);
+ pRD->pCurrentContext->Esp = (DWORD)GetSP(&pDE->m_context);
+
+ SyncRegDisplayToCurrentContext(pRD);
+
+#else // WIN64EXCEPTIONS
+
pRD->ControlPC = *PTR_PCODE(pRD->PCTAddr);
+ pRD->SP = (DWORD)GetSP(&pDE->m_context);
+
+#endif // WIN64EXCEPTIONS
#elif defined(_TARGET_AMD64_)
pRD->IsCallerContextValid = FALSE;