mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 04:00:07 +08:00
* i387-nat.c (i387_fill_fsave): Use regcache_collect.
(i387_fill_fxsave): Likewise.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2002-05-06 Mark Kettenis <kettenis@gnu.org>
|
||||||
|
|
||||||
|
* i387-nat.c (i387_fill_fsave): Use regcache_collect.
|
||||||
|
(i387_fill_fxsave): Likewise.
|
||||||
|
|
||||||
2002-05-05 Alexandre Oliva <aoliva@redhat.com>
|
2002-05-05 Alexandre Oliva <aoliva@redhat.com>
|
||||||
|
|
||||||
* alpha-tdep.c (alpha_extract_return_value): Don't use
|
* alpha-tdep.c (alpha_extract_return_value): Don't use
|
||||||
|
@ -116,23 +116,26 @@ i387_fill_fsave (char *fsave, int regnum)
|
|||||||
if (i >= FPC_REGNUM
|
if (i >= FPC_REGNUM
|
||||||
&& i != FIOFF_REGNUM && i != FOOFF_REGNUM)
|
&& i != FIOFF_REGNUM && i != FOOFF_REGNUM)
|
||||||
{
|
{
|
||||||
|
char buf[4];
|
||||||
|
|
||||||
|
regcache_collect (i, buf);
|
||||||
|
|
||||||
if (i == FOP_REGNUM)
|
if (i == FOP_REGNUM)
|
||||||
{
|
{
|
||||||
unsigned short oldval, newval;
|
unsigned short oldval, newval;
|
||||||
|
|
||||||
/* The opcode occupies only 11 bits. */
|
/* The opcode occupies only 11 bits. */
|
||||||
oldval = (*(unsigned short *) (FSAVE_ADDR (fsave, i)));
|
oldval = (*(unsigned short *) (FSAVE_ADDR (fsave, i)));
|
||||||
newval = *(unsigned short *) ®isters[REGISTER_BYTE (i)];
|
newval = *(unsigned short *) buf;
|
||||||
newval &= ((1 << 11) - 1);
|
newval &= ((1 << 11) - 1);
|
||||||
newval |= oldval & ~((1 << 11) - 1);
|
newval |= oldval & ~((1 << 11) - 1);
|
||||||
memcpy (FSAVE_ADDR (fsave, i), &newval, 2);
|
memcpy (FSAVE_ADDR (fsave, i), &newval, 2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
memcpy (FSAVE_ADDR (fsave, i), ®isters[REGISTER_BYTE (i)], 2);
|
memcpy (FSAVE_ADDR (fsave, i), buf, 2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
memcpy (FSAVE_ADDR (fsave, i), ®isters[REGISTER_BYTE (i)],
|
regcache_collect (i, FSAVE_ADDR (fsave, i));
|
||||||
REGISTER_RAW_SIZE (i));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -255,13 +258,17 @@ i387_fill_fxsave (char *fxsave, int regnum)
|
|||||||
if (i >= FPC_REGNUM && i < XMM0_REGNUM
|
if (i >= FPC_REGNUM && i < XMM0_REGNUM
|
||||||
&& i != FIOFF_REGNUM && i != FDOFF_REGNUM)
|
&& i != FIOFF_REGNUM && i != FDOFF_REGNUM)
|
||||||
{
|
{
|
||||||
|
char buf[4];
|
||||||
|
|
||||||
|
regcache_collect (i, buf);
|
||||||
|
|
||||||
if (i == FOP_REGNUM)
|
if (i == FOP_REGNUM)
|
||||||
{
|
{
|
||||||
unsigned short oldval, newval;
|
unsigned short oldval, newval;
|
||||||
|
|
||||||
/* The opcode occupies only 11 bits. */
|
/* The opcode occupies only 11 bits. */
|
||||||
oldval = (*(unsigned short *) (FXSAVE_ADDR (fxsave, i)));
|
oldval = (*(unsigned short *) (FXSAVE_ADDR (fxsave, i)));
|
||||||
newval = *(unsigned short *) ®isters[REGISTER_BYTE (i)];
|
newval = *(unsigned short *) buf;
|
||||||
newval &= ((1 << 11) - 1);
|
newval &= ((1 << 11) - 1);
|
||||||
newval |= oldval & ~((1 << 11) - 1);
|
newval |= oldval & ~((1 << 11) - 1);
|
||||||
memcpy (FXSAVE_ADDR (fxsave, i), &newval, 2);
|
memcpy (FXSAVE_ADDR (fxsave, i), &newval, 2);
|
||||||
@ -274,7 +281,7 @@ i387_fill_fxsave (char *fxsave, int regnum)
|
|||||||
unsigned short ftag;
|
unsigned short ftag;
|
||||||
int fpreg;
|
int fpreg;
|
||||||
|
|
||||||
ftag = *(unsigned short *) ®isters[REGISTER_BYTE (i)];
|
ftag = *(unsigned short *) buf;
|
||||||
|
|
||||||
for (fpreg = 7; fpreg >= 0; fpreg--)
|
for (fpreg = 7; fpreg >= 0; fpreg--)
|
||||||
{
|
{
|
||||||
@ -287,12 +294,10 @@ i387_fill_fxsave (char *fxsave, int regnum)
|
|||||||
memcpy (FXSAVE_ADDR (fxsave, i), &val, 2);
|
memcpy (FXSAVE_ADDR (fxsave, i), &val, 2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
memcpy (FXSAVE_ADDR (fxsave, i),
|
memcpy (FXSAVE_ADDR (fxsave, i), buf, 2);
|
||||||
®isters[REGISTER_BYTE (i)], 2);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
memcpy (FXSAVE_ADDR (fxsave, i), ®isters[REGISTER_BYTE (i)],
|
regcache_collect (i, FXSAVE_ADDR (fxsave, i));
|
||||||
REGISTER_RAW_SIZE (i));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user