152 unsigned long val, val2;
154 for (i = 0; i < 8; i++)
156 ((
char *) &
fp->st_space[0]) + i * 10);
163 fp->fop = (val2 & 0x7FF) | (
fp->fop & 0xF800);
194 for (i = 0; i < 8; i++)
196 ((
char *) &
fp->st_space[0]) + i * 10);
202 val =
fp->fctrl & 0xFFFF;
205 val =
fp->fstat & 0xFFFF;
208 val =
fp->ftag & 0xFFFF;
211 val =
fp->fiseg & 0xFFFF;
214 val =
fp->foseg & 0xFFFF;
218 val = (
fp->fop) & 0x7FF;
229 unsigned long val, val2;
233 for (i = 0; i < 8; i++)
235 ((
char *) &
fp->st_space[0]) + i * 16);
236 for (i = 0; i < num_xmm_registers; i++)
238 ((
char *) &
fp->xmm_space[0]) + i * 16);
246 fp->fop = (val2 & 0x7FF) | (
fp->fop & 0xF800);
259 for (i = 7; i >= 0; i--)
261 int tag = (val >> (i * 2)) & 3;
280 unsigned long val, val2;
282 unsigned long long clear_bv = 0;
297 for (i = 0; i < 8; i++)
298 memset (((
char *) &
fp->st_space[0]) + i * 16, 0, 10);
301 for (i = 0; i < num_xmm_registers; i++)
302 memset (((
char *) &
fp->xmm_space[0]) + i * 16, 0, 16);
305 for (i = 0; i < num_xmm_registers; i++)
306 memset (((
char *) &
fp->ymmh_space[0]) + i * 16, 0, 16);
310 memset (((
char *) &
fp->mpx_bnd_space[0]) + i * 16, 0, 16);
314 memset (((
char *) &
fp->mpx_cfg_space[0]) + i * 8, 0, 8);
318 memset (((
char *) &
fp->k_space[0]) + i * 8, 0, 8);
322 memset (((
char *) &
fp->zmmh_low_space[0]) + i * 32, 0, 32);
327 memset (((
char *) &
fp->zmmh_low_space[0]) + 32 + i * 64, 0, 32);
329 memset (((
char *) &
fp->zmmh_high_space[0]) + i * 64, 0, 16);
331 memset (((
char *) &
fp->zmmh_high_space[0]) + 16 + i * 64, 0, 16);
336 memset (((
char *) &
fp->pkru_space[0]) + i * 4, 0, 4);
344 for (i = 0; i < 8; i++)
347 p = ((
char *) &
fp->st_space[0]) + i * 16;
348 if (memcmp (raw, p, 10))
361 for (i = 0; i < num_xmm_registers; i++)
364 p = ((
char *) &
fp->xmm_space[0]) + i * 16;
365 if (memcmp (raw, p, 16))
378 for (i = 0; i < num_xmm_registers; i++)
381 p = ((
char *) &
fp->ymmh_space[0]) + i * 16;
382 if (memcmp (raw, p, 16))
398 p = ((
char *) &
fp->mpx_bnd_space[0]) + i * 16;
399 if (memcmp (raw, p, 16))
415 p = ((
char *) &
fp->mpx_cfg_space[0]) + i * 8;
416 if (memcmp (raw, p, 8))
432 p = ((
char *) &
fp->k_space[0]) + i * 8;
433 if (memcmp (raw, p, 8) != 0)
449 p = ((
char *) &
fp->zmmh_low_space[0]) + i * 32;
450 if (memcmp (raw, p, 32) != 0)
466 p = ((
char *) &
fp->zmmh_high_space[0]) + 32 + i * 64;
467 if (memcmp (raw, p, 32) != 0)
483 p = ((
char *) &
fp->zmmh_high_space[0]) + i * 64;
484 if (memcmp (raw, p, 16) != 0)
500 p = ((
char *) &
fp->zmmh_high_space[0]) + 16 + i * 64;
501 if (memcmp (raw, p, 16) != 0)
517 p = ((
char *) &
fp->pkru_space[0]) + i * 4;
518 if (memcmp (raw, p, 4) != 0)
536 fp->fop = (val2 & 0x7FF) | (
fp->fop & 0xF800);
549 for (i = 7; i >= 0; i--)
551 int tag = (val >> (i * 2)) & 3;
568 unsigned char *raw = &
fp->st_space[regno * 16];
569 unsigned int exponent;
570 unsigned long fraction[2];
573 integer = raw[7] & 0x80;
574 exponent = (((raw[9] & 0x7f) << 8) | raw[8]);
575 fraction[0] = ((raw[3] << 24) | (raw[2] << 16) | (raw[1] << 8) | raw[0]);
576 fraction[1] = (((raw[7] & 0x7f) << 24) | (raw[6] << 16)
577 | (raw[5] << 8) | raw[4]);
579 if (exponent == 0x7fff)
584 else if (exponent == 0x0000)
586 if (fraction[0] == 0x0000 && fraction[1] == 0x0000 && !integer)
623 for (i = 0; i < 8; i++)
625 ((
char *) &
fp->st_space[0]) + i * 16);
626 for (i = 0; i < num_xmm_registers; i++)
628 ((
char *) &
fp->xmm_space[0]) + i * 16);
635 val =
fp->fctrl & 0xFFFF;
638 val =
fp->fstat & 0xFFFF;
642 top = (
fp->fstat >> 11) & 0x7;
644 for (i = 7; i >= 0; i--)
647 if (
fp->ftag & (1 << i))
651 val |= tag << (2 * i);
655 val =
fp->fiseg & 0xFFFF;
658 val =
fp->foseg & 0xFFFF;
661 val = (
fp->fop) & 0x7FF;
672 unsigned long long clear_bv;
688 for (i = 0; i < 8; i++)
694 for (i = 0; i < 8; i++)
705 for (i = 0; i < num_xmm_registers; i++)
711 for (i = 0; i < num_xmm_registers; i++)
722 for (i = 0; i < num_xmm_registers; i++)
728 for (i = 0; i < num_xmm_registers; i++)
852 val =
fp->fctrl & 0xFFFF;
855 val =
fp->fstat & 0xFFFF;
859 top = (
fp->fstat >> 11) & 0x7;
861 for (i = 7; i >= 0; i--)
864 if (
fp->ftag & (1 << i))
865 tag =
i387_ftag (fxp, (i + 8 - top) % 8);
868 val |= tag << (2 * i);
872 val =
fp->fiseg & 0xFFFF;
875 val =
fp->foseg & 0xFFFF;
878 val = (
fp->fop) & 0x7FF;
const struct target_desc * tdesc
void i387_xsave_to_cache(struct regcache *regcache, const void *buf)
void collect_register(struct regcache *regcache, int n, void *buf)
#define X86_XSTATE_BNDCFG
unsigned char reserved5[48]
#define X86_XSTATE_SSE_MASK
void supply_register_by_name(struct regcache *regcache, const char *name, const void *buf)
unsigned char reserved4[128]
static const struct aarch64_register fp
void i387_fxsave_to_cache(struct regcache *regcache, const void *buf)
void supply_register_zeroed(struct regcache *regcache, int n)
unsigned char st_space[128]
void * memset(T *s, int c, size_t n)=delete
static const int num_avx512_zmmh_high_registers
void i387_fsave_to_cache(struct regcache *regcache, const void *buf)
static int i387_ftag(struct i387_fxsave *fp, int regno)
void collect_register_by_name(struct regcache *regcache, const char *name, void *buf)
static const int num_mpx_bnd_registers
static const int num_pkeys_registers
static const int num_avx512_xmm_registers
unsigned long long xstate_bv
static const int num_avx512_ymmh_registers
unsigned char reserved1[48]
unsigned char reserved2[40]
unsigned char zmmh_high_space[1024]
#define X86_XSTATE_BNDREGS
unsigned char st_space[128]
int register_size(const struct target_desc *tdesc, int n)
unsigned char ymmh_space[256]
static const int num_mpx_cfg_registers
unsigned char zmmh_low_space[512]
unsigned char pkru_space[8]
unsigned long long x86_xcr0
void i387_cache_to_xsave(struct regcache *regcache, void *buf)
void i387_cache_to_fsave(struct regcache *regcache, void *buf)
int find_regno(const struct target_desc *tdesc, const char *name)
void i387_cache_to_fxsave(struct regcache *regcache, void *buf)
unsigned char st_space[80]
unsigned char xmm_space[256]
unsigned char xmm_space[256]
unsigned char mpx_bnd_space[64]
unsigned char reserved3[56]
unsigned char mpx_cfg_space[16]
static const int num_avx512_zmmh_low_registers
void supply_register(struct regcache *regcache, int n, const void *buf)
unsigned char k_space[64]
static const int num_avx512_k_registers