diff options
author | Andreas Schwab <schwab@linux-m68k.org> | 2002-01-30 13:57:33 +0000 |
---|---|---|
committer | Andreas Schwab <schwab@linux-m68k.org> | 2002-01-30 13:57:33 +0000 |
commit | 9852326a86f6b225e7f844ce303e51e2948d67cd (patch) | |
tree | 7ed6fcc939f9c9bec34f1f52f1d41d429d561672 /gdb | |
parent | 05f64ac6287d96a8a15737210c4c44ce51cd6180 (diff) | |
download | gdb-9852326a86f6b225e7f844ce303e51e2948d67cd.zip gdb-9852326a86f6b225e7f844ce303e51e2948d67cd.tar.gz gdb-9852326a86f6b225e7f844ce303e51e2948d67cd.tar.bz2 |
* m68klinux-nat.c: Fix last change to use regcache_collect
instead of referencing registers[] directly.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/m68klinux-nat.c | 15 |
2 files changed, 14 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 8870296..83b3900 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2002-01-30 Andreas Schwab <schwab@suse.de> + + * m68klinux-nat.c: Fix last change to use regcache_collect + instead of referencing registers[] directly. + 2002-01-29 Andrew Cagney <ac131313@redhat.com> * parse.c (target_map_name_to_register): Delete code wrapped in diff --git a/gdb/m68klinux-nat.c b/gdb/m68klinux-nat.c index 7562757..75427e3 100644 --- a/gdb/m68klinux-nat.c +++ b/gdb/m68klinux-nat.c @@ -195,6 +195,7 @@ store_register (int regno) register int i; unsigned int offset; /* Offset of registers within the u area. */ int tid; + char *buf = alloca (MAX_REGISTER_RAW_SIZE); if (CANNOT_STORE_REGISTER (regno)) { @@ -208,11 +209,16 @@ store_register (int regno) offset = U_REGS_OFFSET; regaddr = register_addr (regno, offset); + + /* Put the contents of regno into a local buffer */ + regcache_collect (regno, buf); + + /* Store the local buffer into the inferior a chunk at the time. */ for (i = 0; i < REGISTER_RAW_SIZE (regno); i += sizeof (PTRACE_XFER_TYPE)) { errno = 0; ptrace (PT_WRITE_U, tid, (PTRACE_ARG3_TYPE) regaddr, - *(PTRACE_XFER_TYPE *) & registers[REGISTER_BYTE (regno) + i]); + *(PTRACE_XFER_TYPE *) (buf + i)); regaddr += sizeof (PTRACE_XFER_TYPE); if (errno != 0) { @@ -370,15 +376,12 @@ fill_fpregset (elf_fpregset_t *fpregsetp, int regno) /* Fill in the floating-point registers. */ for (i = FP0_REGNUM; i < FP0_REGNUM + 8; i++) if (regno == -1 || regno == i) - memcpy (FPREG_ADDR (fpregsetp, regno - FP0_REGNUM), - ®isters[REGISTER_BYTE (regno)], - REGISTER_RAW_SIZE(regno)); + regcache_collect (regno, FPREG_ADDR (fpregsetp, regno - FP0_REGNUM)); /* Fill in the floating-point control registers. */ for (i = FPC_REGNUM; i <= FPI_REGNUM; i++) if (regno == -1 || regno == i) - fpregsetp->fpcntl[regno - FPC_REGNUM] - = *(int *) ®isters[REGISTER_BYTE (regno)]; + regcache_collect (regno, fpregsetp->fpcntl[regno - FPC_REGNUM]); } #ifdef HAVE_PTRACE_GETREGS |