mirror of https://github.com/x64dbg/TitanEngine
small fixed with MxCsr and other FltSave structures for x64
This commit is contained in:
parent
6dc9dcd3cf
commit
806f81e187
|
|
@ -56,18 +56,13 @@ bool _SetFullContextDataEx(HANDLE hActiveThread, TITAN_ENGINE_CONTEXT_t* titcont
|
||||||
|
|
||||||
DBGContext.FltSave.ControlWord = titcontext->x87fpu.ControlWord;
|
DBGContext.FltSave.ControlWord = titcontext->x87fpu.ControlWord;
|
||||||
DBGContext.FltSave.StatusWord = titcontext->x87fpu.StatusWord;
|
DBGContext.FltSave.StatusWord = titcontext->x87fpu.StatusWord;
|
||||||
memcpy(& (DBGContext.FltSave.TagWord), & (titcontext->x87fpu.TagWord), sizeof(titcontext->x87fpu.TagWord));
|
DBGContext.FltSave.TagWord = (BYTE)titcontext->x87fpu.TagWord;
|
||||||
#ifdef _WIN64
|
DBGContext.FltSave.ErrorSelector = (WORD)titcontext->x87fpu.ErrorSelector;
|
||||||
#define WIN64_CASTDWORDTOWORD (WORD)
|
|
||||||
#else
|
|
||||||
#define WIN64_CASTDWORDTOWORD (DWORD)
|
|
||||||
#endif
|
|
||||||
DBGContext.FltSave.ErrorSelector = WIN64_CASTDWORDTOWORD titcontext->x87fpu.ErrorSelector;
|
|
||||||
DBGContext.FltSave.ErrorOffset = titcontext->x87fpu.ErrorOffset;
|
DBGContext.FltSave.ErrorOffset = titcontext->x87fpu.ErrorOffset;
|
||||||
DBGContext.FltSave.DataSelector = WIN64_CASTDWORDTOWORD titcontext->x87fpu.DataSelector;
|
DBGContext.FltSave.DataSelector = (WORD)titcontext->x87fpu.DataSelector;
|
||||||
DBGContext.FltSave.DataOffset = titcontext->x87fpu.DataOffset;
|
DBGContext.FltSave.DataOffset = titcontext->x87fpu.DataOffset;
|
||||||
// Skip titcontext->x87fpu.Cr0NpxState
|
// Skip titcontext->x87fpu.Cr0NpxState
|
||||||
DBGContext.FltSave.MxCsr = titcontext->MxCsr;
|
DBGContext.MxCsr = titcontext->MxCsr;
|
||||||
|
|
||||||
for(int i = 0; i < 8; i++)
|
for(int i = 0; i < 8; i++)
|
||||||
memcpy(& DBGContext.FltSave.FloatRegisters[i], &(titcontext->RegisterArea[i * 10]), 10);
|
memcpy(& DBGContext.FltSave.FloatRegisters[i], &(titcontext->RegisterArea[i * 10]), 10);
|
||||||
|
|
@ -159,13 +154,13 @@ bool _GetFullContextDataEx(HANDLE hActiveThread, TITAN_ENGINE_CONTEXT_t* titcont
|
||||||
|
|
||||||
titcontext->x87fpu.ControlWord = DBGContext.FltSave.ControlWord;
|
titcontext->x87fpu.ControlWord = DBGContext.FltSave.ControlWord;
|
||||||
titcontext->x87fpu.StatusWord = DBGContext.FltSave.StatusWord;
|
titcontext->x87fpu.StatusWord = DBGContext.FltSave.StatusWord;
|
||||||
memcpy(& (titcontext->x87fpu.TagWord), & (DBGContext.FltSave.TagWord), sizeof(titcontext->x87fpu.TagWord));
|
titcontext->x87fpu.TagWord = DBGContext.FltSave.TagWord;
|
||||||
titcontext->x87fpu.ErrorSelector = DBGContext.FltSave.ErrorSelector;
|
titcontext->x87fpu.ErrorSelector = DBGContext.FltSave.ErrorSelector;
|
||||||
titcontext->x87fpu.ErrorOffset = DBGContext.FltSave.ErrorOffset;
|
titcontext->x87fpu.ErrorOffset = DBGContext.FltSave.ErrorOffset;
|
||||||
titcontext->x87fpu.DataSelector = DBGContext.FltSave.DataSelector;
|
titcontext->x87fpu.DataSelector = DBGContext.FltSave.DataSelector;
|
||||||
titcontext->x87fpu.DataOffset = DBGContext.FltSave.DataOffset;
|
titcontext->x87fpu.DataOffset = DBGContext.FltSave.DataOffset;
|
||||||
// Skip titcontext->x87fpu.Cr0NpxState
|
// Skip titcontext->x87fpu.Cr0NpxState
|
||||||
titcontext->MxCsr = DBGContext.FltSave.MxCsr;
|
titcontext->MxCsr = DBGContext.MxCsr;
|
||||||
|
|
||||||
for(int i = 0; i < 8; i++)
|
for(int i = 0; i < 8; i++)
|
||||||
memcpy(&(titcontext->RegisterArea[i * 10]), & DBGContext.FltSave.FloatRegisters[i], 10);
|
memcpy(&(titcontext->RegisterArea[i * 10]), & DBGContext.FltSave.FloatRegisters[i], 10);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue