summaryrefslogtreecommitdiff
path: root/src/inc/regdisp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/inc/regdisp.h')
-rw-r--r--src/inc/regdisp.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/inc/regdisp.h b/src/inc/regdisp.h
index 7875edf653..4a7e57e63d 100644
--- a/src/inc/regdisp.h
+++ b/src/inc/regdisp.h
@@ -95,7 +95,11 @@ struct REGDISPLAY : public REGDISPLAY_BASE {
#define REG_METHODS(reg) \
inline PDWORD Get##reg##Location(void) { return pCurrentContextPointers->reg; } \
- inline void Set##reg##Location(PDWORD p##reg) { pCurrentContextPointers->reg = p##reg; }
+ inline void Set##reg##Location(PDWORD p##reg) \
+ { \
+ pCurrentContextPointers->reg = p##reg; \
+ pCurrentContext->reg = *p##reg; \
+ }
#endif // WIN64EXCEPTIONS
@@ -115,8 +119,11 @@ struct REGDISPLAY : public REGDISPLAY_BASE {
inline TADDR GetRegdisplayFP(REGDISPLAY *display) {
LIMITED_METHOD_DAC_CONTRACT;
-
+#ifdef WIN64EXCEPTIONS
+ return (TADDR)display->pCurrentContext->Ebp;
+#else
return (TADDR)*display->GetEbpLocation();
+#endif
}
inline LPVOID GetRegdisplayFPAddress(REGDISPLAY *display) {