summaryrefslogtreecommitdiff
path: root/gdb/i387-tdep.h
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2010-04-07 18:44:51 +0000
committerH.J. Lu <hjl.tools@gmail.com>2010-04-07 18:44:51 +0000
commitf3162a56e7ede302bbc31dc588cce91fb0f76bc7 (patch)
treeb50d35b0ae981acfc450a44009285a2c11d55c57 /gdb/i387-tdep.h
parent27ad93b9b3ddf3b88df23a9f228905587a887df4 (diff)
downloadgdb-f3162a56e7ede302bbc31dc588cce91fb0f76bc7.tar.gz
Support i387 AVX.
2010-04-07 H.J. Lu <hongjiu.lu@intel.com> * i387-tdep.c: Include "i386-xstate.h". (XSAVE_XSTATE_BV_ADDR): New. (xsave_avxh_offset): Likewise. (XSAVE_AVXH_ADDR): Likewise. (i387_supply_xsave): Likewise. (i387_collect_xsave): Likewise. * i387-tdep.h (I387_NUM_YMM_REGS): New. (I387_YMM0H_REGNUM): Likewise. (I387_YMMENDH_REGNUM): Likewise. (i387_supply_xsave): Likewise. (i387_collect_xsave): Likewise.
Diffstat (limited to 'gdb/i387-tdep.h')
-rw-r--r--gdb/i387-tdep.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/gdb/i387-tdep.h b/gdb/i387-tdep.h
index 645eb91d135..976fa11d6cf 100644
--- a/gdb/i387-tdep.h
+++ b/gdb/i387-tdep.h
@@ -33,6 +33,8 @@ struct ui_file;
#define I387_ST0_REGNUM(tdep) ((tdep)->st0_regnum)
#define I387_NUM_XMM_REGS(tdep) ((tdep)->num_xmm_regs)
#define I387_MM0_REGNUM(tdep) ((tdep)->mm0_regnum)
+#define I387_NUM_YMM_REGS(tdep) ((tdep)->num_ymm_regs)
+#define I387_YMM0H_REGNUM(tdep) ((tdep)->ymm0h_regnum)
#define I387_FCTRL_REGNUM(tdep) (I387_ST0_REGNUM (tdep) + 8)
#define I387_FSTAT_REGNUM(tdep) (I387_FCTRL_REGNUM (tdep) + 1)
@@ -45,6 +47,8 @@ struct ui_file;
#define I387_XMM0_REGNUM(tdep) (I387_ST0_REGNUM (tdep) + 16)
#define I387_MXCSR_REGNUM(tdep) \
(I387_XMM0_REGNUM (tdep) + I387_NUM_XMM_REGS (tdep))
+#define I387_YMMENDH_REGNUM(tdep) \
+ (I387_YMM0H_REGNUM (tdep) + I387_NUM_YMM_REGS (tdep))
/* Print out the i387 floating point state. */
@@ -99,6 +103,11 @@ extern void i387_collect_fsave (const struct regcache *regcache, int regnum,
extern void i387_supply_fxsave (struct regcache *regcache, int regnum,
const void *fxsave);
+/* Similar to i387_supply_fxsave, but use XSAVE extended state. */
+
+extern void i387_supply_xsave (struct regcache *regcache, int regnum,
+ const void *xsave);
+
/* Fill register REGNUM (if it is a floating-point or SSE register) in
*FXSAVE with the value from REGCACHE. If REGNUM is -1, do this for
all registers. This function doesn't touch any of the reserved
@@ -107,6 +116,11 @@ extern void i387_supply_fxsave (struct regcache *regcache, int regnum,
extern void i387_collect_fxsave (const struct regcache *regcache, int regnum,
void *fxsave);
+/* Similar to i387_collect_fxsave, but use XSAVE extended state. */
+
+extern void i387_collect_xsave (const struct regcache *regcache,
+ int regnum, void *xsave, int gcore);
+
/* Prepare the FPU stack in REGCACHE for a function return. */
extern void i387_return_value (struct gdbarch *gdbarch,