aboutsummaryrefslogtreecommitdiff
path: root/gdb/i387-tdep.h
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2010-04-07 18:44:57 +0000
committerH.J. Lu <hjl.tools@gmail.com>2010-04-07 18:44:57 +0000
commit31aeac7844e6e347a01fa69178fd1014e69578c0 (patch)
tree309d0c9242fe9e20d29eef1e2c4da1a2699f81b1 /gdb/i387-tdep.h
parentc131fcee79bd9082762a1699a657949771fa245f (diff)
downloadgdb-31aeac7844e6e347a01fa69178fd1014e69578c0.zip
gdb-31aeac7844e6e347a01fa69178fd1014e69578c0.tar.gz
gdb-31aeac7844e6e347a01fa69178fd1014e69578c0.tar.bz2
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 645eb91..976fa11 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,