From 357992027a3f9e0562cf2bc79f69fcc180ae35a2 Mon Sep 17 00:00:00 2001 From: "K. Richard Pixley" Date: Tue, 8 Jun 1993 20:56:23 +0000 Subject: [PATCH] * 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. --- gdb/ChangeLog | 8 +++++ gdb/config/i960/tm-vx960.h | 11 ++++++ gdb/config/m68k/tm-vx68.h | 9 +++++ gdb/remote-vx.c | 74 +++++--------------------------------- 4 files changed, 37 insertions(+), 65 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3ca7d03b1d..483b79a256 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -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. diff --git a/gdb/config/i960/tm-vx960.h b/gdb/config/i960/tm-vx960.h index 521f15bc6c..decc9acf71 100644 --- a/gdb/config/i960/tm-vx960.h +++ b/gdb/config/i960/tm-vx960.h @@ -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) */ diff --git a/gdb/config/m68k/tm-vx68.h b/gdb/config/m68k/tm-vx68.h index 07b8027d80..e47accffce 100644 --- a/gdb/config/m68k/tm-vx68.h +++ b/gdb/config/m68k/tm-vx68.h @@ -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))) diff --git a/gdb/remote-vx.c b/gdb/remote-vx.c index 97605a91cc..bb621a546d 100644 --- a/gdb/remote-vx.c +++ b/gdb/remote-vx.c @@ -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, ®isters[REGISTER_BYTE (FP0_REGNUM)], - REGISTER_RAW_SIZE (FP0_REGNUM) * 4); - } - else - { - bzero ((char *) ®isters[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) ®isters[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 (®isters[REGISTER_BYTE (FP0_REGNUM)], - 8 * REGISTER_RAW_SIZE (FP0_REGNUM)); - bzero (®isters[REGISTER_BYTE (FPC_REGNUM)], - 3 * sizeof (REGISTER_TYPE)); + bzero (®isters[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 = ®isters[REGISTER_BYTE (FP0_REGNUM)]; - in_data.len = 4 * REGISTER_RAW_SIZE (FP0_REGNUM); -#endif -#else /* not 960 -- assume m68k -- FIXME */ - - in_data.bytes = ®isters[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