Skip to main content
summaryrefslogtreecommitdiffstats
path: root/agent
diff options
context:
space:
mode:
authorEugene Tarassov2012-07-28 01:32:12 +0000
committerEugene Tarassov2012-07-28 01:32:12 +0000
commitf158a806c2c569710f2cc2b84038b24a4a900cfe (patch)
treee46cd37db81bd65a38f0a8a966ba8e6c3d7eb87c /agent
parent01e32c63f6903e0729dd69558842ec6f01acb82d (diff)
downloadorg.eclipse.tcf.agent-f158a806c2c569710f2cc2b84038b24a4a900cfe.tar.gz
org.eclipse.tcf.agent-f158a806c2c569710f2cc2b84038b24a4a900cfe.tar.xz
org.eclipse.tcf.agent-f158a806c2c569710f2cc2b84038b24a4a900cfe.zip
TCF Agent: added display of XMM registers for 32-bit Windows
Diffstat (limited to 'agent')
-rw-r--r--agent/machine/x86_64/tcf/cpudefs-mdep.c28
-rw-r--r--agent/system/Windows/tcf/context-win32.c2
2 files changed, 21 insertions, 9 deletions
diff --git a/agent/machine/x86_64/tcf/cpudefs-mdep.c b/agent/machine/x86_64/tcf/cpudefs-mdep.c
index 4984848d..733576ba 100644
--- a/agent/machine/x86_64/tcf/cpudefs-mdep.c
+++ b/agent/machine/x86_64/tcf/cpudefs-mdep.c
@@ -89,14 +89,26 @@ RegisterDefinition regs_def[] = {
{ "status", REG_OFFSET(FloatSave.StatusWord), 2, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, regs_index + 24 },
{ "tag", REG_OFFSET(FloatSave.TagWord), 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, regs_index + 24 },
- { "debug", 0, 0, -1, -1, 0, 0, 1, 1 }, /* 36 */
-
- { "dr0", REG_OFFSET(Dr0), 4, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, regs_index + 36 },
- { "dr1", REG_OFFSET(Dr1), 4, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, regs_index + 36 },
- { "dr2", REG_OFFSET(Dr2), 4, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, regs_index + 36 },
- { "dr3", REG_OFFSET(Dr3), 4, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, regs_index + 36 },
- { "dr6", REG_OFFSET(Dr6), 4, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, regs_index + 36 },
- { "dr7", REG_OFFSET(Dr7), 4, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, regs_index + 36 },
+ { "xmm", 0, 0, -1, -1, 0, 0, 1, 1 }, /* 36 */
+
+ { "mxcsr", REG_OFFSET(ExtendedRegisters) + 24, 4, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, regs_index + 36 },
+ { "xmm0", REG_OFFSET(ExtendedRegisters) + 10 * 16, 16, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, regs_index + 36 },
+ { "xmm1", REG_OFFSET(ExtendedRegisters) + 11 * 16, 16, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, regs_index + 36 },
+ { "xmm2", REG_OFFSET(ExtendedRegisters) + 12 * 16, 16, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, regs_index + 36 },
+ { "xmm3", REG_OFFSET(ExtendedRegisters) + 13 * 16, 16, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, regs_index + 36 },
+ { "xmm4", REG_OFFSET(ExtendedRegisters) + 14 * 16, 16, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, regs_index + 36 },
+ { "xmm5", REG_OFFSET(ExtendedRegisters) + 15 * 16, 16, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, regs_index + 36 },
+ { "xmm6", REG_OFFSET(ExtendedRegisters) + 16 * 16, 16, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, regs_index + 36 },
+ { "xmm7", REG_OFFSET(ExtendedRegisters) + 17 * 16, 16, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, regs_index + 36 },
+
+ { "debug", 0, 0, -1, -1, 0, 0, 1, 1 }, /* 46 */
+
+ { "dr0", REG_OFFSET(Dr0), 4, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, regs_index + 46 },
+ { "dr1", REG_OFFSET(Dr1), 4, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, regs_index + 46 },
+ { "dr2", REG_OFFSET(Dr2), 4, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, regs_index + 46 },
+ { "dr3", REG_OFFSET(Dr3), 4, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, regs_index + 46 },
+ { "dr6", REG_OFFSET(Dr6), 4, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, regs_index + 46 },
+ { "dr7", REG_OFFSET(Dr7), 4, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, regs_index + 46 },
#elif defined(_WIN32) && defined(__x86_64__)
# define REG_SP Rsp
diff --git a/agent/system/Windows/tcf/context-win32.c b/agent/system/Windows/tcf/context-win32.c
index 803b183a..794431a4 100644
--- a/agent/system/Windows/tcf/context-win32.c
+++ b/agent/system/Windows/tcf/context-win32.c
@@ -195,7 +195,7 @@ static void get_registers(Context * ctx) {
assert(ctx->stopped);
ext->regs->ContextFlags = CONTEXT_CONTROL | CONTEXT_INTEGER |
- CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS;
+ CONTEXT_FLOATING_POINT | CONTEXT_EXTENDED_REGISTERS | CONTEXT_DEBUG_REGISTERS;
if (GetThreadContext(ext->handle, ext->regs) == 0) {
ext->regs_error = get_error_report(log_error("GetThreadContext", 0));
}

Back to the top