diff options
author | Aleksandar Paunovic <aleksandar.paunovic@intel.com> | 2023-08-28 14:18:19 -0700 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2023-08-28 14:18:19 -0700 |
commit | c0c43317ef9a1f70ba5fab41d2d08dc7ce08f67e (patch) | |
tree | 166450fcb2e25ab5f80cb6d2d604f4d414fc72be /gdbserver/i387-fp.cc | |
parent | 03e6fe7e0a6fc4adccf59681962490a10fb31f7c (diff) | |
download | gdb-c0c43317ef9a1f70ba5fab41d2d08dc7ce08f67e.zip gdb-c0c43317ef9a1f70ba5fab41d2d08dc7ce08f67e.tar.gz gdb-c0c43317ef9a1f70ba5fab41d2d08dc7ce08f67e.tar.bz2 |
gdbserver: Refactor the legacy region within the xsave struct
Legacy fields of the XSAVE area are already defined within fx_save
struct. Use class inheritance to remove code duplication.
The two changed functions are called within all tests which run
gdbserver.
Signed-off-by: Aleksandar Paunovic <aleksandar.paunovic@intel.com>
Co-authored-by: John Baldwin <jhb@FreeBSD.org>
Approved-By: Simon Marchi <simon.marchi@efficios.com>
Diffstat (limited to 'gdbserver/i387-fp.cc')
-rw-r--r-- | gdbserver/i387-fp.cc | 27 |
1 files changed, 2 insertions, 25 deletions
diff --git a/gdbserver/i387-fp.cc b/gdbserver/i387-fp.cc index b8d7a91..a122e2d 100644 --- a/gdbserver/i387-fp.cc +++ b/gdbserver/i387-fp.cc @@ -81,29 +81,7 @@ struct i387_fxsave { unsigned char xmm_space[256]; }; -struct i387_xsave { - /* All these are only sixteen bits, plus padding, except for fop (which - is only eleven bits), and fooff / fioff (which are 32 bits each). */ - unsigned short fctrl; - unsigned short fstat; - unsigned short ftag; - unsigned short fop; - unsigned int fioff; - unsigned short fiseg; - unsigned short pad1; - unsigned int fooff; - unsigned short foseg; - unsigned short pad12; - - unsigned int mxcsr; - unsigned int mxcsr_mask; - - /* Space for eight 80-bit FP values in 128-bit spaces. */ - unsigned char st_space[128]; - - /* Space for eight 128-bit XMM values, or 16 on x86-64. */ - unsigned char xmm_space[256]; - +struct i387_xsave : public i387_fxsave { unsigned char reserved1[48]; /* The extended control register 0 (the XFEATURE_ENABLED_MASK @@ -725,7 +703,6 @@ void i387_xsave_to_cache (struct regcache *regcache, const void *buf) { struct i387_xsave *fp = (struct i387_xsave *) buf; - struct i387_fxsave *fxp = (struct i387_fxsave *) buf; bool amd64 = register_size (regcache->tdesc, 0) == 8; int i, top; unsigned long val; @@ -962,7 +939,7 @@ i387_xsave_to_cache (struct regcache *regcache, const void *buf) { int tag; if (fp->ftag & (1 << i)) - tag = i387_ftag (fxp, (i + 8 - top) % 8); + tag = i387_ftag (fp, (i + 8 - top) % 8); else tag = 3; val |= tag << (2 * i); |