* config/i386/nm-i386v.h: Add protection against
multiple-inclusion. (i386_register_u_addr): Remove prototype. (register_u_addr): New prototype. (REGISTER_U_ADDR): Redefine accordingly. * i386v-nat.c: Improve several comments. (i386_register_u_addr): Change signature and rename to register_u_addr. Use FP_REGNUM_P. Rewrite slightly to get rid of ubase variable.
This commit is contained in:
parent
46cac009b7
commit
d4e0bab44f
@ -1,3 +1,15 @@
|
||||
2002-08-18 Mark Kettenis <kettenis@gnu.org>
|
||||
|
||||
* config/i386/nm-i386v.h: Add protection against
|
||||
multiple-inclusion.
|
||||
(i386_register_u_addr): Remove prototype.
|
||||
(register_u_addr): New prototype.
|
||||
(REGISTER_U_ADDR): Redefine accordingly.
|
||||
* i386v-nat.c: Improve several comments.
|
||||
(i386_register_u_addr): Change signature and rename to
|
||||
register_u_addr. Use FP_REGNUM_P. Rewrite slightly to get rid of
|
||||
ubase variable.
|
||||
|
||||
2002-08-18 Andrew Cagney <ac131313@redhat.com>
|
||||
|
||||
* config/mips/tm-mips.h (STORE_RETURN_VALUE): Delete macro.
|
||||
|
@ -1,5 +1,6 @@
|
||||
/* Native support for i386.
|
||||
Copyright 1986, 1987, 1989, 1992, 1993, 1998, 2000
|
||||
/* Native support for i386 running System V (pre-SVR4).
|
||||
|
||||
Copyright 1986, 1987, 1989, 1992, 1993, 1998, 2000, 2002
|
||||
Free Software Foundation, Inc.
|
||||
Changes for 80386 by Pace Willisson (pace@prep.ai.mit.edu), July 1988.
|
||||
|
||||
@ -20,7 +21,16 @@
|
||||
Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#define REGISTER_U_ADDR(addr, blockend, regno) \
|
||||
(addr) = i386_register_u_addr ((blockend),(regno));
|
||||
#ifndef NM_I386V_H
|
||||
#define NM_I386V_H
|
||||
|
||||
extern int i386_register_u_addr (int, int);
|
||||
/* Support for the user struct. */
|
||||
|
||||
/* This is the amount to subtract from u.u_ar0
|
||||
to get the offset in the core file of the register values. */
|
||||
|
||||
#define REGISTER_U_ADDR(addr, blockend, regnum) \
|
||||
(addr) = register_u_addr ((blockend), (regnum))
|
||||
extern CORE_ADDR register_u_addr (CORE_ADDR blockend, int regnum);
|
||||
|
||||
#endif /* nm-i386v.h */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Intel 386 native support for SYSV systems (pre-SVR4).
|
||||
/* Intel 386 native support for System V systems (pre-SVR4).
|
||||
|
||||
Copyright 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
|
||||
1999, 2000, 2002 Free Software Foundation, Inc.
|
||||
@ -62,8 +62,8 @@
|
||||
#include "target.h"
|
||||
|
||||
|
||||
/* this table must line up with REGISTER_NAMES in tm-i386v.h */
|
||||
/* symbols like 'EAX' come from <sys/reg.h> */
|
||||
/* Mapping between the general-purpose registers in `struct user'
|
||||
format and GDB's register array layout. */
|
||||
static int regmap[] =
|
||||
{
|
||||
EAX, ECX, EDX, EBX,
|
||||
@ -72,37 +72,34 @@ static int regmap[] =
|
||||
DS, ES, FS, GS,
|
||||
};
|
||||
|
||||
/* blockend is the value of u.u_ar0, and points to the
|
||||
* place where GS is stored
|
||||
*/
|
||||
/* Support for the user struct. */
|
||||
|
||||
int
|
||||
i386_register_u_addr (int blockend, int regnum)
|
||||
/* Return the address of register REGNUM. BLOCKEND is the value of
|
||||
u.u_ar0, and points to the place where GS is stored. */
|
||||
|
||||
CORE_ADDR
|
||||
register_u_addr (CORE_ADDR blockend, int regnum)
|
||||
{
|
||||
struct user u;
|
||||
int fpstate;
|
||||
int ubase;
|
||||
CORE_ADDR fpstate;
|
||||
|
||||
ubase = blockend;
|
||||
/* FIXME: Should have better way to test floating point range */
|
||||
if (regnum >= FP0_REGNUM && regnum <= (FP0_REGNUM + 7))
|
||||
if (FP_REGNUM_P (regnum))
|
||||
{
|
||||
#ifdef KSTKSZ /* SCO, and others? */
|
||||
ubase += 4 * (SS + 1) - KSTKSZ;
|
||||
fpstate = ubase + ((char *) &u.u_fps.u_fpstate - (char *) &u);
|
||||
#ifdef KSTKSZ /* SCO, and others? */
|
||||
blockend += 4 * (SS + 1) - KSTKSZ;
|
||||
fpstate = blockend + ((char *) &u.u_fps.u_fpstate - (char *) &u);
|
||||
return (fpstate + 0x1c + 10 * (regnum - FP0_REGNUM));
|
||||
#else
|
||||
fpstate = ubase + ((char *) &u.i387.st_space - (char *) &u);
|
||||
fpstate = blockend + ((char *) &u.i387.st_space - (char *) &u);
|
||||
return (fpstate + 10 * (regnum - FP0_REGNUM));
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
return (ubase + 4 * regmap[regnum]);
|
||||
}
|
||||
|
||||
return (blockend + 4 * regmap[regnum]);
|
||||
}
|
||||
|
||||
|
||||
/* Return the size of the user struct. */
|
||||
|
||||
int
|
||||
kernel_u_size (void)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user