diff options
Diffstat (limited to 'src/debug/ee/debugger.inl')
-rw-r--r-- | src/debug/ee/debugger.inl | 17 |
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; |