* remove-vx.c (vx_read_register, vx_write_register): collapse

ifdef I80960 else (assumes) m68k into parameterizable macros
	  VX_NUM_REGS and VX_SIZE_FPREGS.
	* config/m68k/tm-vx68.h, config/i960/tm-vx960.h (VX_NUM_REGS,
	  VX_SIZE_FPREGS): new definitions.
This commit is contained in:
K. Richard Pixley 1993-06-08 20:56:23 +00:00
parent 146212247c
commit 357992027a
4 changed files with 37 additions and 65 deletions

View File

@ -1,3 +1,11 @@
Tue Jun 8 13:45:07 1993 K. Richard Pixley (rich@sendai.cygnus.com)
* remove-vx.c (vx_read_register, vx_write_register): collapse
ifdef I80960 else (assumes) m68k into parameterizable macros
VX_NUM_REGS and VX_SIZE_FPREGS.
* config/m68k/tm-vx68.h, config/i960/tm-vx960.h (VX_NUM_REGS,
VX_SIZE_FPREGS): new definitions.
Tue Jun 8 11:08:29 1993 Jim Kingdon (kingdon@cygnus.com)
* symfile.{c,h} (generic_load): New function.

View File

@ -40,3 +40,14 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Breakpoint patching is handled at the target end in VxWorks. */
/* #define BREAKPOINT {0x00, 0x3e, 0x00, 0x66} */
/* Number of registers in a ptrace_getregs call. */
#define VX_NUM_REGS (16 + 16 + 3)
/* Number of registers in a ptrace_getfpregs call. */
/* @@ Can't use this -- the rdb library for the 960 target
doesn't support setting or retrieving FP regs. KR */
/* #define VX_SIZE_FPREGS (REGISTER_RAW_SIZE (FP0_REGNUM) * 4) */

View File

@ -76,3 +76,12 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
This routine returns true on success */
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
/* Number of registers in a ptrace_getregs call. */
#define VX_NUM_REGS (18)
/* Number of registers in a ptrace_getfpregs call. */
#define VX_SIZE_FPREGS (8 * REGISTER_RAW_SIZE (FP0_REGNUM) \
+ (3 * sizeof (REGISTER_TYPE)))

View File

@ -385,11 +385,7 @@ vx_read_register (regno)
ptrace_in.pid = inferior_pid;
ptrace_out.info.more_data = (caddr_t) &out_data;
#ifndef I80960
out_data.len = 18 * REGISTER_RAW_SIZE (0); /* FIXME m68k hack */
#else
out_data.len = (16 + 16 + 3) * REGISTER_RAW_SIZE (0);
#endif
out_data.len = VX_NUM_REGS * REGISTER_RAW_SIZE (0);
out_data.bytes = (caddr_t) registers;
status = net_ptrace_clnt_call (PTRACE_GETREGS, &ptrace_in, &ptrace_out);
@ -401,50 +397,17 @@ vx_read_register (regno)
perror_with_name ("net_ptrace_clnt_call(PTRACE_GETREGS)");
}
#ifdef I80960
{
#ifdef VX_SIZE_FPREGS
/* If the target has floating point registers, fetch them.
Otherwise, zero the floating point register values in
registers[] for good measure, even though we might not
need to. */
/* @@ Can't use this -- the rdb library for the 960 target
doesn't support setting or retrieving FP regs. KR */
#if 0
struct fp_status inferior_fp_registers;
if (target_has_fp)
{
ptrace_in.pid = inferior_pid;
ptrace_out.info.more_data = (caddr_t) &inferior_fp_registers;
status = net_ptrace_clnt_call (PTRACE_GETFPREGS,
&ptrace_in, &ptrace_out);
if (status)
error (rpcerr);
if (ptrace_out.status == -1)
{
errno = ptrace_out.errno;
perror_with_name ("net_ptrace_clnt_call(PTRACE_GETFPREGS)");
}
bcopy (&inferior_fp_registers, &registers[REGISTER_BYTE (FP0_REGNUM)],
REGISTER_RAW_SIZE (FP0_REGNUM) * 4);
}
else
{
bzero ((char *) &registers[REGISTER_BYTE (FP0_REGNUM)],
REGISTER_RAW_SIZE (FP0_REGNUM) * 4);
}
#endif
}
#else /* not 960, thus must be 68000: FIXME! */
if (target_has_fp)
{
ptrace_in.pid = inferior_pid;
ptrace_out.info.more_data = (caddr_t) &out_data;
out_data.len = 8 * REGISTER_RAW_SIZE (FP0_REGNUM) /* FIXME */
+ (3 * sizeof (REGISTER_TYPE));
out_data.len = VX_SIZE_FPREGS;
out_data.bytes = (caddr_t) &registers[REGISTER_BYTE (FP0_REGNUM)];
status = net_ptrace_clnt_call (PTRACE_GETFPREGS, &ptrace_in, &ptrace_out);
@ -458,12 +421,9 @@ vx_read_register (regno)
}
else
{
bzero (&registers[REGISTER_BYTE (FP0_REGNUM)],
8 * REGISTER_RAW_SIZE (FP0_REGNUM));
bzero (&registers[REGISTER_BYTE (FPC_REGNUM)],
3 * sizeof (REGISTER_TYPE));
bzero (&registers[REGISTER_BYTE (FP0_REGNUM)], VX_SIZE_FPREGS);
}
#endif /* various architectures */
#endif /* VX_SIZE_FPREGS */
}
/* Prepare to store registers. Since we will store all of them,
@ -502,15 +462,7 @@ vx_write_register (regno)
in_data.bytes = registers;
#ifdef I80960
in_data.len = (16 + 16 + 3) * sizeof (REGISTER_TYPE);
#else /* not 960 -- assume m68k -- FIXME */
in_data.len = 18 * sizeof (REGISTER_TYPE);
#endif /* Different register sets */
in_data.len = VX_NUM_REGS * sizeof (REGISTER_TYPE);
/* XXX change second param to be a proc number */
status = net_ptrace_clnt_call (PTRACE_SETREGS, &ptrace_in, &ptrace_out);
@ -522,6 +474,7 @@ vx_write_register (regno)
perror_with_name ("net_ptrace_clnt_call(PTRACE_SETREGS)");
}
#ifdef VX_SIZE_FPREGS
/* Store floating point registers if the target has them. */
if (target_has_fp)
@ -531,18 +484,8 @@ vx_write_register (regno)
ptrace_in.info.more_data = (caddr_t) &in_data;
#ifdef I80960
#if 0 /* @@ Not supported by target. */
in_data.bytes = &registers[REGISTER_BYTE (FP0_REGNUM)];
in_data.len = 4 * REGISTER_RAW_SIZE (FP0_REGNUM);
#endif
#else /* not 960 -- assume m68k -- FIXME */
in_data.bytes = &registers[REGISTER_BYTE (FP0_REGNUM)];
in_data.len = (8 * REGISTER_RAW_SIZE (FP0_REGNUM)
+ (3 * sizeof (REGISTER_TYPE)));
#endif /* Different register sets */
in_data.len = VX_SIZE_FPREGS;
status = net_ptrace_clnt_call (PTRACE_SETFPREGS, &ptrace_in, &ptrace_out);
if (status)
@ -553,6 +496,7 @@ vx_write_register (regno)
perror_with_name ("net_ptrace_clnt_call(PTRACE_SETFPREGS)");
}
}
#endif /* VX_SIZE_FPREGS */
}
/* Copy LEN bytes to or from remote inferior's memory starting at MEMADDR