binutils-gdb/gdb/mips-linux-nat.c

1185 lines
31 KiB
C
Raw Normal View History

/* Native-dependent code for GNU/Linux on MIPS processors.
Copyright (C) 2001-2012 Free Software Foundation, Inc.
2001-07-10 22:41:54 +02:00
This file is part of GDB.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
2001-07-10 22:41:54 +02:00
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
2001-07-10 22:41:54 +02:00
#include "defs.h"
#include "command.h"
#include "gdbcmd.h"
#include "gdb_assert.h"
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
#include "inferior.h"
#include "mips-tdep.h"
* Makefile.in (ALLDEPFILES): Update. (alpha-linux-nat.o, sparc-linux-nat.o): New rules. (amd64-linux-nat.o, arm-linux-nat.o, hppa-linux-nat.o) (i386-linux-nat.o, ia64-linux-nat.o, linux-nat.o, m32r-linux-nat.o) (m68klinux-nat.o, mips-linux-nat.o, ppc-linux-nat.o, s390-nat.o) (sparc64-linux-nat.o): Update dependencies. * alpha-linux-nat.c, sparc-linux-nat.c: New files. * amd64-linux-nat.c (amd64_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (amd64_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (amd64_linux_child_post_start_inferior): Renamed from child_post_startup_inferior and made static. Call super_post_startup_inferior. (super_post_startup_inferior): New. (_initialize_amd64_linux_nat): Set it. Call linux_target and add_target. * arm-linux-nat.c (arm_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (arm_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_arm_linux_nat): Add a prototype. Use linux_target and add_target. * hppa-linux-nat.c (hppa_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (hppa_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_hppa_linux_nat): New function. * i386-linux-nat.c (i386_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (i386_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (i386_linux_resume): Renamed from child_resume and made static. (i386_linux_child_post_start_inferior): Renamed from child_post_startup_inferior and made static. Call super_post_startup_inferior. (super_post_startup_inferior): New. (_initialize_i386_linux_nat): New function. * i386-nat.c: Remove LINUX_CHILD_POST_STARTUP_INFERIOR #ifndef. * ia64-linux-nat.c (ia64_linux_xfer_unwind_table): Remove. (super_xfer_partial): New. (ia64_linux_xfer_partial): New function. Use it. (_initialize_ia64_linux_nat): New function. * ia64-tdep.c (getunwind_table): Revert 2005-06-08 change; use target_read_partial and document the problem. * inf-ptrace.c (inf_ptrace_fetch_register): Use CANNOT_FETCH_REGISTER. Fix some comments. (inf_ptrace_store_register): Use CANNOT_STORE_REGISTER. Fix some comments. * linux-nat.c: Include "inf-ptrace.h" and "auxv.h". (linux_ops, super_xfer_partial): New variables. (linux_child_post_startup_inferior): Make static. (child_post_startup_inferior): Delete. (linux_nat_attach, linux_nat_detach, resume_callback) (linux_nat_resume, linux_nat_wait, linux_nat_create_inferior) (linux_nat_mourn_inferior): Use linux_ops instead of deprecated_child_ops. (child_wait): Do not depend on CHILD_WAIT. (linux_nat_xfer_memory): Remove, replace by ... (linux_nat_xfer_partial): ... this. Use linux_ops->to_xfer_partial instead of linux_proc_xfer_memory and child_xfer_memory. (linux_nat_fetch_registers, linux_nat_store_registers) (linux_nat_child_post_startup_inferior): New functions. (init_linux_nat_ops): Use the new functions. (linux_proc_xfer_memory): Remove, replace by ... (linux_proc_xfer_partial): ... this. Make static. (linux_xfer_partial, linux_register_u_offset, linux_target): New functions. (_initialize_linux_nat): Do not modify deprecated_child_ops. * linux-nat.h (linux_proc_xfer_memory): Remove prototype. (struct mem_attrib, struct target_ops): Remove forward declarations. (linux_child_post_startup_inferior): Remove prototype. (linux_target): Add prototype. * linux-thread-db.c (thread_db_xfer_memory): Remove, replace by ... (thread_db_xfer_partial): ... this. (init_thread_db_ops): Set to_xfer_partial instead of deprecated_xfer_memory. * m32r-linux-nat.c (m32r_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (m32r_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_m32r_linux_nat): New function. * m68klinux-nat.c (m68k_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (m68k_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (old_fetch_inferior_registers, old_store_inferior_registers): Made static. (_initialize_m68k_linux_nat): Use linux_target and add_target. * mips-linux-nat.c (_initialize_mips_linux_nat): New function. * ppc-linux-nat.c (ppc_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (ppc_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_ppc_linux_nat): New function. * s390-nat.c (s390_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (s390_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_s390_nat): New function. * sparc64-linux-nat.c (_initialize_sparc64_linux_nat): Use linux_target and add_target. * config/nm-linux.h: Don't include "auxv.h". (struct target_waitstatus, child_wait, CHILD_WAIT) (CHILD_PID_TO_EXEC_FILE, CHILD_INSERT_FORK_CATCHPOINT) (CHILD_INSERT_VFORK_CATCHPOINT, CHILD_INSERT_EXEC_CATCHPOINT) (CHILD_POST_STARTUP_INFERIOR, CHILD_POST_ATTACH, CHILD_FOLLOW_FORK) (DEPRECATED_KILL_INFERIOR, NATIVE_XFER_AUXV): Delete. * config/alpha/alpha-linux.mh (NATDEPFILES): Replace infptrace.o and inftarg.o with inf-ptrace.o and alpha-linux-nat.o. * config/sparc/linux.mh (NATDEPFILES): Replace infptrace.o and inftarg.o with sparc-linux-nat.o. * config/sparc/linux64.mh (NATDEPFILES): Remove infptrace.o and inftarg.o. * config/arm/linux.mh (NATDEPFILES): Replace infptrace.o and inftarg.o with inf-ptrace.o. * config/i386/linux.mh (NATDEPFILES): Likewise. * config/i386/linux64.mh (NATDEPFILES): Likewise. * config/ia64/linux.mh (NATDEPFILES): Likewise. * config/m32r/linux.mh (NATDEPFILES): Likewise. * config/m68k/linux.mh (NATDEPFILES): Likewise. * config/mips/linux.mh (NATDEPFILES): Likewise. * config/pa/linux.mh (NATDEPFILES): Likewise. * config/powerpc/linux.mh (NATDEPFILES): Likewise. * config/powerpc/ppc64-linux.mh (NATDEPFILES): Likewise. * config/s390/s390.mh (NATDEPFILES): Likewise. * config/i386/nm-linux.h (DEPRECATED_CHILD_RESUME): Don't define. (LINUX_CHILD_POST_STARTUP_INFERIOR): Don't define. * config/i386/nm-linux64.h (LINUX_CHILD_POST_STARTUP_INFERIOR): Don't define. * config/ia64/nm-linux.h: Don't include "target.h". (NATIVE_XFER_UNWIND_TABLE, ia64_linux_xfer_unwind_table): Remove. * config/djgpp/fnchange.lst: Add alpha-linux-tdep.c, alpha-linux-nat.c, sparc-linux-tdep.c, and sparc-linux-nat.c.
2005-09-10 20:11:14 +02:00
#include "target.h"
* mips-linux-tdep.c (supply_32bit_reg): Add REGCACHE parameter. Use it instead of current_regcache. (mips_supply_gregset): Likewise. Pass REGCACHE to supply_32bit_reg. Make GREGSETP const, remove superfluous casts. (mips_fill_gregset): Add REGCACHE parameter; replace current_regcache. (mips_supply_fpregset): Likewise. Make FPREGSETP const, remove superfluous casts. (mips_fill_fpregset): Add REGCACHE parameter; replace current_regcache. (supply_64bit_reg): Likewise (mips64_supply_gregset): Likewise. Pass REGCACHE to supply_64bit_reg. Make GREGSETP const, adapt casts accordingly. (mips64_fill_gregset): Add REGCACHE parameter; replace current_regcache. (mips64_supply_fpregset): Likewise. Make FPREGSET const, adapt casts accordingly. (mips64_fill_fpregset): Add REGCACHE parameter; replace current_regcache. (fetch_core_registers): Pass current_regcache to mips{64}_(supply|fill)_ helper routines. * mips-linux-tdep.h (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset, mips_fill_fpregset, mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset, mips64_fill_fpregset): Adapt prototypes. * mips-linux-nat.c: Include "regcache.h". (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset): Pass current_regcache to mips{64}_(supply|fill)_ helper routines. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_supply_fpreg): Add REGCACHE argument; replace current_regcache. Make REGS const. (mipsnbds_fill_reg, mipsnbsd_fill_fpreg): Add REGCACHE argument; replace current_regcache. * mipsnbsd-tdep.h (ipsnbsd_supply_reg, mipsnbsd_supply_fpreg, mipsnbds_fill_reg, mipsnbsd_fill_fpreg): Adapt prototypes. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers, mipsnbsd_store_inferior_registers): Pass current_regcache to mipsnbsd_(supply|fill)_... helper routines. * Makefile.in (mips-linux-nat.o): Update dependencies.
2007-05-06 16:29:15 +02:00
#include "regcache.h"
* Makefile.in (ALLDEPFILES): Update. (alpha-linux-nat.o, sparc-linux-nat.o): New rules. (amd64-linux-nat.o, arm-linux-nat.o, hppa-linux-nat.o) (i386-linux-nat.o, ia64-linux-nat.o, linux-nat.o, m32r-linux-nat.o) (m68klinux-nat.o, mips-linux-nat.o, ppc-linux-nat.o, s390-nat.o) (sparc64-linux-nat.o): Update dependencies. * alpha-linux-nat.c, sparc-linux-nat.c: New files. * amd64-linux-nat.c (amd64_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (amd64_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (amd64_linux_child_post_start_inferior): Renamed from child_post_startup_inferior and made static. Call super_post_startup_inferior. (super_post_startup_inferior): New. (_initialize_amd64_linux_nat): Set it. Call linux_target and add_target. * arm-linux-nat.c (arm_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (arm_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_arm_linux_nat): Add a prototype. Use linux_target and add_target. * hppa-linux-nat.c (hppa_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (hppa_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_hppa_linux_nat): New function. * i386-linux-nat.c (i386_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (i386_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (i386_linux_resume): Renamed from child_resume and made static. (i386_linux_child_post_start_inferior): Renamed from child_post_startup_inferior and made static. Call super_post_startup_inferior. (super_post_startup_inferior): New. (_initialize_i386_linux_nat): New function. * i386-nat.c: Remove LINUX_CHILD_POST_STARTUP_INFERIOR #ifndef. * ia64-linux-nat.c (ia64_linux_xfer_unwind_table): Remove. (super_xfer_partial): New. (ia64_linux_xfer_partial): New function. Use it. (_initialize_ia64_linux_nat): New function. * ia64-tdep.c (getunwind_table): Revert 2005-06-08 change; use target_read_partial and document the problem. * inf-ptrace.c (inf_ptrace_fetch_register): Use CANNOT_FETCH_REGISTER. Fix some comments. (inf_ptrace_store_register): Use CANNOT_STORE_REGISTER. Fix some comments. * linux-nat.c: Include "inf-ptrace.h" and "auxv.h". (linux_ops, super_xfer_partial): New variables. (linux_child_post_startup_inferior): Make static. (child_post_startup_inferior): Delete. (linux_nat_attach, linux_nat_detach, resume_callback) (linux_nat_resume, linux_nat_wait, linux_nat_create_inferior) (linux_nat_mourn_inferior): Use linux_ops instead of deprecated_child_ops. (child_wait): Do not depend on CHILD_WAIT. (linux_nat_xfer_memory): Remove, replace by ... (linux_nat_xfer_partial): ... this. Use linux_ops->to_xfer_partial instead of linux_proc_xfer_memory and child_xfer_memory. (linux_nat_fetch_registers, linux_nat_store_registers) (linux_nat_child_post_startup_inferior): New functions. (init_linux_nat_ops): Use the new functions. (linux_proc_xfer_memory): Remove, replace by ... (linux_proc_xfer_partial): ... this. Make static. (linux_xfer_partial, linux_register_u_offset, linux_target): New functions. (_initialize_linux_nat): Do not modify deprecated_child_ops. * linux-nat.h (linux_proc_xfer_memory): Remove prototype. (struct mem_attrib, struct target_ops): Remove forward declarations. (linux_child_post_startup_inferior): Remove prototype. (linux_target): Add prototype. * linux-thread-db.c (thread_db_xfer_memory): Remove, replace by ... (thread_db_xfer_partial): ... this. (init_thread_db_ops): Set to_xfer_partial instead of deprecated_xfer_memory. * m32r-linux-nat.c (m32r_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (m32r_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_m32r_linux_nat): New function. * m68klinux-nat.c (m68k_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (m68k_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (old_fetch_inferior_registers, old_store_inferior_registers): Made static. (_initialize_m68k_linux_nat): Use linux_target and add_target. * mips-linux-nat.c (_initialize_mips_linux_nat): New function. * ppc-linux-nat.c (ppc_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (ppc_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_ppc_linux_nat): New function. * s390-nat.c (s390_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (s390_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_s390_nat): New function. * sparc64-linux-nat.c (_initialize_sparc64_linux_nat): Use linux_target and add_target. * config/nm-linux.h: Don't include "auxv.h". (struct target_waitstatus, child_wait, CHILD_WAIT) (CHILD_PID_TO_EXEC_FILE, CHILD_INSERT_FORK_CATCHPOINT) (CHILD_INSERT_VFORK_CATCHPOINT, CHILD_INSERT_EXEC_CATCHPOINT) (CHILD_POST_STARTUP_INFERIOR, CHILD_POST_ATTACH, CHILD_FOLLOW_FORK) (DEPRECATED_KILL_INFERIOR, NATIVE_XFER_AUXV): Delete. * config/alpha/alpha-linux.mh (NATDEPFILES): Replace infptrace.o and inftarg.o with inf-ptrace.o and alpha-linux-nat.o. * config/sparc/linux.mh (NATDEPFILES): Replace infptrace.o and inftarg.o with sparc-linux-nat.o. * config/sparc/linux64.mh (NATDEPFILES): Remove infptrace.o and inftarg.o. * config/arm/linux.mh (NATDEPFILES): Replace infptrace.o and inftarg.o with inf-ptrace.o. * config/i386/linux.mh (NATDEPFILES): Likewise. * config/i386/linux64.mh (NATDEPFILES): Likewise. * config/ia64/linux.mh (NATDEPFILES): Likewise. * config/m32r/linux.mh (NATDEPFILES): Likewise. * config/m68k/linux.mh (NATDEPFILES): Likewise. * config/mips/linux.mh (NATDEPFILES): Likewise. * config/pa/linux.mh (NATDEPFILES): Likewise. * config/powerpc/linux.mh (NATDEPFILES): Likewise. * config/powerpc/ppc64-linux.mh (NATDEPFILES): Likewise. * config/s390/s390.mh (NATDEPFILES): Likewise. * config/i386/nm-linux.h (DEPRECATED_CHILD_RESUME): Don't define. (LINUX_CHILD_POST_STARTUP_INFERIOR): Don't define. * config/i386/nm-linux64.h (LINUX_CHILD_POST_STARTUP_INFERIOR): Don't define. * config/ia64/nm-linux.h: Don't include "target.h". (NATIVE_XFER_UNWIND_TABLE, ia64_linux_xfer_unwind_table): Remove. * config/djgpp/fnchange.lst: Add alpha-linux-tdep.c, alpha-linux-nat.c, sparc-linux-tdep.c, and sparc-linux-nat.c.
2005-09-10 20:11:14 +02:00
#include "linux-nat.h"
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
#include "mips-linux-tdep.h"
#include "target-descriptions.h"
2001-07-10 22:41:54 +02:00
#include "gdb_proc_service.h"
#include "gregset.h"
#include <sgidefs.h>
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
#include <sys/ptrace.h>
#include "features/mips-linux.c"
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
#include "features/mips-dsp-linux.c"
#include "features/mips64-linux.c"
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
#include "features/mips64-dsp-linux.c"
#ifndef PTRACE_GET_THREAD_AREA
#define PTRACE_GET_THREAD_AREA 25
#endif
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
/* Assume that we have PTRACE_GETREGS et al. support. If we do not,
we'll clear this and use PTRACE_PEEKUSER instead. */
static int have_ptrace_regsets = 1;
/* Whether or not to print the mirrored debug registers. */
static int maint_show_dr;
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
/* Saved function pointers to fetch and store a single register using
PTRACE_PEEKUSER and PTRACE_POKEUSER. */
static void (*super_fetch_registers) (struct target_ops *,
struct regcache *, int);
static void (*super_store_registers) (struct target_ops *,
struct regcache *, int);
static void (*super_close) (int);
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
/* Map gdb internal register number to ptrace ``address''.
These ``addresses'' are normally defined in <asm/ptrace.h>.
ptrace does not provide a way to read (or set) MIPS_PS_REGNUM,
and there's no point in reading or setting MIPS_ZERO_REGNUM.
We also can not set BADVADDR, CAUSE, or FCRIR via ptrace(). */
static CORE_ADDR
mips_linux_register_addr (struct gdbarch *gdbarch, int regno, int store)
{
CORE_ADDR regaddr;
2007-10-10 Markus Deuling <deuling@de.ibm.com> * remote-mips.c (mips_wait, mips_fetch_registers) (mips_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_fill_reg) (mipsnbsd_supply_fpreg, mipsnbsd_fill_fpreg): Use get_regcache_arch to get at the current architecture by regcache. (mipsnbsd_sigtramp_offset): Use get_frame_arch to get at the current architecture by frame_info. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers) (mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-tdep.c (mips_linux_get_longjmp_target) (mips64_linux_get_longjmp_target, mips_linux_o32_sigframe_init) (mips_linux_n32n64_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info. (supply_32bit_reg, mips_supply_gregset, mips_fill_gregset) (mips_supply_fpregset, mips_fill_fpregset, supply_64bit_reg) (mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset) (mips64_fill_fpregset, mips_linux_write_pc): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-nat.c (mips_linux_register_addr) (mips64_linux_register_addr): Replace current_gdbarch by gdbarch. (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips64obsd-tdep.c (mips64obsd_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info.
2007-10-10 19:04:38 +02:00
if (regno < 0 || regno >= gdbarch_num_regs (gdbarch))
error (_("Bogon register number %d."), regno);
if (regno > MIPS_ZERO_REGNUM && regno < MIPS_ZERO_REGNUM + 32)
regaddr = regno;
else if ((regno >= mips_regnum (gdbarch)->fp0)
&& (regno < mips_regnum (gdbarch)->fp0 + 32))
regaddr = FPR_BASE + (regno - mips_regnum (gdbarch)->fp0);
else if (regno == mips_regnum (gdbarch)->pc)
regaddr = PC;
else if (regno == mips_regnum (gdbarch)->cause)
regaddr = store? (CORE_ADDR) -1 : CAUSE;
else if (regno == mips_regnum (gdbarch)->badvaddr)
regaddr = store? (CORE_ADDR) -1 : BADVADDR;
else if (regno == mips_regnum (gdbarch)->lo)
regaddr = MMLO;
else if (regno == mips_regnum (gdbarch)->hi)
regaddr = MMHI;
else if (regno == mips_regnum (gdbarch)->fp_control_status)
regaddr = FPC_CSR;
else if (regno == mips_regnum (gdbarch)->fp_implementation_revision)
regaddr = store? (CORE_ADDR) -1 : FPC_EIR;
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
else if (mips_regnum (gdbarch)->dspacc != -1
&& regno >= mips_regnum (gdbarch)->dspacc
&& regno < mips_regnum (gdbarch)->dspacc + 6)
regaddr = DSP_BASE + (regno - mips_regnum (gdbarch)->dspacc);
else if (regno == mips_regnum (gdbarch)->dspctl)
regaddr = DSP_CONTROL;
else if (mips_linux_restart_reg_p (gdbarch) && regno == MIPS_RESTART_REGNUM)
regaddr = 0;
else
regaddr = (CORE_ADDR) -1;
return regaddr;
}
static CORE_ADDR
mips64_linux_register_addr (struct gdbarch *gdbarch, int regno, int store)
{
CORE_ADDR regaddr;
2007-10-10 Markus Deuling <deuling@de.ibm.com> * remote-mips.c (mips_wait, mips_fetch_registers) (mips_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_fill_reg) (mipsnbsd_supply_fpreg, mipsnbsd_fill_fpreg): Use get_regcache_arch to get at the current architecture by regcache. (mipsnbsd_sigtramp_offset): Use get_frame_arch to get at the current architecture by frame_info. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers) (mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-tdep.c (mips_linux_get_longjmp_target) (mips64_linux_get_longjmp_target, mips_linux_o32_sigframe_init) (mips_linux_n32n64_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info. (supply_32bit_reg, mips_supply_gregset, mips_fill_gregset) (mips_supply_fpregset, mips_fill_fpregset, supply_64bit_reg) (mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset) (mips64_fill_fpregset, mips_linux_write_pc): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-nat.c (mips_linux_register_addr) (mips64_linux_register_addr): Replace current_gdbarch by gdbarch. (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips64obsd-tdep.c (mips64obsd_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info.
2007-10-10 19:04:38 +02:00
if (regno < 0 || regno >= gdbarch_num_regs (gdbarch))
error (_("Bogon register number %d."), regno);
if (regno > MIPS_ZERO_REGNUM && regno < MIPS_ZERO_REGNUM + 32)
regaddr = regno;
else if ((regno >= mips_regnum (gdbarch)->fp0)
&& (regno < mips_regnum (gdbarch)->fp0 + 32))
2007-10-10 Markus Deuling <deuling@de.ibm.com> * remote-mips.c (mips_wait, mips_fetch_registers) (mips_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_fill_reg) (mipsnbsd_supply_fpreg, mipsnbsd_fill_fpreg): Use get_regcache_arch to get at the current architecture by regcache. (mipsnbsd_sigtramp_offset): Use get_frame_arch to get at the current architecture by frame_info. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers) (mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-tdep.c (mips_linux_get_longjmp_target) (mips64_linux_get_longjmp_target, mips_linux_o32_sigframe_init) (mips_linux_n32n64_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info. (supply_32bit_reg, mips_supply_gregset, mips_fill_gregset) (mips_supply_fpregset, mips_fill_fpregset, supply_64bit_reg) (mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset) (mips64_fill_fpregset, mips_linux_write_pc): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-nat.c (mips_linux_register_addr) (mips64_linux_register_addr): Replace current_gdbarch by gdbarch. (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips64obsd-tdep.c (mips64obsd_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info.
2007-10-10 19:04:38 +02:00
regaddr = MIPS64_FPR_BASE + (regno - gdbarch_fp0_regnum (gdbarch));
else if (regno == mips_regnum (gdbarch)->pc)
regaddr = MIPS64_PC;
else if (regno == mips_regnum (gdbarch)->cause)
regaddr = store? (CORE_ADDR) -1 : MIPS64_CAUSE;
else if (regno == mips_regnum (gdbarch)->badvaddr)
regaddr = store? (CORE_ADDR) -1 : MIPS64_BADVADDR;
else if (regno == mips_regnum (gdbarch)->lo)
regaddr = MIPS64_MMLO;
else if (regno == mips_regnum (gdbarch)->hi)
regaddr = MIPS64_MMHI;
else if (regno == mips_regnum (gdbarch)->fp_control_status)
regaddr = MIPS64_FPC_CSR;
else if (regno == mips_regnum (gdbarch)->fp_implementation_revision)
regaddr = store? (CORE_ADDR) -1 : MIPS64_FPC_EIR;
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
else if (mips_regnum (gdbarch)->dspacc != -1
&& regno >= mips_regnum (gdbarch)->dspacc
&& regno < mips_regnum (gdbarch)->dspacc + 6)
regaddr = DSP_BASE + (regno - mips_regnum (gdbarch)->dspacc);
else if (regno == mips_regnum (gdbarch)->dspctl)
regaddr = DSP_CONTROL;
else if (mips_linux_restart_reg_p (gdbarch) && regno == MIPS_RESTART_REGNUM)
regaddr = 0;
else
regaddr = (CORE_ADDR) -1;
return regaddr;
}
/* Fetch the thread-local storage pointer for libthread_db. */
ps_err_e
ps_get_thread_area (const struct ps_prochandle *ph,
lwpid_t lwpid, int idx, void **base)
{
if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0)
return PS_ERR;
/* IDX is the bias from the thread pointer to the beginning of the
thread descriptor. It has to be subtracted due to implementation
quirks in libthread_db. */
*base = (void *) ((char *)*base - idx);
return PS_OK;
}
/* Wrapper functions. These are only used by libthread_db. */
void
* gregset.h (struct regcache): Add forward declaration. (supply_gregset): Add REGCACHE parameter, make GREGS const. (supply_fpregset): Add REGCACHE parameter, make FPREGS const. (supply_fpxregset): Add REGCACHE parameter, make FPXREGS const. (fill_gregset): Add REGCACHE parameter. (fill_fpregset): Likewise. (fill_fpxregset): Likewise. Update all definitions accordingly: * alphabsd-nat.c, alpha-linux-nat.c, alpha-nat.c, amd64-linux-nat.c, arm-linux-nat.c, hppa-linux-nat.c, i386gnu-nat.c, i386-linux-nat.c, i386-sol2-nat.c, i386v4-nat.c, ia64-linux-nat.c, irix5-nat.c, m32r-linux-nat.c, m68klinux-nat.c, mips-linux-nat.c, ppc-linux-nat.c, s390-nat.c, sparc64-linux-nat.c, sparc-linux-nat.c, sparc-sol2-nat.c (supply_gregset): Add REGCACHE parameter, use it instead of current_regcache. Make GREGSETP parameter const, adapt casts. (supply_fpregset): Add REGCACHE parameter, use it instead of current_regcache. Make FPREGSETP parameter const, adapt casts. (fill_gregset): Add REGCACHE parameter, use it instead of current_regcache. (fill_fpregset): Likewise. Update all callers to pass in current_regcache as the new argument: * core-regset.c: Include "regcache.h". (fetch_core_registers): Update supply_gregset,and supply_fpregset calls. * procfs.c: Include "regcache.h". (procfs_fetch_registers): Update supply_gregset, supply_fpregset calls. (procfs_store_registers): Update fill_gregset, fill_fpregset calls. (procfs_do_thread_registers): Likewise. (procfs_make_note_section): Likewise. * proc-service.c: Include "regcache.h". (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * sol-thread.c (sol_thread_fetch_registers): Update supply_gregset, supply_fpregset calls. (sol_thread_store_registers): Update fill_gregset, fill_fpregset calls. (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * linux-nat.c (linux_nat_do_thread_registers): Update fill_gregset, fill_fpregset, and fill_fpxregset calls. * i386-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_fpxregs): Update supply_fpxregset call. (store_fpxregs): Update fill_fpxregset call. * m32r-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. * m68klinux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_core_registers): Update supply_gregset, supply_fpregset calls. * s390-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. * Makefile.in (core-regset.o, procfs.o, proc-service.o): Update dependencies.
2007-05-06 16:32:31 +02:00
supply_gregset (struct regcache *regcache, const gdb_gregset_t *gregsetp)
{
2007-10-10 Markus Deuling <deuling@de.ibm.com> * remote-mips.c (mips_wait, mips_fetch_registers) (mips_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_fill_reg) (mipsnbsd_supply_fpreg, mipsnbsd_fill_fpreg): Use get_regcache_arch to get at the current architecture by regcache. (mipsnbsd_sigtramp_offset): Use get_frame_arch to get at the current architecture by frame_info. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers) (mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-tdep.c (mips_linux_get_longjmp_target) (mips64_linux_get_longjmp_target, mips_linux_o32_sigframe_init) (mips_linux_n32n64_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info. (supply_32bit_reg, mips_supply_gregset, mips_fill_gregset) (mips_supply_fpregset, mips_fill_fpregset, supply_64bit_reg) (mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset) (mips64_fill_fpregset, mips_linux_write_pc): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-nat.c (mips_linux_register_addr) (mips64_linux_register_addr): Replace current_gdbarch by gdbarch. (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips64obsd-tdep.c (mips64obsd_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info.
2007-10-10 19:04:38 +02:00
if (mips_isa_regsize (get_regcache_arch (regcache)) == 4)
* gregset.h (struct regcache): Add forward declaration. (supply_gregset): Add REGCACHE parameter, make GREGS const. (supply_fpregset): Add REGCACHE parameter, make FPREGS const. (supply_fpxregset): Add REGCACHE parameter, make FPXREGS const. (fill_gregset): Add REGCACHE parameter. (fill_fpregset): Likewise. (fill_fpxregset): Likewise. Update all definitions accordingly: * alphabsd-nat.c, alpha-linux-nat.c, alpha-nat.c, amd64-linux-nat.c, arm-linux-nat.c, hppa-linux-nat.c, i386gnu-nat.c, i386-linux-nat.c, i386-sol2-nat.c, i386v4-nat.c, ia64-linux-nat.c, irix5-nat.c, m32r-linux-nat.c, m68klinux-nat.c, mips-linux-nat.c, ppc-linux-nat.c, s390-nat.c, sparc64-linux-nat.c, sparc-linux-nat.c, sparc-sol2-nat.c (supply_gregset): Add REGCACHE parameter, use it instead of current_regcache. Make GREGSETP parameter const, adapt casts. (supply_fpregset): Add REGCACHE parameter, use it instead of current_regcache. Make FPREGSETP parameter const, adapt casts. (fill_gregset): Add REGCACHE parameter, use it instead of current_regcache. (fill_fpregset): Likewise. Update all callers to pass in current_regcache as the new argument: * core-regset.c: Include "regcache.h". (fetch_core_registers): Update supply_gregset,and supply_fpregset calls. * procfs.c: Include "regcache.h". (procfs_fetch_registers): Update supply_gregset, supply_fpregset calls. (procfs_store_registers): Update fill_gregset, fill_fpregset calls. (procfs_do_thread_registers): Likewise. (procfs_make_note_section): Likewise. * proc-service.c: Include "regcache.h". (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * sol-thread.c (sol_thread_fetch_registers): Update supply_gregset, supply_fpregset calls. (sol_thread_store_registers): Update fill_gregset, fill_fpregset calls. (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * linux-nat.c (linux_nat_do_thread_registers): Update fill_gregset, fill_fpregset, and fill_fpxregset calls. * i386-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_fpxregs): Update supply_fpxregset call. (store_fpxregs): Update fill_fpxregset call. * m32r-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. * m68klinux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_core_registers): Update supply_gregset, supply_fpregset calls. * s390-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. * Makefile.in (core-regset.o, procfs.o, proc-service.o): Update dependencies.
2007-05-06 16:32:31 +02:00
mips_supply_gregset (regcache, (const mips_elf_gregset_t *) gregsetp);
else
* gregset.h (struct regcache): Add forward declaration. (supply_gregset): Add REGCACHE parameter, make GREGS const. (supply_fpregset): Add REGCACHE parameter, make FPREGS const. (supply_fpxregset): Add REGCACHE parameter, make FPXREGS const. (fill_gregset): Add REGCACHE parameter. (fill_fpregset): Likewise. (fill_fpxregset): Likewise. Update all definitions accordingly: * alphabsd-nat.c, alpha-linux-nat.c, alpha-nat.c, amd64-linux-nat.c, arm-linux-nat.c, hppa-linux-nat.c, i386gnu-nat.c, i386-linux-nat.c, i386-sol2-nat.c, i386v4-nat.c, ia64-linux-nat.c, irix5-nat.c, m32r-linux-nat.c, m68klinux-nat.c, mips-linux-nat.c, ppc-linux-nat.c, s390-nat.c, sparc64-linux-nat.c, sparc-linux-nat.c, sparc-sol2-nat.c (supply_gregset): Add REGCACHE parameter, use it instead of current_regcache. Make GREGSETP parameter const, adapt casts. (supply_fpregset): Add REGCACHE parameter, use it instead of current_regcache. Make FPREGSETP parameter const, adapt casts. (fill_gregset): Add REGCACHE parameter, use it instead of current_regcache. (fill_fpregset): Likewise. Update all callers to pass in current_regcache as the new argument: * core-regset.c: Include "regcache.h". (fetch_core_registers): Update supply_gregset,and supply_fpregset calls. * procfs.c: Include "regcache.h". (procfs_fetch_registers): Update supply_gregset, supply_fpregset calls. (procfs_store_registers): Update fill_gregset, fill_fpregset calls. (procfs_do_thread_registers): Likewise. (procfs_make_note_section): Likewise. * proc-service.c: Include "regcache.h". (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * sol-thread.c (sol_thread_fetch_registers): Update supply_gregset, supply_fpregset calls. (sol_thread_store_registers): Update fill_gregset, fill_fpregset calls. (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * linux-nat.c (linux_nat_do_thread_registers): Update fill_gregset, fill_fpregset, and fill_fpxregset calls. * i386-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_fpxregs): Update supply_fpxregset call. (store_fpxregs): Update fill_fpxregset call. * m32r-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. * m68klinux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_core_registers): Update supply_gregset, supply_fpregset calls. * s390-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. * Makefile.in (core-regset.o, procfs.o, proc-service.o): Update dependencies.
2007-05-06 16:32:31 +02:00
mips64_supply_gregset (regcache, (const mips64_elf_gregset_t *) gregsetp);
}
void
* gregset.h (struct regcache): Add forward declaration. (supply_gregset): Add REGCACHE parameter, make GREGS const. (supply_fpregset): Add REGCACHE parameter, make FPREGS const. (supply_fpxregset): Add REGCACHE parameter, make FPXREGS const. (fill_gregset): Add REGCACHE parameter. (fill_fpregset): Likewise. (fill_fpxregset): Likewise. Update all definitions accordingly: * alphabsd-nat.c, alpha-linux-nat.c, alpha-nat.c, amd64-linux-nat.c, arm-linux-nat.c, hppa-linux-nat.c, i386gnu-nat.c, i386-linux-nat.c, i386-sol2-nat.c, i386v4-nat.c, ia64-linux-nat.c, irix5-nat.c, m32r-linux-nat.c, m68klinux-nat.c, mips-linux-nat.c, ppc-linux-nat.c, s390-nat.c, sparc64-linux-nat.c, sparc-linux-nat.c, sparc-sol2-nat.c (supply_gregset): Add REGCACHE parameter, use it instead of current_regcache. Make GREGSETP parameter const, adapt casts. (supply_fpregset): Add REGCACHE parameter, use it instead of current_regcache. Make FPREGSETP parameter const, adapt casts. (fill_gregset): Add REGCACHE parameter, use it instead of current_regcache. (fill_fpregset): Likewise. Update all callers to pass in current_regcache as the new argument: * core-regset.c: Include "regcache.h". (fetch_core_registers): Update supply_gregset,and supply_fpregset calls. * procfs.c: Include "regcache.h". (procfs_fetch_registers): Update supply_gregset, supply_fpregset calls. (procfs_store_registers): Update fill_gregset, fill_fpregset calls. (procfs_do_thread_registers): Likewise. (procfs_make_note_section): Likewise. * proc-service.c: Include "regcache.h". (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * sol-thread.c (sol_thread_fetch_registers): Update supply_gregset, supply_fpregset calls. (sol_thread_store_registers): Update fill_gregset, fill_fpregset calls. (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * linux-nat.c (linux_nat_do_thread_registers): Update fill_gregset, fill_fpregset, and fill_fpxregset calls. * i386-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_fpxregs): Update supply_fpxregset call. (store_fpxregs): Update fill_fpxregset call. * m32r-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. * m68klinux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_core_registers): Update supply_gregset, supply_fpregset calls. * s390-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. * Makefile.in (core-regset.o, procfs.o, proc-service.o): Update dependencies.
2007-05-06 16:32:31 +02:00
fill_gregset (const struct regcache *regcache,
gdb_gregset_t *gregsetp, int regno)
{
2007-10-10 Markus Deuling <deuling@de.ibm.com> * remote-mips.c (mips_wait, mips_fetch_registers) (mips_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_fill_reg) (mipsnbsd_supply_fpreg, mipsnbsd_fill_fpreg): Use get_regcache_arch to get at the current architecture by regcache. (mipsnbsd_sigtramp_offset): Use get_frame_arch to get at the current architecture by frame_info. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers) (mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-tdep.c (mips_linux_get_longjmp_target) (mips64_linux_get_longjmp_target, mips_linux_o32_sigframe_init) (mips_linux_n32n64_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info. (supply_32bit_reg, mips_supply_gregset, mips_fill_gregset) (mips_supply_fpregset, mips_fill_fpregset, supply_64bit_reg) (mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset) (mips64_fill_fpregset, mips_linux_write_pc): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-nat.c (mips_linux_register_addr) (mips64_linux_register_addr): Replace current_gdbarch by gdbarch. (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips64obsd-tdep.c (mips64obsd_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info.
2007-10-10 19:04:38 +02:00
if (mips_isa_regsize (get_regcache_arch (regcache)) == 4)
* gregset.h (struct regcache): Add forward declaration. (supply_gregset): Add REGCACHE parameter, make GREGS const. (supply_fpregset): Add REGCACHE parameter, make FPREGS const. (supply_fpxregset): Add REGCACHE parameter, make FPXREGS const. (fill_gregset): Add REGCACHE parameter. (fill_fpregset): Likewise. (fill_fpxregset): Likewise. Update all definitions accordingly: * alphabsd-nat.c, alpha-linux-nat.c, alpha-nat.c, amd64-linux-nat.c, arm-linux-nat.c, hppa-linux-nat.c, i386gnu-nat.c, i386-linux-nat.c, i386-sol2-nat.c, i386v4-nat.c, ia64-linux-nat.c, irix5-nat.c, m32r-linux-nat.c, m68klinux-nat.c, mips-linux-nat.c, ppc-linux-nat.c, s390-nat.c, sparc64-linux-nat.c, sparc-linux-nat.c, sparc-sol2-nat.c (supply_gregset): Add REGCACHE parameter, use it instead of current_regcache. Make GREGSETP parameter const, adapt casts. (supply_fpregset): Add REGCACHE parameter, use it instead of current_regcache. Make FPREGSETP parameter const, adapt casts. (fill_gregset): Add REGCACHE parameter, use it instead of current_regcache. (fill_fpregset): Likewise. Update all callers to pass in current_regcache as the new argument: * core-regset.c: Include "regcache.h". (fetch_core_registers): Update supply_gregset,and supply_fpregset calls. * procfs.c: Include "regcache.h". (procfs_fetch_registers): Update supply_gregset, supply_fpregset calls. (procfs_store_registers): Update fill_gregset, fill_fpregset calls. (procfs_do_thread_registers): Likewise. (procfs_make_note_section): Likewise. * proc-service.c: Include "regcache.h". (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * sol-thread.c (sol_thread_fetch_registers): Update supply_gregset, supply_fpregset calls. (sol_thread_store_registers): Update fill_gregset, fill_fpregset calls. (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * linux-nat.c (linux_nat_do_thread_registers): Update fill_gregset, fill_fpregset, and fill_fpxregset calls. * i386-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_fpxregs): Update supply_fpxregset call. (store_fpxregs): Update fill_fpxregset call. * m32r-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. * m68klinux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_core_registers): Update supply_gregset, supply_fpregset calls. * s390-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. * Makefile.in (core-regset.o, procfs.o, proc-service.o): Update dependencies.
2007-05-06 16:32:31 +02:00
mips_fill_gregset (regcache, (mips_elf_gregset_t *) gregsetp, regno);
else
* gregset.h (struct regcache): Add forward declaration. (supply_gregset): Add REGCACHE parameter, make GREGS const. (supply_fpregset): Add REGCACHE parameter, make FPREGS const. (supply_fpxregset): Add REGCACHE parameter, make FPXREGS const. (fill_gregset): Add REGCACHE parameter. (fill_fpregset): Likewise. (fill_fpxregset): Likewise. Update all definitions accordingly: * alphabsd-nat.c, alpha-linux-nat.c, alpha-nat.c, amd64-linux-nat.c, arm-linux-nat.c, hppa-linux-nat.c, i386gnu-nat.c, i386-linux-nat.c, i386-sol2-nat.c, i386v4-nat.c, ia64-linux-nat.c, irix5-nat.c, m32r-linux-nat.c, m68klinux-nat.c, mips-linux-nat.c, ppc-linux-nat.c, s390-nat.c, sparc64-linux-nat.c, sparc-linux-nat.c, sparc-sol2-nat.c (supply_gregset): Add REGCACHE parameter, use it instead of current_regcache. Make GREGSETP parameter const, adapt casts. (supply_fpregset): Add REGCACHE parameter, use it instead of current_regcache. Make FPREGSETP parameter const, adapt casts. (fill_gregset): Add REGCACHE parameter, use it instead of current_regcache. (fill_fpregset): Likewise. Update all callers to pass in current_regcache as the new argument: * core-regset.c: Include "regcache.h". (fetch_core_registers): Update supply_gregset,and supply_fpregset calls. * procfs.c: Include "regcache.h". (procfs_fetch_registers): Update supply_gregset, supply_fpregset calls. (procfs_store_registers): Update fill_gregset, fill_fpregset calls. (procfs_do_thread_registers): Likewise. (procfs_make_note_section): Likewise. * proc-service.c: Include "regcache.h". (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * sol-thread.c (sol_thread_fetch_registers): Update supply_gregset, supply_fpregset calls. (sol_thread_store_registers): Update fill_gregset, fill_fpregset calls. (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * linux-nat.c (linux_nat_do_thread_registers): Update fill_gregset, fill_fpregset, and fill_fpxregset calls. * i386-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_fpxregs): Update supply_fpxregset call. (store_fpxregs): Update fill_fpxregset call. * m32r-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. * m68klinux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_core_registers): Update supply_gregset, supply_fpregset calls. * s390-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. * Makefile.in (core-regset.o, procfs.o, proc-service.o): Update dependencies.
2007-05-06 16:32:31 +02:00
mips64_fill_gregset (regcache, (mips64_elf_gregset_t *) gregsetp, regno);
}
void
* gregset.h (struct regcache): Add forward declaration. (supply_gregset): Add REGCACHE parameter, make GREGS const. (supply_fpregset): Add REGCACHE parameter, make FPREGS const. (supply_fpxregset): Add REGCACHE parameter, make FPXREGS const. (fill_gregset): Add REGCACHE parameter. (fill_fpregset): Likewise. (fill_fpxregset): Likewise. Update all definitions accordingly: * alphabsd-nat.c, alpha-linux-nat.c, alpha-nat.c, amd64-linux-nat.c, arm-linux-nat.c, hppa-linux-nat.c, i386gnu-nat.c, i386-linux-nat.c, i386-sol2-nat.c, i386v4-nat.c, ia64-linux-nat.c, irix5-nat.c, m32r-linux-nat.c, m68klinux-nat.c, mips-linux-nat.c, ppc-linux-nat.c, s390-nat.c, sparc64-linux-nat.c, sparc-linux-nat.c, sparc-sol2-nat.c (supply_gregset): Add REGCACHE parameter, use it instead of current_regcache. Make GREGSETP parameter const, adapt casts. (supply_fpregset): Add REGCACHE parameter, use it instead of current_regcache. Make FPREGSETP parameter const, adapt casts. (fill_gregset): Add REGCACHE parameter, use it instead of current_regcache. (fill_fpregset): Likewise. Update all callers to pass in current_regcache as the new argument: * core-regset.c: Include "regcache.h". (fetch_core_registers): Update supply_gregset,and supply_fpregset calls. * procfs.c: Include "regcache.h". (procfs_fetch_registers): Update supply_gregset, supply_fpregset calls. (procfs_store_registers): Update fill_gregset, fill_fpregset calls. (procfs_do_thread_registers): Likewise. (procfs_make_note_section): Likewise. * proc-service.c: Include "regcache.h". (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * sol-thread.c (sol_thread_fetch_registers): Update supply_gregset, supply_fpregset calls. (sol_thread_store_registers): Update fill_gregset, fill_fpregset calls. (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * linux-nat.c (linux_nat_do_thread_registers): Update fill_gregset, fill_fpregset, and fill_fpxregset calls. * i386-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_fpxregs): Update supply_fpxregset call. (store_fpxregs): Update fill_fpxregset call. * m32r-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. * m68klinux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_core_registers): Update supply_gregset, supply_fpregset calls. * s390-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. * Makefile.in (core-regset.o, procfs.o, proc-service.o): Update dependencies.
2007-05-06 16:32:31 +02:00
supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *fpregsetp)
{
2007-10-10 Markus Deuling <deuling@de.ibm.com> * remote-mips.c (mips_wait, mips_fetch_registers) (mips_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_fill_reg) (mipsnbsd_supply_fpreg, mipsnbsd_fill_fpreg): Use get_regcache_arch to get at the current architecture by regcache. (mipsnbsd_sigtramp_offset): Use get_frame_arch to get at the current architecture by frame_info. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers) (mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-tdep.c (mips_linux_get_longjmp_target) (mips64_linux_get_longjmp_target, mips_linux_o32_sigframe_init) (mips_linux_n32n64_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info. (supply_32bit_reg, mips_supply_gregset, mips_fill_gregset) (mips_supply_fpregset, mips_fill_fpregset, supply_64bit_reg) (mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset) (mips64_fill_fpregset, mips_linux_write_pc): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-nat.c (mips_linux_register_addr) (mips64_linux_register_addr): Replace current_gdbarch by gdbarch. (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips64obsd-tdep.c (mips64obsd_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info.
2007-10-10 19:04:38 +02:00
if (mips_isa_regsize (get_regcache_arch (regcache)) == 4)
* gregset.h (struct regcache): Add forward declaration. (supply_gregset): Add REGCACHE parameter, make GREGS const. (supply_fpregset): Add REGCACHE parameter, make FPREGS const. (supply_fpxregset): Add REGCACHE parameter, make FPXREGS const. (fill_gregset): Add REGCACHE parameter. (fill_fpregset): Likewise. (fill_fpxregset): Likewise. Update all definitions accordingly: * alphabsd-nat.c, alpha-linux-nat.c, alpha-nat.c, amd64-linux-nat.c, arm-linux-nat.c, hppa-linux-nat.c, i386gnu-nat.c, i386-linux-nat.c, i386-sol2-nat.c, i386v4-nat.c, ia64-linux-nat.c, irix5-nat.c, m32r-linux-nat.c, m68klinux-nat.c, mips-linux-nat.c, ppc-linux-nat.c, s390-nat.c, sparc64-linux-nat.c, sparc-linux-nat.c, sparc-sol2-nat.c (supply_gregset): Add REGCACHE parameter, use it instead of current_regcache. Make GREGSETP parameter const, adapt casts. (supply_fpregset): Add REGCACHE parameter, use it instead of current_regcache. Make FPREGSETP parameter const, adapt casts. (fill_gregset): Add REGCACHE parameter, use it instead of current_regcache. (fill_fpregset): Likewise. Update all callers to pass in current_regcache as the new argument: * core-regset.c: Include "regcache.h". (fetch_core_registers): Update supply_gregset,and supply_fpregset calls. * procfs.c: Include "regcache.h". (procfs_fetch_registers): Update supply_gregset, supply_fpregset calls. (procfs_store_registers): Update fill_gregset, fill_fpregset calls. (procfs_do_thread_registers): Likewise. (procfs_make_note_section): Likewise. * proc-service.c: Include "regcache.h". (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * sol-thread.c (sol_thread_fetch_registers): Update supply_gregset, supply_fpregset calls. (sol_thread_store_registers): Update fill_gregset, fill_fpregset calls. (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * linux-nat.c (linux_nat_do_thread_registers): Update fill_gregset, fill_fpregset, and fill_fpxregset calls. * i386-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_fpxregs): Update supply_fpxregset call. (store_fpxregs): Update fill_fpxregset call. * m32r-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. * m68klinux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_core_registers): Update supply_gregset, supply_fpregset calls. * s390-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. * Makefile.in (core-regset.o, procfs.o, proc-service.o): Update dependencies.
2007-05-06 16:32:31 +02:00
mips_supply_fpregset (regcache, (const mips_elf_fpregset_t *) fpregsetp);
else
mips64_supply_fpregset (regcache,
(const mips64_elf_fpregset_t *) fpregsetp);
}
void
* gregset.h (struct regcache): Add forward declaration. (supply_gregset): Add REGCACHE parameter, make GREGS const. (supply_fpregset): Add REGCACHE parameter, make FPREGS const. (supply_fpxregset): Add REGCACHE parameter, make FPXREGS const. (fill_gregset): Add REGCACHE parameter. (fill_fpregset): Likewise. (fill_fpxregset): Likewise. Update all definitions accordingly: * alphabsd-nat.c, alpha-linux-nat.c, alpha-nat.c, amd64-linux-nat.c, arm-linux-nat.c, hppa-linux-nat.c, i386gnu-nat.c, i386-linux-nat.c, i386-sol2-nat.c, i386v4-nat.c, ia64-linux-nat.c, irix5-nat.c, m32r-linux-nat.c, m68klinux-nat.c, mips-linux-nat.c, ppc-linux-nat.c, s390-nat.c, sparc64-linux-nat.c, sparc-linux-nat.c, sparc-sol2-nat.c (supply_gregset): Add REGCACHE parameter, use it instead of current_regcache. Make GREGSETP parameter const, adapt casts. (supply_fpregset): Add REGCACHE parameter, use it instead of current_regcache. Make FPREGSETP parameter const, adapt casts. (fill_gregset): Add REGCACHE parameter, use it instead of current_regcache. (fill_fpregset): Likewise. Update all callers to pass in current_regcache as the new argument: * core-regset.c: Include "regcache.h". (fetch_core_registers): Update supply_gregset,and supply_fpregset calls. * procfs.c: Include "regcache.h". (procfs_fetch_registers): Update supply_gregset, supply_fpregset calls. (procfs_store_registers): Update fill_gregset, fill_fpregset calls. (procfs_do_thread_registers): Likewise. (procfs_make_note_section): Likewise. * proc-service.c: Include "regcache.h". (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * sol-thread.c (sol_thread_fetch_registers): Update supply_gregset, supply_fpregset calls. (sol_thread_store_registers): Update fill_gregset, fill_fpregset calls. (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * linux-nat.c (linux_nat_do_thread_registers): Update fill_gregset, fill_fpregset, and fill_fpxregset calls. * i386-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_fpxregs): Update supply_fpxregset call. (store_fpxregs): Update fill_fpxregset call. * m32r-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. * m68klinux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_core_registers): Update supply_gregset, supply_fpregset calls. * s390-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. * Makefile.in (core-regset.o, procfs.o, proc-service.o): Update dependencies.
2007-05-06 16:32:31 +02:00
fill_fpregset (const struct regcache *regcache,
gdb_fpregset_t *fpregsetp, int regno)
{
2007-10-10 Markus Deuling <deuling@de.ibm.com> * remote-mips.c (mips_wait, mips_fetch_registers) (mips_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_fill_reg) (mipsnbsd_supply_fpreg, mipsnbsd_fill_fpreg): Use get_regcache_arch to get at the current architecture by regcache. (mipsnbsd_sigtramp_offset): Use get_frame_arch to get at the current architecture by frame_info. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers) (mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-tdep.c (mips_linux_get_longjmp_target) (mips64_linux_get_longjmp_target, mips_linux_o32_sigframe_init) (mips_linux_n32n64_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info. (supply_32bit_reg, mips_supply_gregset, mips_fill_gregset) (mips_supply_fpregset, mips_fill_fpregset, supply_64bit_reg) (mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset) (mips64_fill_fpregset, mips_linux_write_pc): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-nat.c (mips_linux_register_addr) (mips64_linux_register_addr): Replace current_gdbarch by gdbarch. (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips64obsd-tdep.c (mips64obsd_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info.
2007-10-10 19:04:38 +02:00
if (mips_isa_regsize (get_regcache_arch (regcache)) == 4)
* gregset.h (struct regcache): Add forward declaration. (supply_gregset): Add REGCACHE parameter, make GREGS const. (supply_fpregset): Add REGCACHE parameter, make FPREGS const. (supply_fpxregset): Add REGCACHE parameter, make FPXREGS const. (fill_gregset): Add REGCACHE parameter. (fill_fpregset): Likewise. (fill_fpxregset): Likewise. Update all definitions accordingly: * alphabsd-nat.c, alpha-linux-nat.c, alpha-nat.c, amd64-linux-nat.c, arm-linux-nat.c, hppa-linux-nat.c, i386gnu-nat.c, i386-linux-nat.c, i386-sol2-nat.c, i386v4-nat.c, ia64-linux-nat.c, irix5-nat.c, m32r-linux-nat.c, m68klinux-nat.c, mips-linux-nat.c, ppc-linux-nat.c, s390-nat.c, sparc64-linux-nat.c, sparc-linux-nat.c, sparc-sol2-nat.c (supply_gregset): Add REGCACHE parameter, use it instead of current_regcache. Make GREGSETP parameter const, adapt casts. (supply_fpregset): Add REGCACHE parameter, use it instead of current_regcache. Make FPREGSETP parameter const, adapt casts. (fill_gregset): Add REGCACHE parameter, use it instead of current_regcache. (fill_fpregset): Likewise. Update all callers to pass in current_regcache as the new argument: * core-regset.c: Include "regcache.h". (fetch_core_registers): Update supply_gregset,and supply_fpregset calls. * procfs.c: Include "regcache.h". (procfs_fetch_registers): Update supply_gregset, supply_fpregset calls. (procfs_store_registers): Update fill_gregset, fill_fpregset calls. (procfs_do_thread_registers): Likewise. (procfs_make_note_section): Likewise. * proc-service.c: Include "regcache.h". (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * sol-thread.c (sol_thread_fetch_registers): Update supply_gregset, supply_fpregset calls. (sol_thread_store_registers): Update fill_gregset, fill_fpregset calls. (ps_lgetregs): Update fill_gregset call. (ps_lsetregs): Update supply_gregset call. (ps_lgetfpregs): Update fill_fpregset call. (ps_lsetfpregs): Update supply_fpregset call. * linux-nat.c (linux_nat_do_thread_registers): Update fill_gregset, fill_fpregset, and fill_fpxregset calls. * i386-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_fpxregs): Update supply_fpxregset call. (store_fpxregs): Update fill_fpxregset call. * m32r-linux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. * m68klinux-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. (fetch_core_registers): Update supply_gregset, supply_fpregset calls. * s390-nat.c (fetch_regs): Update supply_gregset call. (store_regs): Update fill_gregset call. (fetch_fpregs): Update supply_fpregset call. (store_fpregs): Update fill_fpregset call. * Makefile.in (core-regset.o, procfs.o, proc-service.o): Update dependencies.
2007-05-06 16:32:31 +02:00
mips_fill_fpregset (regcache, (mips_elf_fpregset_t *) fpregsetp, regno);
else
mips64_fill_fpregset (regcache,
(mips64_elf_fpregset_t *) fpregsetp, regno);
}
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
/* Fetch REGNO (or all registers if REGNO == -1) from the target
using PTRACE_GETREGS et al. */
static void
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
mips64_linux_regsets_fetch_registers (struct target_ops *ops,
struct regcache *regcache, int regno)
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
{
2007-10-10 Markus Deuling <deuling@de.ibm.com> * remote-mips.c (mips_wait, mips_fetch_registers) (mips_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_fill_reg) (mipsnbsd_supply_fpreg, mipsnbsd_fill_fpreg): Use get_regcache_arch to get at the current architecture by regcache. (mipsnbsd_sigtramp_offset): Use get_frame_arch to get at the current architecture by frame_info. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers) (mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-tdep.c (mips_linux_get_longjmp_target) (mips64_linux_get_longjmp_target, mips_linux_o32_sigframe_init) (mips_linux_n32n64_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info. (supply_32bit_reg, mips_supply_gregset, mips_fill_gregset) (mips_supply_fpregset, mips_fill_fpregset, supply_64bit_reg) (mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset) (mips64_fill_fpregset, mips_linux_write_pc): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-nat.c (mips_linux_register_addr) (mips64_linux_register_addr): Replace current_gdbarch by gdbarch. (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips64obsd-tdep.c (mips64obsd_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info.
2007-10-10 19:04:38 +02:00
struct gdbarch *gdbarch = get_regcache_arch (regcache);
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
int is_fp, is_dsp;
int have_dsp;
int regi;
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
int tid;
2007-10-10 Markus Deuling <deuling@de.ibm.com> * remote-mips.c (mips_wait, mips_fetch_registers) (mips_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_fill_reg) (mipsnbsd_supply_fpreg, mipsnbsd_fill_fpreg): Use get_regcache_arch to get at the current architecture by regcache. (mipsnbsd_sigtramp_offset): Use get_frame_arch to get at the current architecture by frame_info. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers) (mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-tdep.c (mips_linux_get_longjmp_target) (mips64_linux_get_longjmp_target, mips_linux_o32_sigframe_init) (mips_linux_n32n64_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info. (supply_32bit_reg, mips_supply_gregset, mips_fill_gregset) (mips_supply_fpregset, mips_fill_fpregset, supply_64bit_reg) (mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset) (mips64_fill_fpregset, mips_linux_write_pc): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-nat.c (mips_linux_register_addr) (mips64_linux_register_addr): Replace current_gdbarch by gdbarch. (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips64obsd-tdep.c (mips64obsd_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info.
2007-10-10 19:04:38 +02:00
if (regno >= mips_regnum (gdbarch)->fp0
&& regno <= mips_regnum (gdbarch)->fp0 + 32)
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
is_fp = 1;
2007-10-10 Markus Deuling <deuling@de.ibm.com> * remote-mips.c (mips_wait, mips_fetch_registers) (mips_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_fill_reg) (mipsnbsd_supply_fpreg, mipsnbsd_fill_fpreg): Use get_regcache_arch to get at the current architecture by regcache. (mipsnbsd_sigtramp_offset): Use get_frame_arch to get at the current architecture by frame_info. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers) (mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-tdep.c (mips_linux_get_longjmp_target) (mips64_linux_get_longjmp_target, mips_linux_o32_sigframe_init) (mips_linux_n32n64_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info. (supply_32bit_reg, mips_supply_gregset, mips_fill_gregset) (mips_supply_fpregset, mips_fill_fpregset, supply_64bit_reg) (mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset) (mips64_fill_fpregset, mips_linux_write_pc): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-nat.c (mips_linux_register_addr) (mips64_linux_register_addr): Replace current_gdbarch by gdbarch. (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips64obsd-tdep.c (mips64obsd_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info.
2007-10-10 19:04:38 +02:00
else if (regno == mips_regnum (gdbarch)->fp_control_status)
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
is_fp = 1;
2007-10-10 Markus Deuling <deuling@de.ibm.com> * remote-mips.c (mips_wait, mips_fetch_registers) (mips_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_fill_reg) (mipsnbsd_supply_fpreg, mipsnbsd_fill_fpreg): Use get_regcache_arch to get at the current architecture by regcache. (mipsnbsd_sigtramp_offset): Use get_frame_arch to get at the current architecture by frame_info. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers) (mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-tdep.c (mips_linux_get_longjmp_target) (mips64_linux_get_longjmp_target, mips_linux_o32_sigframe_init) (mips_linux_n32n64_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info. (supply_32bit_reg, mips_supply_gregset, mips_fill_gregset) (mips_supply_fpregset, mips_fill_fpregset, supply_64bit_reg) (mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset) (mips64_fill_fpregset, mips_linux_write_pc): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-nat.c (mips_linux_register_addr) (mips64_linux_register_addr): Replace current_gdbarch by gdbarch. (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips64obsd-tdep.c (mips64obsd_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info.
2007-10-10 19:04:38 +02:00
else if (regno == mips_regnum (gdbarch)->fp_implementation_revision)
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
is_fp = 1;
else
is_fp = 0;
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
/* DSP registers are optional and not a part of any set. */
have_dsp = mips_regnum (gdbarch)->dspctl != -1;
if (!have_dsp)
is_dsp = 0;
else if (regno >= mips_regnum (gdbarch)->dspacc
&& regno < mips_regnum (gdbarch)->dspacc + 6)
is_dsp = 1;
else if (regno == mips_regnum (gdbarch)->dspctl)
is_dsp = 1;
else
is_dsp = 0;
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
tid = ptid_get_lwp (inferior_ptid);
if (tid == 0)
tid = ptid_get_pid (inferior_ptid);
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
if (regno == -1 || (!is_fp && !is_dsp))
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
{
mips64_elf_gregset_t regs;
if (ptrace (PTRACE_GETREGS, tid, 0L, (PTRACE_TYPE_ARG3) &regs) == -1)
{
if (errno == EIO)
{
have_ptrace_regsets = 0;
return;
}
perror_with_name (_("Couldn't get registers"));
}
* target.h (struct regcache): Add forward declaration. (struct target_ops): Add REGCACHE parameter to to_fetch_registers and to_store_registers target operations. (target_fetch_registers, target_store_registers): Update. * regcache.c (regcache_raw_read): Replace register_cached by regcache_valid_p. Pass regcache to target_fetch_registers. (regcache_raw_write): Pass regcache to target_store_registers. * arm-linux-nat.c (store_fpregister, store_fpregs, store_register, store_regs, store_wmmx_regs): Replace register_cached by regcache_valid_p. * bsd-kvm.c (bsd_kvm_open, bsd_kvm_proc_cmd): Pass current_regcache to target_fetch_registers calls. * corelow.c (core_open): Likewise. * linux-nat.c (linux_nat_corefile_thread_callback): Likewise. * proc-service.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs, ps_lsetfpregs): Likewise. * sol-thread.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs, ps_lsetfpregs): Likewise. * win32-nat.c (win32_resume): Likewise. * ia64-tdep.c (ia64_store_return_value): Pass current_regcache to target_store_registers call. * rs6000-tdep.c (rs6000_push_dummy_call): Likewise. * inferior.h (store_inferior_registers): Update prototype. (fetch_inferior_registers): Likewise. * gnu-nat.c (gnu_store_registers, gnu_fetch_registers): Likewise. * mips-linux-nat.c (super_fetch_registers, super_store_registers): Update function pointer signatures. * aix-thread.c (aix_thread_fetch_registers): Add REGCACHE parameter, use it instead of current_regcache, update calls. (aix_thread_store_registers): Likewise. * alphabsd-nat.c (alphabsd_fetch_inferior_registers): Likewise. (alphabsd_store_inferior_registers): Likewise. * amd64bsd-nat.c (amd64bsd_fetch_inferior_registers): Likewise. (amd64bsd_store_inferior_registers): Likewise. * amd64-linux-nat.c (amd64_linux_fetch_inferior_registers): Likewise. (amd64_linux_store_inferior_registers): Likewise. * arm-linux-nat.c (fetch_fpregister, fetch_fpregs, store_fpregister, store_fpregs, fetch_register, fetch_regs, store_register, store_regs, fetch_wmmx_regs, store_wmmx_regs): Likewise. (arm_linux_fetch_inferior_registers): Likewise. (arm_linux_store_inferior_registers): Likewise. * armnbsd-nat.c (fetch_register, fetch_regs, fetch_fp_register, fetch_fp_regs, armnbsd_fetch_registers): Likewise. (store_register, store_regs, store_fp_register, store_fp_regs, armnbsd_store_registers): Likewise. * bsd-kvm.c (bsd_kvm_fetch_pcb, bsd_kvm_fetch_registers): Likewise. * bsd-uthread.c (bsd_uthread_fetch_registers): Likewise. (bsd_uthread_store_registers): Likewise. * corelow.c (get_core_registers): Likewise. * go32-nat.c (fetch_register, go32_fetch_registers, store_register, go32_store_registers): Likewise. * hppabsd-nat.c (hppabsd_fetch_registers): Likewise. (hppabsd_store_registers): Likewise. * hppa-hpux-nat.c (hppa_hpux_fetch_register): Likewise. (hppa_hpux_fetch_inferior_registers): Likewise. (hppa_hpux_store_register): Likewise. (hppa_hpux_store_inferior_registers): Likewise. * hppa-linux-nat.c (fetch_register, store_register): Likewise. (hppa_linux_fetch_inferior_registers): Likewise. (hppa_linux_store_inferior_registers): Likewise. * hpux-thread.c (hpux_thread_fetch_registers): Likewise. (hpux_thread_store_registers): Likewise. * i386bsd-nat.c (i386bsd_fetch_inferior_registers): Likewise. (i386bsd_store_inferior_registers): Likewise. * i386gnu-nat.c (fetch_fpregs, gnu_fetch_registers, store_fpregs, gnu_store_registers): Likewise. * i386-linux-nat.c (fetch_register, store_register, fetch_regs, store_regs, fetch_fpregs, store_fpregs, fetch_fpxregs, store_fpxregs): Likewise. (i386_linux_fetch_inferior_registers): Likewise. (i386_linux_store_inferior_registers): Likewise. * ia64-linux-nat.c (ia64_linux_fetch_register): Likewise. (ia64_linux_fetch_registers): Likewise. (ia64_linux_store_register): Likewise. (ia64_linux_store_registers): Likewise. * inf-child.c (inf_child_fetch_inferior_registers): Likewise. (inf_child_store_inferior_registers): Likewise. * inf-ptrace.c (inf_ptrace_fetch_register): Likewise. (inf_ptrace_fetch_registers): Likewise. (inf_ptrace_store_register): Likewise. (inf_ptrace_store_registers): Likewise. * infptrace.c (fetch_register, store_register): Likewise. (fetch_inferior_registers, store_inferior_registers): Likewise. * m32r-linux-nat.c (fetch_regs, store_regs): Likewise. (m32r_linux_fetch_inferior_registers): Likewise. (m32r_linux_store_inferior_registers): Likewise. * m68kbsd-nat.c (m68kbsd_fetch_inferior_registers): Likewise. (m68kbsd_store_inferior_registers): Likewise. * m68klinux-nat.c (fetch_register, old_fetch_inferior_registers, store_register, old_store_inferior_registers, fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise. (m68k_linux_fetch_inferior_registers): Likewise. (m68k_linux_store_inferior_registers): Likewise. * m88kbsd-nat.c (m88kbsd_fetch_inferior_registers): Likewise. (m88kbsd_store_inferior_registers): Likewise. * mips64obsd-nat.c (mips64obsd_fetch_inferior_registers): Likewise. (mips64obsd_store_inferior_registers): Likewise. * mips-linux-nat.c (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Likewise. (mips64_linux_store_registers): Likewise. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers): Likewise. (mipsnbsd_store_inferior_registers): Likewise. * monitor.c (monitor_fetch_register, monitor_store_register): Likewise. (monitor_fetch_registers, monitor_store_registers): Likewise. * nto-procfs.c (procfs_fetch_registers): Likewise. (procfs_store_registers): Likewise. * ppc-linux-nat.c (fetch_altivec_register, fetch_spe_register, fetch_register, supply_vrregset, fetch_altivec_registers, fetch_ppc_registers, ppc_linux_fetch_inferior_registers): Likewise. (store_altivec_register, store_spe_register, store_register, fill_vrregset, store_altivec_registers, store_ppc_registers, ppc_linux_store_inferior_registers): Likewise. * ppcnbsd-nat.c (ppcnbsd_fetch_inferior_registers): Likewise. (ppcnbsd_store_inferior_registers): Likewise. * ppcobsd-nat.c (ppcobsd_fetch_registers): Likewise. (ppcobsd_store_registers): Likewise. * procfs.c (procfs_fetch_registers, procfs_store_registers): Likewise. * remote.c (fetch_register_using_p, process_g_packet, fetch_registers_using_g, remote_fetch_registers): Likewise. (store_register_using_P, store_registers_using_G, remote_store_registers): Likewise. * remote-m32r-sdi.c (m32r_fetch_registers, m32r_fetch_register, m32r_store_register, m32r_store_register): Likewise. * remote-mips.c (mips_fetch_registers, mips_store_registers): Likewise. * remote-sim.c (gdbsim_fetch_register): Likewise. (gdbsim_store_register): Likewise. * rs6000-nat.c (fetch_register, store_register): Likewise. (rs6000_fetch_inferior_registers): Likewise. (rs6000_store_inferior_registers): Likewise. * s390-nat.c (fetch_regs, store_regs): Likewise. (fetch_fpregs, store_fpregs): Likewise. (s390_linux_fetch_inferior_registers): Likewise. (s390_linux_store_inferior_registers): Likewise. * shnbsd-nat.c (shnbsd_fetch_inferior_registers): Likewise. (shnbsd_store_inferior_registers): Likewise. * sol-thread.c (sol_thread_fetch_registers): Likewise. (sol_thread_store_registers): Likewise. * sparc-nat.c (fetch_inferior_registers): Likewise. (store_inferior_registers): Likewise. * spu-linux-nat.c (spu_fetch_inferior_registers): Likewise. (spu_store_inferior_registers): Likewise. * target.c (debug_print_register): Likewise. (debug_to_fetch_registers, debug_to_store_registers): Likewise. * vaxbsd-nat.c (vaxbsd_fetch_inferior_registers): Likewise. (vaxbsd_store_inferior_registers): Likewise. * win32-nat.c (do_win32_fetch_inferior_registers): Likewise. (win32_fetch_inferior_registers): Likewise. (win32_store_inferior_registers): Likewise.
2007-05-06 16:34:38 +02:00
mips64_supply_gregset (regcache,
* mips-linux-tdep.c (supply_32bit_reg): Add REGCACHE parameter. Use it instead of current_regcache. (mips_supply_gregset): Likewise. Pass REGCACHE to supply_32bit_reg. Make GREGSETP const, remove superfluous casts. (mips_fill_gregset): Add REGCACHE parameter; replace current_regcache. (mips_supply_fpregset): Likewise. Make FPREGSETP const, remove superfluous casts. (mips_fill_fpregset): Add REGCACHE parameter; replace current_regcache. (supply_64bit_reg): Likewise (mips64_supply_gregset): Likewise. Pass REGCACHE to supply_64bit_reg. Make GREGSETP const, adapt casts accordingly. (mips64_fill_gregset): Add REGCACHE parameter; replace current_regcache. (mips64_supply_fpregset): Likewise. Make FPREGSET const, adapt casts accordingly. (mips64_fill_fpregset): Add REGCACHE parameter; replace current_regcache. (fetch_core_registers): Pass current_regcache to mips{64}_(supply|fill)_ helper routines. * mips-linux-tdep.h (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset, mips_fill_fpregset, mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset, mips64_fill_fpregset): Adapt prototypes. * mips-linux-nat.c: Include "regcache.h". (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset): Pass current_regcache to mips{64}_(supply|fill)_ helper routines. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_supply_fpreg): Add REGCACHE argument; replace current_regcache. Make REGS const. (mipsnbds_fill_reg, mipsnbsd_fill_fpreg): Add REGCACHE argument; replace current_regcache. * mipsnbsd-tdep.h (ipsnbsd_supply_reg, mipsnbsd_supply_fpreg, mipsnbds_fill_reg, mipsnbsd_fill_fpreg): Adapt prototypes. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers, mipsnbsd_store_inferior_registers): Pass current_regcache to mipsnbsd_(supply|fill)_... helper routines. * Makefile.in (mips-linux-nat.o): Update dependencies.
2007-05-06 16:29:15 +02:00
(const mips64_elf_gregset_t *) &regs);
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
}
if (regno == -1 || is_fp)
{
mips64_elf_fpregset_t fp_regs;
if (ptrace (PTRACE_GETFPREGS, tid, 0L,
(PTRACE_TYPE_ARG3) &fp_regs) == -1)
{
if (errno == EIO)
{
have_ptrace_regsets = 0;
return;
}
perror_with_name (_("Couldn't get FP registers"));
}
* target.h (struct regcache): Add forward declaration. (struct target_ops): Add REGCACHE parameter to to_fetch_registers and to_store_registers target operations. (target_fetch_registers, target_store_registers): Update. * regcache.c (regcache_raw_read): Replace register_cached by regcache_valid_p. Pass regcache to target_fetch_registers. (regcache_raw_write): Pass regcache to target_store_registers. * arm-linux-nat.c (store_fpregister, store_fpregs, store_register, store_regs, store_wmmx_regs): Replace register_cached by regcache_valid_p. * bsd-kvm.c (bsd_kvm_open, bsd_kvm_proc_cmd): Pass current_regcache to target_fetch_registers calls. * corelow.c (core_open): Likewise. * linux-nat.c (linux_nat_corefile_thread_callback): Likewise. * proc-service.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs, ps_lsetfpregs): Likewise. * sol-thread.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs, ps_lsetfpregs): Likewise. * win32-nat.c (win32_resume): Likewise. * ia64-tdep.c (ia64_store_return_value): Pass current_regcache to target_store_registers call. * rs6000-tdep.c (rs6000_push_dummy_call): Likewise. * inferior.h (store_inferior_registers): Update prototype. (fetch_inferior_registers): Likewise. * gnu-nat.c (gnu_store_registers, gnu_fetch_registers): Likewise. * mips-linux-nat.c (super_fetch_registers, super_store_registers): Update function pointer signatures. * aix-thread.c (aix_thread_fetch_registers): Add REGCACHE parameter, use it instead of current_regcache, update calls. (aix_thread_store_registers): Likewise. * alphabsd-nat.c (alphabsd_fetch_inferior_registers): Likewise. (alphabsd_store_inferior_registers): Likewise. * amd64bsd-nat.c (amd64bsd_fetch_inferior_registers): Likewise. (amd64bsd_store_inferior_registers): Likewise. * amd64-linux-nat.c (amd64_linux_fetch_inferior_registers): Likewise. (amd64_linux_store_inferior_registers): Likewise. * arm-linux-nat.c (fetch_fpregister, fetch_fpregs, store_fpregister, store_fpregs, fetch_register, fetch_regs, store_register, store_regs, fetch_wmmx_regs, store_wmmx_regs): Likewise. (arm_linux_fetch_inferior_registers): Likewise. (arm_linux_store_inferior_registers): Likewise. * armnbsd-nat.c (fetch_register, fetch_regs, fetch_fp_register, fetch_fp_regs, armnbsd_fetch_registers): Likewise. (store_register, store_regs, store_fp_register, store_fp_regs, armnbsd_store_registers): Likewise. * bsd-kvm.c (bsd_kvm_fetch_pcb, bsd_kvm_fetch_registers): Likewise. * bsd-uthread.c (bsd_uthread_fetch_registers): Likewise. (bsd_uthread_store_registers): Likewise. * corelow.c (get_core_registers): Likewise. * go32-nat.c (fetch_register, go32_fetch_registers, store_register, go32_store_registers): Likewise. * hppabsd-nat.c (hppabsd_fetch_registers): Likewise. (hppabsd_store_registers): Likewise. * hppa-hpux-nat.c (hppa_hpux_fetch_register): Likewise. (hppa_hpux_fetch_inferior_registers): Likewise. (hppa_hpux_store_register): Likewise. (hppa_hpux_store_inferior_registers): Likewise. * hppa-linux-nat.c (fetch_register, store_register): Likewise. (hppa_linux_fetch_inferior_registers): Likewise. (hppa_linux_store_inferior_registers): Likewise. * hpux-thread.c (hpux_thread_fetch_registers): Likewise. (hpux_thread_store_registers): Likewise. * i386bsd-nat.c (i386bsd_fetch_inferior_registers): Likewise. (i386bsd_store_inferior_registers): Likewise. * i386gnu-nat.c (fetch_fpregs, gnu_fetch_registers, store_fpregs, gnu_store_registers): Likewise. * i386-linux-nat.c (fetch_register, store_register, fetch_regs, store_regs, fetch_fpregs, store_fpregs, fetch_fpxregs, store_fpxregs): Likewise. (i386_linux_fetch_inferior_registers): Likewise. (i386_linux_store_inferior_registers): Likewise. * ia64-linux-nat.c (ia64_linux_fetch_register): Likewise. (ia64_linux_fetch_registers): Likewise. (ia64_linux_store_register): Likewise. (ia64_linux_store_registers): Likewise. * inf-child.c (inf_child_fetch_inferior_registers): Likewise. (inf_child_store_inferior_registers): Likewise. * inf-ptrace.c (inf_ptrace_fetch_register): Likewise. (inf_ptrace_fetch_registers): Likewise. (inf_ptrace_store_register): Likewise. (inf_ptrace_store_registers): Likewise. * infptrace.c (fetch_register, store_register): Likewise. (fetch_inferior_registers, store_inferior_registers): Likewise. * m32r-linux-nat.c (fetch_regs, store_regs): Likewise. (m32r_linux_fetch_inferior_registers): Likewise. (m32r_linux_store_inferior_registers): Likewise. * m68kbsd-nat.c (m68kbsd_fetch_inferior_registers): Likewise. (m68kbsd_store_inferior_registers): Likewise. * m68klinux-nat.c (fetch_register, old_fetch_inferior_registers, store_register, old_store_inferior_registers, fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise. (m68k_linux_fetch_inferior_registers): Likewise. (m68k_linux_store_inferior_registers): Likewise. * m88kbsd-nat.c (m88kbsd_fetch_inferior_registers): Likewise. (m88kbsd_store_inferior_registers): Likewise. * mips64obsd-nat.c (mips64obsd_fetch_inferior_registers): Likewise. (mips64obsd_store_inferior_registers): Likewise. * mips-linux-nat.c (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Likewise. (mips64_linux_store_registers): Likewise. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers): Likewise. (mipsnbsd_store_inferior_registers): Likewise. * monitor.c (monitor_fetch_register, monitor_store_register): Likewise. (monitor_fetch_registers, monitor_store_registers): Likewise. * nto-procfs.c (procfs_fetch_registers): Likewise. (procfs_store_registers): Likewise. * ppc-linux-nat.c (fetch_altivec_register, fetch_spe_register, fetch_register, supply_vrregset, fetch_altivec_registers, fetch_ppc_registers, ppc_linux_fetch_inferior_registers): Likewise. (store_altivec_register, store_spe_register, store_register, fill_vrregset, store_altivec_registers, store_ppc_registers, ppc_linux_store_inferior_registers): Likewise. * ppcnbsd-nat.c (ppcnbsd_fetch_inferior_registers): Likewise. (ppcnbsd_store_inferior_registers): Likewise. * ppcobsd-nat.c (ppcobsd_fetch_registers): Likewise. (ppcobsd_store_registers): Likewise. * procfs.c (procfs_fetch_registers, procfs_store_registers): Likewise. * remote.c (fetch_register_using_p, process_g_packet, fetch_registers_using_g, remote_fetch_registers): Likewise. (store_register_using_P, store_registers_using_G, remote_store_registers): Likewise. * remote-m32r-sdi.c (m32r_fetch_registers, m32r_fetch_register, m32r_store_register, m32r_store_register): Likewise. * remote-mips.c (mips_fetch_registers, mips_store_registers): Likewise. * remote-sim.c (gdbsim_fetch_register): Likewise. (gdbsim_store_register): Likewise. * rs6000-nat.c (fetch_register, store_register): Likewise. (rs6000_fetch_inferior_registers): Likewise. (rs6000_store_inferior_registers): Likewise. * s390-nat.c (fetch_regs, store_regs): Likewise. (fetch_fpregs, store_fpregs): Likewise. (s390_linux_fetch_inferior_registers): Likewise. (s390_linux_store_inferior_registers): Likewise. * shnbsd-nat.c (shnbsd_fetch_inferior_registers): Likewise. (shnbsd_store_inferior_registers): Likewise. * sol-thread.c (sol_thread_fetch_registers): Likewise. (sol_thread_store_registers): Likewise. * sparc-nat.c (fetch_inferior_registers): Likewise. (store_inferior_registers): Likewise. * spu-linux-nat.c (spu_fetch_inferior_registers): Likewise. (spu_store_inferior_registers): Likewise. * target.c (debug_print_register): Likewise. (debug_to_fetch_registers, debug_to_store_registers): Likewise. * vaxbsd-nat.c (vaxbsd_fetch_inferior_registers): Likewise. (vaxbsd_store_inferior_registers): Likewise. * win32-nat.c (do_win32_fetch_inferior_registers): Likewise. (win32_fetch_inferior_registers): Likewise. (win32_store_inferior_registers): Likewise.
2007-05-06 16:34:38 +02:00
mips64_supply_fpregset (regcache,
* mips-linux-tdep.c (supply_32bit_reg): Add REGCACHE parameter. Use it instead of current_regcache. (mips_supply_gregset): Likewise. Pass REGCACHE to supply_32bit_reg. Make GREGSETP const, remove superfluous casts. (mips_fill_gregset): Add REGCACHE parameter; replace current_regcache. (mips_supply_fpregset): Likewise. Make FPREGSETP const, remove superfluous casts. (mips_fill_fpregset): Add REGCACHE parameter; replace current_regcache. (supply_64bit_reg): Likewise (mips64_supply_gregset): Likewise. Pass REGCACHE to supply_64bit_reg. Make GREGSETP const, adapt casts accordingly. (mips64_fill_gregset): Add REGCACHE parameter; replace current_regcache. (mips64_supply_fpregset): Likewise. Make FPREGSET const, adapt casts accordingly. (mips64_fill_fpregset): Add REGCACHE parameter; replace current_regcache. (fetch_core_registers): Pass current_regcache to mips{64}_(supply|fill)_ helper routines. * mips-linux-tdep.h (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset, mips_fill_fpregset, mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset, mips64_fill_fpregset): Adapt prototypes. * mips-linux-nat.c: Include "regcache.h". (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset): Pass current_regcache to mips{64}_(supply|fill)_ helper routines. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_supply_fpreg): Add REGCACHE argument; replace current_regcache. Make REGS const. (mipsnbds_fill_reg, mipsnbsd_fill_fpreg): Add REGCACHE argument; replace current_regcache. * mipsnbsd-tdep.h (ipsnbsd_supply_reg, mipsnbsd_supply_fpreg, mipsnbds_fill_reg, mipsnbsd_fill_fpreg): Adapt prototypes. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers, mipsnbsd_store_inferior_registers): Pass current_regcache to mipsnbsd_(supply|fill)_... helper routines. * Makefile.in (mips-linux-nat.o): Update dependencies.
2007-05-06 16:29:15 +02:00
(const mips64_elf_fpregset_t *) &fp_regs);
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
}
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
if (is_dsp)
super_fetch_registers (ops, regcache, regno);
else if (regno == -1 && have_dsp)
{
for (regi = mips_regnum (gdbarch)->dspacc;
regi < mips_regnum (gdbarch)->dspacc + 6;
regi++)
super_fetch_registers (ops, regcache, regi);
super_fetch_registers (ops, regcache, mips_regnum (gdbarch)->dspctl);
}
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
}
/* Store REGNO (or all registers if REGNO == -1) to the target
using PTRACE_SETREGS et al. */
static void
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
mips64_linux_regsets_store_registers (struct target_ops *ops,
struct regcache *regcache, int regno)
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
{
2007-10-10 Markus Deuling <deuling@de.ibm.com> * remote-mips.c (mips_wait, mips_fetch_registers) (mips_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_fill_reg) (mipsnbsd_supply_fpreg, mipsnbsd_fill_fpreg): Use get_regcache_arch to get at the current architecture by regcache. (mipsnbsd_sigtramp_offset): Use get_frame_arch to get at the current architecture by frame_info. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers) (mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-tdep.c (mips_linux_get_longjmp_target) (mips64_linux_get_longjmp_target, mips_linux_o32_sigframe_init) (mips_linux_n32n64_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info. (supply_32bit_reg, mips_supply_gregset, mips_fill_gregset) (mips_supply_fpregset, mips_fill_fpregset, supply_64bit_reg) (mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset) (mips64_fill_fpregset, mips_linux_write_pc): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-nat.c (mips_linux_register_addr) (mips64_linux_register_addr): Replace current_gdbarch by gdbarch. (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips64obsd-tdep.c (mips64obsd_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info.
2007-10-10 19:04:38 +02:00
struct gdbarch *gdbarch = get_regcache_arch (regcache);
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
int is_fp, is_dsp;
int have_dsp;
int regi;
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
int tid;
2007-10-10 Markus Deuling <deuling@de.ibm.com> * remote-mips.c (mips_wait, mips_fetch_registers) (mips_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_fill_reg) (mipsnbsd_supply_fpreg, mipsnbsd_fill_fpreg): Use get_regcache_arch to get at the current architecture by regcache. (mipsnbsd_sigtramp_offset): Use get_frame_arch to get at the current architecture by frame_info. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers) (mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-tdep.c (mips_linux_get_longjmp_target) (mips64_linux_get_longjmp_target, mips_linux_o32_sigframe_init) (mips_linux_n32n64_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info. (supply_32bit_reg, mips_supply_gregset, mips_fill_gregset) (mips_supply_fpregset, mips_fill_fpregset, supply_64bit_reg) (mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset) (mips64_fill_fpregset, mips_linux_write_pc): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-nat.c (mips_linux_register_addr) (mips64_linux_register_addr): Replace current_gdbarch by gdbarch. (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips64obsd-tdep.c (mips64obsd_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info.
2007-10-10 19:04:38 +02:00
if (regno >= mips_regnum (gdbarch)->fp0
&& regno <= mips_regnum (gdbarch)->fp0 + 32)
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
is_fp = 1;
2007-10-10 Markus Deuling <deuling@de.ibm.com> * remote-mips.c (mips_wait, mips_fetch_registers) (mips_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_fill_reg) (mipsnbsd_supply_fpreg, mipsnbsd_fill_fpreg): Use get_regcache_arch to get at the current architecture by regcache. (mipsnbsd_sigtramp_offset): Use get_frame_arch to get at the current architecture by frame_info. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers) (mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-tdep.c (mips_linux_get_longjmp_target) (mips64_linux_get_longjmp_target, mips_linux_o32_sigframe_init) (mips_linux_n32n64_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info. (supply_32bit_reg, mips_supply_gregset, mips_fill_gregset) (mips_supply_fpregset, mips_fill_fpregset, supply_64bit_reg) (mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset) (mips64_fill_fpregset, mips_linux_write_pc): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-nat.c (mips_linux_register_addr) (mips64_linux_register_addr): Replace current_gdbarch by gdbarch. (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips64obsd-tdep.c (mips64obsd_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info.
2007-10-10 19:04:38 +02:00
else if (regno == mips_regnum (gdbarch)->fp_control_status)
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
is_fp = 1;
2007-10-10 Markus Deuling <deuling@de.ibm.com> * remote-mips.c (mips_wait, mips_fetch_registers) (mips_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mipsnbsd-tdep.c (mipsnbsd_supply_reg, mipsnbsd_fill_reg) (mipsnbsd_supply_fpreg, mipsnbsd_fill_fpreg): Use get_regcache_arch to get at the current architecture by regcache. (mipsnbsd_sigtramp_offset): Use get_frame_arch to get at the current architecture by frame_info. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers) (mipsnbsd_store_inferior_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-tdep.c (mips_linux_get_longjmp_target) (mips64_linux_get_longjmp_target, mips_linux_o32_sigframe_init) (mips_linux_n32n64_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info. (supply_32bit_reg, mips_supply_gregset, mips_fill_gregset) (mips_supply_fpregset, mips_fill_fpregset, supply_64bit_reg) (mips64_supply_gregset, mips64_fill_gregset, mips64_supply_fpregset) (mips64_fill_fpregset, mips_linux_write_pc): Use get_regcache_arch to get at the current architecture by regcache. * mips-linux-nat.c (mips_linux_register_addr) (mips64_linux_register_addr): Replace current_gdbarch by gdbarch. (supply_gregset, fill_gregset, supply_fpregset, fill_fpregset) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers): Use get_regcache_arch to get at the current architecture by regcache. * mips64obsd-tdep.c (mips64obsd_sigframe_init): Use get_frame_arch to get at the current architecture by frame_info.
2007-10-10 19:04:38 +02:00
else if (regno == mips_regnum (gdbarch)->fp_implementation_revision)
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
is_fp = 1;
else
is_fp = 0;
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
/* DSP registers are optional and not a part of any set. */
have_dsp = mips_regnum (gdbarch)->dspctl != -1;
if (!have_dsp)
is_dsp = 0;
if (regno >= mips_regnum (gdbarch)->dspacc
&& regno < mips_regnum (gdbarch)->dspacc + 6)
is_dsp = 1;
else if (regno == mips_regnum (gdbarch)->dspctl)
is_dsp = 1;
else
is_dsp = 0;
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
tid = ptid_get_lwp (inferior_ptid);
if (tid == 0)
tid = ptid_get_pid (inferior_ptid);
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
if (regno == -1 || (!is_fp && !is_dsp))
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
{
mips64_elf_gregset_t regs;
if (ptrace (PTRACE_GETREGS, tid, 0L, (PTRACE_TYPE_ARG3) &regs) == -1)
perror_with_name (_("Couldn't get registers"));
* target.h (struct regcache): Add forward declaration. (struct target_ops): Add REGCACHE parameter to to_fetch_registers and to_store_registers target operations. (target_fetch_registers, target_store_registers): Update. * regcache.c (regcache_raw_read): Replace register_cached by regcache_valid_p. Pass regcache to target_fetch_registers. (regcache_raw_write): Pass regcache to target_store_registers. * arm-linux-nat.c (store_fpregister, store_fpregs, store_register, store_regs, store_wmmx_regs): Replace register_cached by regcache_valid_p. * bsd-kvm.c (bsd_kvm_open, bsd_kvm_proc_cmd): Pass current_regcache to target_fetch_registers calls. * corelow.c (core_open): Likewise. * linux-nat.c (linux_nat_corefile_thread_callback): Likewise. * proc-service.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs, ps_lsetfpregs): Likewise. * sol-thread.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs, ps_lsetfpregs): Likewise. * win32-nat.c (win32_resume): Likewise. * ia64-tdep.c (ia64_store_return_value): Pass current_regcache to target_store_registers call. * rs6000-tdep.c (rs6000_push_dummy_call): Likewise. * inferior.h (store_inferior_registers): Update prototype. (fetch_inferior_registers): Likewise. * gnu-nat.c (gnu_store_registers, gnu_fetch_registers): Likewise. * mips-linux-nat.c (super_fetch_registers, super_store_registers): Update function pointer signatures. * aix-thread.c (aix_thread_fetch_registers): Add REGCACHE parameter, use it instead of current_regcache, update calls. (aix_thread_store_registers): Likewise. * alphabsd-nat.c (alphabsd_fetch_inferior_registers): Likewise. (alphabsd_store_inferior_registers): Likewise. * amd64bsd-nat.c (amd64bsd_fetch_inferior_registers): Likewise. (amd64bsd_store_inferior_registers): Likewise. * amd64-linux-nat.c (amd64_linux_fetch_inferior_registers): Likewise. (amd64_linux_store_inferior_registers): Likewise. * arm-linux-nat.c (fetch_fpregister, fetch_fpregs, store_fpregister, store_fpregs, fetch_register, fetch_regs, store_register, store_regs, fetch_wmmx_regs, store_wmmx_regs): Likewise. (arm_linux_fetch_inferior_registers): Likewise. (arm_linux_store_inferior_registers): Likewise. * armnbsd-nat.c (fetch_register, fetch_regs, fetch_fp_register, fetch_fp_regs, armnbsd_fetch_registers): Likewise. (store_register, store_regs, store_fp_register, store_fp_regs, armnbsd_store_registers): Likewise. * bsd-kvm.c (bsd_kvm_fetch_pcb, bsd_kvm_fetch_registers): Likewise. * bsd-uthread.c (bsd_uthread_fetch_registers): Likewise. (bsd_uthread_store_registers): Likewise. * corelow.c (get_core_registers): Likewise. * go32-nat.c (fetch_register, go32_fetch_registers, store_register, go32_store_registers): Likewise. * hppabsd-nat.c (hppabsd_fetch_registers): Likewise. (hppabsd_store_registers): Likewise. * hppa-hpux-nat.c (hppa_hpux_fetch_register): Likewise. (hppa_hpux_fetch_inferior_registers): Likewise. (hppa_hpux_store_register): Likewise. (hppa_hpux_store_inferior_registers): Likewise. * hppa-linux-nat.c (fetch_register, store_register): Likewise. (hppa_linux_fetch_inferior_registers): Likewise. (hppa_linux_store_inferior_registers): Likewise. * hpux-thread.c (hpux_thread_fetch_registers): Likewise. (hpux_thread_store_registers): Likewise. * i386bsd-nat.c (i386bsd_fetch_inferior_registers): Likewise. (i386bsd_store_inferior_registers): Likewise. * i386gnu-nat.c (fetch_fpregs, gnu_fetch_registers, store_fpregs, gnu_store_registers): Likewise. * i386-linux-nat.c (fetch_register, store_register, fetch_regs, store_regs, fetch_fpregs, store_fpregs, fetch_fpxregs, store_fpxregs): Likewise. (i386_linux_fetch_inferior_registers): Likewise. (i386_linux_store_inferior_registers): Likewise. * ia64-linux-nat.c (ia64_linux_fetch_register): Likewise. (ia64_linux_fetch_registers): Likewise. (ia64_linux_store_register): Likewise. (ia64_linux_store_registers): Likewise. * inf-child.c (inf_child_fetch_inferior_registers): Likewise. (inf_child_store_inferior_registers): Likewise. * inf-ptrace.c (inf_ptrace_fetch_register): Likewise. (inf_ptrace_fetch_registers): Likewise. (inf_ptrace_store_register): Likewise. (inf_ptrace_store_registers): Likewise. * infptrace.c (fetch_register, store_register): Likewise. (fetch_inferior_registers, store_inferior_registers): Likewise. * m32r-linux-nat.c (fetch_regs, store_regs): Likewise. (m32r_linux_fetch_inferior_registers): Likewise. (m32r_linux_store_inferior_registers): Likewise. * m68kbsd-nat.c (m68kbsd_fetch_inferior_registers): Likewise. (m68kbsd_store_inferior_registers): Likewise. * m68klinux-nat.c (fetch_register, old_fetch_inferior_registers, store_register, old_store_inferior_registers, fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise. (m68k_linux_fetch_inferior_registers): Likewise. (m68k_linux_store_inferior_registers): Likewise. * m88kbsd-nat.c (m88kbsd_fetch_inferior_registers): Likewise. (m88kbsd_store_inferior_registers): Likewise. * mips64obsd-nat.c (mips64obsd_fetch_inferior_registers): Likewise. (mips64obsd_store_inferior_registers): Likewise. * mips-linux-nat.c (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Likewise. (mips64_linux_store_registers): Likewise. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers): Likewise. (mipsnbsd_store_inferior_registers): Likewise. * monitor.c (monitor_fetch_register, monitor_store_register): Likewise. (monitor_fetch_registers, monitor_store_registers): Likewise. * nto-procfs.c (procfs_fetch_registers): Likewise. (procfs_store_registers): Likewise. * ppc-linux-nat.c (fetch_altivec_register, fetch_spe_register, fetch_register, supply_vrregset, fetch_altivec_registers, fetch_ppc_registers, ppc_linux_fetch_inferior_registers): Likewise. (store_altivec_register, store_spe_register, store_register, fill_vrregset, store_altivec_registers, store_ppc_registers, ppc_linux_store_inferior_registers): Likewise. * ppcnbsd-nat.c (ppcnbsd_fetch_inferior_registers): Likewise. (ppcnbsd_store_inferior_registers): Likewise. * ppcobsd-nat.c (ppcobsd_fetch_registers): Likewise. (ppcobsd_store_registers): Likewise. * procfs.c (procfs_fetch_registers, procfs_store_registers): Likewise. * remote.c (fetch_register_using_p, process_g_packet, fetch_registers_using_g, remote_fetch_registers): Likewise. (store_register_using_P, store_registers_using_G, remote_store_registers): Likewise. * remote-m32r-sdi.c (m32r_fetch_registers, m32r_fetch_register, m32r_store_register, m32r_store_register): Likewise. * remote-mips.c (mips_fetch_registers, mips_store_registers): Likewise. * remote-sim.c (gdbsim_fetch_register): Likewise. (gdbsim_store_register): Likewise. * rs6000-nat.c (fetch_register, store_register): Likewise. (rs6000_fetch_inferior_registers): Likewise. (rs6000_store_inferior_registers): Likewise. * s390-nat.c (fetch_regs, store_regs): Likewise. (fetch_fpregs, store_fpregs): Likewise. (s390_linux_fetch_inferior_registers): Likewise. (s390_linux_store_inferior_registers): Likewise. * shnbsd-nat.c (shnbsd_fetch_inferior_registers): Likewise. (shnbsd_store_inferior_registers): Likewise. * sol-thread.c (sol_thread_fetch_registers): Likewise. (sol_thread_store_registers): Likewise. * sparc-nat.c (fetch_inferior_registers): Likewise. (store_inferior_registers): Likewise. * spu-linux-nat.c (spu_fetch_inferior_registers): Likewise. (spu_store_inferior_registers): Likewise. * target.c (debug_print_register): Likewise. (debug_to_fetch_registers, debug_to_store_registers): Likewise. * vaxbsd-nat.c (vaxbsd_fetch_inferior_registers): Likewise. (vaxbsd_store_inferior_registers): Likewise. * win32-nat.c (do_win32_fetch_inferior_registers): Likewise. (win32_fetch_inferior_registers): Likewise. (win32_store_inferior_registers): Likewise.
2007-05-06 16:34:38 +02:00
mips64_fill_gregset (regcache, &regs, regno);
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
if (ptrace (PTRACE_SETREGS, tid, 0L, (PTRACE_TYPE_ARG3) &regs) == -1)
perror_with_name (_("Couldn't set registers"));
}
if (regno == -1 || is_fp)
{
mips64_elf_fpregset_t fp_regs;
if (ptrace (PTRACE_GETFPREGS, tid, 0L,
(PTRACE_TYPE_ARG3) &fp_regs) == -1)
perror_with_name (_("Couldn't get FP registers"));
* target.h (struct regcache): Add forward declaration. (struct target_ops): Add REGCACHE parameter to to_fetch_registers and to_store_registers target operations. (target_fetch_registers, target_store_registers): Update. * regcache.c (regcache_raw_read): Replace register_cached by regcache_valid_p. Pass regcache to target_fetch_registers. (regcache_raw_write): Pass regcache to target_store_registers. * arm-linux-nat.c (store_fpregister, store_fpregs, store_register, store_regs, store_wmmx_regs): Replace register_cached by regcache_valid_p. * bsd-kvm.c (bsd_kvm_open, bsd_kvm_proc_cmd): Pass current_regcache to target_fetch_registers calls. * corelow.c (core_open): Likewise. * linux-nat.c (linux_nat_corefile_thread_callback): Likewise. * proc-service.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs, ps_lsetfpregs): Likewise. * sol-thread.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs, ps_lsetfpregs): Likewise. * win32-nat.c (win32_resume): Likewise. * ia64-tdep.c (ia64_store_return_value): Pass current_regcache to target_store_registers call. * rs6000-tdep.c (rs6000_push_dummy_call): Likewise. * inferior.h (store_inferior_registers): Update prototype. (fetch_inferior_registers): Likewise. * gnu-nat.c (gnu_store_registers, gnu_fetch_registers): Likewise. * mips-linux-nat.c (super_fetch_registers, super_store_registers): Update function pointer signatures. * aix-thread.c (aix_thread_fetch_registers): Add REGCACHE parameter, use it instead of current_regcache, update calls. (aix_thread_store_registers): Likewise. * alphabsd-nat.c (alphabsd_fetch_inferior_registers): Likewise. (alphabsd_store_inferior_registers): Likewise. * amd64bsd-nat.c (amd64bsd_fetch_inferior_registers): Likewise. (amd64bsd_store_inferior_registers): Likewise. * amd64-linux-nat.c (amd64_linux_fetch_inferior_registers): Likewise. (amd64_linux_store_inferior_registers): Likewise. * arm-linux-nat.c (fetch_fpregister, fetch_fpregs, store_fpregister, store_fpregs, fetch_register, fetch_regs, store_register, store_regs, fetch_wmmx_regs, store_wmmx_regs): Likewise. (arm_linux_fetch_inferior_registers): Likewise. (arm_linux_store_inferior_registers): Likewise. * armnbsd-nat.c (fetch_register, fetch_regs, fetch_fp_register, fetch_fp_regs, armnbsd_fetch_registers): Likewise. (store_register, store_regs, store_fp_register, store_fp_regs, armnbsd_store_registers): Likewise. * bsd-kvm.c (bsd_kvm_fetch_pcb, bsd_kvm_fetch_registers): Likewise. * bsd-uthread.c (bsd_uthread_fetch_registers): Likewise. (bsd_uthread_store_registers): Likewise. * corelow.c (get_core_registers): Likewise. * go32-nat.c (fetch_register, go32_fetch_registers, store_register, go32_store_registers): Likewise. * hppabsd-nat.c (hppabsd_fetch_registers): Likewise. (hppabsd_store_registers): Likewise. * hppa-hpux-nat.c (hppa_hpux_fetch_register): Likewise. (hppa_hpux_fetch_inferior_registers): Likewise. (hppa_hpux_store_register): Likewise. (hppa_hpux_store_inferior_registers): Likewise. * hppa-linux-nat.c (fetch_register, store_register): Likewise. (hppa_linux_fetch_inferior_registers): Likewise. (hppa_linux_store_inferior_registers): Likewise. * hpux-thread.c (hpux_thread_fetch_registers): Likewise. (hpux_thread_store_registers): Likewise. * i386bsd-nat.c (i386bsd_fetch_inferior_registers): Likewise. (i386bsd_store_inferior_registers): Likewise. * i386gnu-nat.c (fetch_fpregs, gnu_fetch_registers, store_fpregs, gnu_store_registers): Likewise. * i386-linux-nat.c (fetch_register, store_register, fetch_regs, store_regs, fetch_fpregs, store_fpregs, fetch_fpxregs, store_fpxregs): Likewise. (i386_linux_fetch_inferior_registers): Likewise. (i386_linux_store_inferior_registers): Likewise. * ia64-linux-nat.c (ia64_linux_fetch_register): Likewise. (ia64_linux_fetch_registers): Likewise. (ia64_linux_store_register): Likewise. (ia64_linux_store_registers): Likewise. * inf-child.c (inf_child_fetch_inferior_registers): Likewise. (inf_child_store_inferior_registers): Likewise. * inf-ptrace.c (inf_ptrace_fetch_register): Likewise. (inf_ptrace_fetch_registers): Likewise. (inf_ptrace_store_register): Likewise. (inf_ptrace_store_registers): Likewise. * infptrace.c (fetch_register, store_register): Likewise. (fetch_inferior_registers, store_inferior_registers): Likewise. * m32r-linux-nat.c (fetch_regs, store_regs): Likewise. (m32r_linux_fetch_inferior_registers): Likewise. (m32r_linux_store_inferior_registers): Likewise. * m68kbsd-nat.c (m68kbsd_fetch_inferior_registers): Likewise. (m68kbsd_store_inferior_registers): Likewise. * m68klinux-nat.c (fetch_register, old_fetch_inferior_registers, store_register, old_store_inferior_registers, fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise. (m68k_linux_fetch_inferior_registers): Likewise. (m68k_linux_store_inferior_registers): Likewise. * m88kbsd-nat.c (m88kbsd_fetch_inferior_registers): Likewise. (m88kbsd_store_inferior_registers): Likewise. * mips64obsd-nat.c (mips64obsd_fetch_inferior_registers): Likewise. (mips64obsd_store_inferior_registers): Likewise. * mips-linux-nat.c (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Likewise. (mips64_linux_store_registers): Likewise. * mipsnbsd-nat.c (mipsnbsd_fetch_inferior_registers): Likewise. (mipsnbsd_store_inferior_registers): Likewise. * monitor.c (monitor_fetch_register, monitor_store_register): Likewise. (monitor_fetch_registers, monitor_store_registers): Likewise. * nto-procfs.c (procfs_fetch_registers): Likewise. (procfs_store_registers): Likewise. * ppc-linux-nat.c (fetch_altivec_register, fetch_spe_register, fetch_register, supply_vrregset, fetch_altivec_registers, fetch_ppc_registers, ppc_linux_fetch_inferior_registers): Likewise. (store_altivec_register, store_spe_register, store_register, fill_vrregset, store_altivec_registers, store_ppc_registers, ppc_linux_store_inferior_registers): Likewise. * ppcnbsd-nat.c (ppcnbsd_fetch_inferior_registers): Likewise. (ppcnbsd_store_inferior_registers): Likewise. * ppcobsd-nat.c (ppcobsd_fetch_registers): Likewise. (ppcobsd_store_registers): Likewise. * procfs.c (procfs_fetch_registers, procfs_store_registers): Likewise. * remote.c (fetch_register_using_p, process_g_packet, fetch_registers_using_g, remote_fetch_registers): Likewise. (store_register_using_P, store_registers_using_G, remote_store_registers): Likewise. * remote-m32r-sdi.c (m32r_fetch_registers, m32r_fetch_register, m32r_store_register, m32r_store_register): Likewise. * remote-mips.c (mips_fetch_registers, mips_store_registers): Likewise. * remote-sim.c (gdbsim_fetch_register): Likewise. (gdbsim_store_register): Likewise. * rs6000-nat.c (fetch_register, store_register): Likewise. (rs6000_fetch_inferior_registers): Likewise. (rs6000_store_inferior_registers): Likewise. * s390-nat.c (fetch_regs, store_regs): Likewise. (fetch_fpregs, store_fpregs): Likewise. (s390_linux_fetch_inferior_registers): Likewise. (s390_linux_store_inferior_registers): Likewise. * shnbsd-nat.c (shnbsd_fetch_inferior_registers): Likewise. (shnbsd_store_inferior_registers): Likewise. * sol-thread.c (sol_thread_fetch_registers): Likewise. (sol_thread_store_registers): Likewise. * sparc-nat.c (fetch_inferior_registers): Likewise. (store_inferior_registers): Likewise. * spu-linux-nat.c (spu_fetch_inferior_registers): Likewise. (spu_store_inferior_registers): Likewise. * target.c (debug_print_register): Likewise. (debug_to_fetch_registers, debug_to_store_registers): Likewise. * vaxbsd-nat.c (vaxbsd_fetch_inferior_registers): Likewise. (vaxbsd_store_inferior_registers): Likewise. * win32-nat.c (do_win32_fetch_inferior_registers): Likewise. (win32_fetch_inferior_registers): Likewise. (win32_store_inferior_registers): Likewise.
2007-05-06 16:34:38 +02:00
mips64_fill_fpregset (regcache, &fp_regs, regno);
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
if (ptrace (PTRACE_SETFPREGS, tid, 0L,
(PTRACE_TYPE_ARG3) &fp_regs) == -1)
perror_with_name (_("Couldn't set FP registers"));
}
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
if (is_dsp)
super_store_registers (ops, regcache, regno);
else if (regno == -1 && have_dsp)
{
for (regi = mips_regnum (gdbarch)->dspacc;
regi < mips_regnum (gdbarch)->dspacc + 6;
regi++)
super_store_registers (ops, regcache, regi);
super_store_registers (ops, regcache, mips_regnum (gdbarch)->dspctl);
}
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
}
/* Fetch REGNO (or all registers if REGNO == -1) from the target
using any working method. */
static void
* corelow.c (get_core_registers): Adjust. (core_file_thread_alive): Rename to... (core_thread_alive): ... this. (core_pid_to_str): Try gdbarch_core_pid_to_str first. (init_core_ops): Adjust. (coreops_suppress_target): Delete. (_initialize_corelow): Unconditionally add core_ops. * procfs.c: Include "inf-child.h". (procfs_ops): Delete. (init_procfs_ops): Delete. Reimplement as... (procfs_target): ... this, inheriting from inf-child. (procfs_attach, procfs_detach, procfs_fetch_registers): Adjust. (procfs_prepare_to_store): Delete. (procfs_store_registers, procfs_resume): Adjust. (procfs_open): Delete. (procfs_suppress_run): Delete. (procfs_can_run): Delete. (procfs_mourn_inferior): Adjust. (procfs_init_inferior): Add target_ops parameter. Adjust. (procfs_create_inferior): Don't pass procfs_init_inferior to fork_inferior. Instead call it after fork_inferior returns. (procfs_find_new_threads): Adjust. (_initialize_procfs): Adjust to use procfs_target instead of init_procfs_ops. * sol-thread.c (orig_core_ops, sol_core_ops): Delete. (lwp_to_thread): Use target_thread_alive. (sol_thread_open): Delete. (sol_thread_attach): Delete. (sol_thread_detach, sol_thread_resume, sol_thread_wait) (sol_thread_fetch_registers, sol_thread_store_registers): Adjust to use find_target_beneath. (sol_thread_prepare_to_store, sol_thread_xfer_memory): Delete. (sol_thread_xfer_partial): Adjust to use find_target_beneath. (sol_thread_files_info, sol_thread_kill_inferior): Delete. (check_for_thread_db): New. (sol_thread_notice_signals, sol_thread_create_inferior): Delete. (sol_thread_new_objfile): Call check_for_thread_db. (sol_thread_mourn_inferior): Adjust to use find_target_beneath. (sol_thread_can_run): Delete. (sol_thread_alive): Adjust to use find_target_beneath. (sol_thread_stop): Delete. (rw_common): Use target_write_memory or target_read_memory. (ps_lgetregs, ps_lgetfpregs): Use target_fetch_registers. (ps_lsetregs, ps_lsetfpregs): Use target_store_registers. (solaris_pid_to_str): Remove check for libthread_db initialization failing. (sol_find_new_threads): Remove check for libthread_db initialization failing, or for an invalid inferior_ptid. Adjust to use find_target_beneath. (sol_core_open, sol_core_close, sol_core_detach, sol_core_files_info, sol_find_memory_regions, sol_make_note_section, ignore): Delete. (init_sol_thread_ops): Make it a thread_stratum target. Remove unneeded callback settings. (init_sol_core_ops): Delete. (_initialize_sol_thread): No longer call init_sol_core_ops, set procfs_suppress_run, or hack with core_ops. * target.h (struct target_ops): Add a target_ops * parameter to to_resume, to_fetch_registers, to_store_registers, to_thread_alive and to_find_new_threads. (target_fetch_registers, target_store_registers) (target_thread_alive, target_find_new_threads): Redeclare as function. * target.c (update_current_target): Do not inherit or de_fault to_resume, to_fetch_registers, to_store_registers, to_thread_alive, to_find_new_threads. (target_resume): Adjust. (target_thread_alive, target_find_new_threads): New. (debug_to_resume, debug_to_fetch_registers): Delete. (target_fetch_registers): New. (debug_to_store_registers): Delete. (target_store_registers): New. (debug_to_thread_alive, debug_to_find_new_threads): Delete. (setup_target_debug): Adjust. * gdbcore.h (core_ops): Delete declaration. * inf-ptrace.c, linux-nat.c, remote.c, amd64-linux-nat.c, inf-child.c, linux-thread-db.c, bsd-uthread.c, inf-ttrace.c, i386-sol2-tdep.c, darwin-nat.c, gnu-nat.c, go32-nat.c, hpux-thread.c, i386-linux-nat.c, i386fbsd-nat.c, monitor.c, nto-procfs.c, remote-m32r-sdi.c, remote-mips.c, windows-nat.c, alphabsd-nat.c, amd64bsd-nat.c, arm-linux-nat.c, armnbsd-nat.c, bsd-kvm.c, hppa-hpux-nat.c, hppa-linux-nat.c, hppabsd-nat.c, hppanbsd-nat.c, i386-darwin-nat.c, i386bsd-nat.c, ia64-linux-nat.c, m32r-linux-nat.c, m68kbsd-nat.c, m68klinux-nat.c, m88kbsd-nat.c, mips-linux-nat.c, mips64obsd-nat.c, mipsnbsd-nat.c, ppc-linux-nat.c, ppcnbsd-nat.c, ppcobsd-nat.c, remote-sim.c, rs6000-nat.c, s390-nat.c, shnbsd-nat.c, sparc-nat.c, sparc-nat.h, spu-linux-nat.c, vaxbsd-nat.c, xtensa-linux-nat.c: Adjust to target_ops changes. * gdbarch.sh (core_pid_to_str): New gdbarch callback. * gdbarch.h, gdbarch.c: Regenerate. * sol2-tdep.c: Include "inferior.h". (sol2_core_pid_to_str): New. * sol2-tdep.h (sol2_core_pid_to_str): Declare. * amd64-sol2-tdep.c (amd64_sol2_init_abi): Set it. * sparc-sol2-tdep.c (sparc32_sol2_init_abi): Set it. * sparc64-sol2-tdep.c (sparc64_sol2_init_abi): Set it. * i386-sol2-tdep.c (i386_sol2_init_abi): Set it.
2009-02-23 01:03:50 +01:00
mips64_linux_fetch_registers (struct target_ops *ops,
struct regcache *regcache, int regnum)
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
{
/* Unless we already know that PTRACE_GETREGS does not work, try it. */
if (have_ptrace_regsets)
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
mips64_linux_regsets_fetch_registers (ops, regcache, regnum);
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
/* If we know, or just found out, that PTRACE_GETREGS does not work, fall
back to PTRACE_PEEKUSER. */
if (!have_ptrace_regsets)
super_fetch_registers (ops, regcache, regnum);
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
}
/* Store REGNO (or all registers if REGNO == -1) to the target
using any working method. */
static void
* corelow.c (get_core_registers): Adjust. (core_file_thread_alive): Rename to... (core_thread_alive): ... this. (core_pid_to_str): Try gdbarch_core_pid_to_str first. (init_core_ops): Adjust. (coreops_suppress_target): Delete. (_initialize_corelow): Unconditionally add core_ops. * procfs.c: Include "inf-child.h". (procfs_ops): Delete. (init_procfs_ops): Delete. Reimplement as... (procfs_target): ... this, inheriting from inf-child. (procfs_attach, procfs_detach, procfs_fetch_registers): Adjust. (procfs_prepare_to_store): Delete. (procfs_store_registers, procfs_resume): Adjust. (procfs_open): Delete. (procfs_suppress_run): Delete. (procfs_can_run): Delete. (procfs_mourn_inferior): Adjust. (procfs_init_inferior): Add target_ops parameter. Adjust. (procfs_create_inferior): Don't pass procfs_init_inferior to fork_inferior. Instead call it after fork_inferior returns. (procfs_find_new_threads): Adjust. (_initialize_procfs): Adjust to use procfs_target instead of init_procfs_ops. * sol-thread.c (orig_core_ops, sol_core_ops): Delete. (lwp_to_thread): Use target_thread_alive. (sol_thread_open): Delete. (sol_thread_attach): Delete. (sol_thread_detach, sol_thread_resume, sol_thread_wait) (sol_thread_fetch_registers, sol_thread_store_registers): Adjust to use find_target_beneath. (sol_thread_prepare_to_store, sol_thread_xfer_memory): Delete. (sol_thread_xfer_partial): Adjust to use find_target_beneath. (sol_thread_files_info, sol_thread_kill_inferior): Delete. (check_for_thread_db): New. (sol_thread_notice_signals, sol_thread_create_inferior): Delete. (sol_thread_new_objfile): Call check_for_thread_db. (sol_thread_mourn_inferior): Adjust to use find_target_beneath. (sol_thread_can_run): Delete. (sol_thread_alive): Adjust to use find_target_beneath. (sol_thread_stop): Delete. (rw_common): Use target_write_memory or target_read_memory. (ps_lgetregs, ps_lgetfpregs): Use target_fetch_registers. (ps_lsetregs, ps_lsetfpregs): Use target_store_registers. (solaris_pid_to_str): Remove check for libthread_db initialization failing. (sol_find_new_threads): Remove check for libthread_db initialization failing, or for an invalid inferior_ptid. Adjust to use find_target_beneath. (sol_core_open, sol_core_close, sol_core_detach, sol_core_files_info, sol_find_memory_regions, sol_make_note_section, ignore): Delete. (init_sol_thread_ops): Make it a thread_stratum target. Remove unneeded callback settings. (init_sol_core_ops): Delete. (_initialize_sol_thread): No longer call init_sol_core_ops, set procfs_suppress_run, or hack with core_ops. * target.h (struct target_ops): Add a target_ops * parameter to to_resume, to_fetch_registers, to_store_registers, to_thread_alive and to_find_new_threads. (target_fetch_registers, target_store_registers) (target_thread_alive, target_find_new_threads): Redeclare as function. * target.c (update_current_target): Do not inherit or de_fault to_resume, to_fetch_registers, to_store_registers, to_thread_alive, to_find_new_threads. (target_resume): Adjust. (target_thread_alive, target_find_new_threads): New. (debug_to_resume, debug_to_fetch_registers): Delete. (target_fetch_registers): New. (debug_to_store_registers): Delete. (target_store_registers): New. (debug_to_thread_alive, debug_to_find_new_threads): Delete. (setup_target_debug): Adjust. * gdbcore.h (core_ops): Delete declaration. * inf-ptrace.c, linux-nat.c, remote.c, amd64-linux-nat.c, inf-child.c, linux-thread-db.c, bsd-uthread.c, inf-ttrace.c, i386-sol2-tdep.c, darwin-nat.c, gnu-nat.c, go32-nat.c, hpux-thread.c, i386-linux-nat.c, i386fbsd-nat.c, monitor.c, nto-procfs.c, remote-m32r-sdi.c, remote-mips.c, windows-nat.c, alphabsd-nat.c, amd64bsd-nat.c, arm-linux-nat.c, armnbsd-nat.c, bsd-kvm.c, hppa-hpux-nat.c, hppa-linux-nat.c, hppabsd-nat.c, hppanbsd-nat.c, i386-darwin-nat.c, i386bsd-nat.c, ia64-linux-nat.c, m32r-linux-nat.c, m68kbsd-nat.c, m68klinux-nat.c, m88kbsd-nat.c, mips-linux-nat.c, mips64obsd-nat.c, mipsnbsd-nat.c, ppc-linux-nat.c, ppcnbsd-nat.c, ppcobsd-nat.c, remote-sim.c, rs6000-nat.c, s390-nat.c, shnbsd-nat.c, sparc-nat.c, sparc-nat.h, spu-linux-nat.c, vaxbsd-nat.c, xtensa-linux-nat.c: Adjust to target_ops changes. * gdbarch.sh (core_pid_to_str): New gdbarch callback. * gdbarch.h, gdbarch.c: Regenerate. * sol2-tdep.c: Include "inferior.h". (sol2_core_pid_to_str): New. * sol2-tdep.h (sol2_core_pid_to_str): Declare. * amd64-sol2-tdep.c (amd64_sol2_init_abi): Set it. * sparc-sol2-tdep.c (sparc32_sol2_init_abi): Set it. * sparc64-sol2-tdep.c (sparc64_sol2_init_abi): Set it. * i386-sol2-tdep.c (i386_sol2_init_abi): Set it.
2009-02-23 01:03:50 +01:00
mips64_linux_store_registers (struct target_ops *ops,
struct regcache *regcache, int regnum)
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
{
/* Unless we already know that PTRACE_GETREGS does not work, try it. */
if (have_ptrace_regsets)
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
mips64_linux_regsets_store_registers (ops, regcache, regnum);
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
/* If we know, or just found out, that PTRACE_GETREGS does not work, fall
back to PTRACE_PEEKUSER. */
if (!have_ptrace_regsets)
super_store_registers (ops, regcache, regnum);
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
}
* linux-nat.c (linux_register_u_offset): Remove. (linux_target_install_ops): New function. (linux_target): Use it. (linux_trad_target): New function. * linux-nat.h (linux_trad_target): Declare. * alpha-linux-nat.c: Include "gdbcore.h". (alpha_linux_register_u_offset): New function. (_initialize_alpha_linux_nat): Use linux_trad_target. * mips-linux-nat.c: Include "gdbcore.h". (mips_linux_register_u_offset): New function. (_initialize_mips_linux_nat): Use linux_trad_target. * config/arm/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/arm/nm-linux.h: Delete file. * config/i386/nm-linux64.h (FETCH_INFERIOR_REGISTERS): Remove. * config/i386/nm-linux.h (FETCH_INFERIOR_REGISTERS): Remove. * config/ia64/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/ia64/nm-linux.h: Delete file. * config/m32r/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/m32r/nm-linux.h: Delete file. * config/m68k/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/m68k/nm-linux.h: Delete file. * config/pa/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/pa/nm-linux.h: Delete file. * config/powerpc/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/powerpc/ppc64-linux.mh (NAT_FILE): Likewise. * config/powerpc/nm-linux.h: Delete file. * config/s390/s390.mh (NAT_FILE): Set to config/nm-linux.h. * config/s390/nm-linux.h: Delete file. * config/sparc/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/sparc/linux64.mh (NAT_FILE): Likewise. * config/sparc/nm-linux.h: Delete file. * Makefile.in (alpha-linux-nat.o): Update dependencies. (mips-linux-nat.o): Likewise.
2007-04-26 00:17:48 +02:00
/* Return the address in the core dump or inferior of register
REGNO. */
static CORE_ADDR
mips_linux_register_u_offset (struct gdbarch *gdbarch, int regno, int store_p)
* linux-nat.c (linux_register_u_offset): Remove. (linux_target_install_ops): New function. (linux_target): Use it. (linux_trad_target): New function. * linux-nat.h (linux_trad_target): Declare. * alpha-linux-nat.c: Include "gdbcore.h". (alpha_linux_register_u_offset): New function. (_initialize_alpha_linux_nat): Use linux_trad_target. * mips-linux-nat.c: Include "gdbcore.h". (mips_linux_register_u_offset): New function. (_initialize_mips_linux_nat): Use linux_trad_target. * config/arm/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/arm/nm-linux.h: Delete file. * config/i386/nm-linux64.h (FETCH_INFERIOR_REGISTERS): Remove. * config/i386/nm-linux.h (FETCH_INFERIOR_REGISTERS): Remove. * config/ia64/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/ia64/nm-linux.h: Delete file. * config/m32r/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/m32r/nm-linux.h: Delete file. * config/m68k/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/m68k/nm-linux.h: Delete file. * config/pa/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/pa/nm-linux.h: Delete file. * config/powerpc/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/powerpc/ppc64-linux.mh (NAT_FILE): Likewise. * config/powerpc/nm-linux.h: Delete file. * config/s390/s390.mh (NAT_FILE): Set to config/nm-linux.h. * config/s390/nm-linux.h: Delete file. * config/sparc/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/sparc/linux64.mh (NAT_FILE): Likewise. * config/sparc/nm-linux.h: Delete file. * Makefile.in (alpha-linux-nat.o): Update dependencies. (mips-linux-nat.o): Likewise.
2007-04-26 00:17:48 +02:00
{
if (mips_abi_regsize (gdbarch) == 8)
return mips64_linux_register_addr (gdbarch, regno, store_p);
else
return mips_linux_register_addr (gdbarch, regno, store_p);
* linux-nat.c (linux_register_u_offset): Remove. (linux_target_install_ops): New function. (linux_target): Use it. (linux_trad_target): New function. * linux-nat.h (linux_trad_target): Declare. * alpha-linux-nat.c: Include "gdbcore.h". (alpha_linux_register_u_offset): New function. (_initialize_alpha_linux_nat): Use linux_trad_target. * mips-linux-nat.c: Include "gdbcore.h". (mips_linux_register_u_offset): New function. (_initialize_mips_linux_nat): Use linux_trad_target. * config/arm/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/arm/nm-linux.h: Delete file. * config/i386/nm-linux64.h (FETCH_INFERIOR_REGISTERS): Remove. * config/i386/nm-linux.h (FETCH_INFERIOR_REGISTERS): Remove. * config/ia64/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/ia64/nm-linux.h: Delete file. * config/m32r/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/m32r/nm-linux.h: Delete file. * config/m68k/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/m68k/nm-linux.h: Delete file. * config/pa/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/pa/nm-linux.h: Delete file. * config/powerpc/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/powerpc/ppc64-linux.mh (NAT_FILE): Likewise. * config/powerpc/nm-linux.h: Delete file. * config/s390/s390.mh (NAT_FILE): Set to config/nm-linux.h. * config/s390/nm-linux.h: Delete file. * config/sparc/linux.mh (NAT_FILE): Set to config/nm-linux.h. * config/sparc/linux64.mh (NAT_FILE): Likewise. * config/sparc/nm-linux.h: Delete file. * Makefile.in (alpha-linux-nat.o): Update dependencies. (mips-linux-nat.o): Likewise.
2007-04-26 00:17:48 +02:00
}
static const struct target_desc *
mips_linux_read_description (struct target_ops *ops)
{
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
static int have_dsp = -1;
if (have_dsp < 0)
{
int tid;
tid = ptid_get_lwp (inferior_ptid);
if (tid == 0)
tid = ptid_get_pid (inferior_ptid);
ptrace (PTRACE_PEEKUSER, tid, DSP_CONTROL, 0);
switch (errno)
{
case 0:
have_dsp = 1;
break;
case EIO:
have_dsp = 0;
break;
default:
perror_with_name (_("Couldn't check DSP support"));
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
break;
}
}
/* Report that target registers are a size we know for sure
that we can get from ptrace. */
if (_MIPS_SIM == _ABIO32)
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
return have_dsp ? tdesc_mips_dsp_linux : tdesc_mips_linux;
else
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
return have_dsp ? tdesc_mips64_dsp_linux : tdesc_mips64_linux;
}
#ifndef PTRACE_GET_WATCH_REGS
# define PTRACE_GET_WATCH_REGS 0xd0
#endif
#ifndef PTRACE_SET_WATCH_REGS
# define PTRACE_SET_WATCH_REGS 0xd1
#endif
#define W_BIT 0
#define R_BIT 1
#define I_BIT 2
#define W_MASK (1 << W_BIT)
#define R_MASK (1 << R_BIT)
#define I_MASK (1 << I_BIT)
#define IRW_MASK (I_MASK | R_MASK | W_MASK)
enum pt_watch_style {
pt_watch_style_mips32,
pt_watch_style_mips64
};
#define MAX_DEBUG_REGISTER 8
/* A value of zero in a watchlo indicates that it is available. */
struct mips32_watch_regs
{
uint32_t watchlo[MAX_DEBUG_REGISTER];
/* Lower 16 bits of watchhi. */
uint16_t watchhi[MAX_DEBUG_REGISTER];
/* Valid mask and I R W bits.
* bit 0 -- 1 if W bit is usable.
* bit 1 -- 1 if R bit is usable.
* bit 2 -- 1 if I bit is usable.
* bits 3 - 11 -- Valid watchhi mask bits.
*/
uint16_t watch_masks[MAX_DEBUG_REGISTER];
/* The number of valid watch register pairs. */
uint32_t num_valid;
/* There is confusion across gcc versions about structure alignment,
so we force 8 byte alignment for these structures so they match
the kernel even if it was build with a different gcc version. */
} __attribute__ ((aligned (8)));
struct mips64_watch_regs
{
uint64_t watchlo[MAX_DEBUG_REGISTER];
uint16_t watchhi[MAX_DEBUG_REGISTER];
uint16_t watch_masks[MAX_DEBUG_REGISTER];
uint32_t num_valid;
} __attribute__ ((aligned (8)));
struct pt_watch_regs
{
enum pt_watch_style style;
union
{
struct mips32_watch_regs mips32;
struct mips64_watch_regs mips64;
};
};
/* -1 if the kernel and/or CPU do not support watch registers.
1 if watch_readback is valid and we can read style, num_valid
and the masks.
0 if we need to read the watch_readback. */
static int watch_readback_valid;
/* Cached watch register read values. */
static struct pt_watch_regs watch_readback;
/* We keep list of all watchpoints we should install and calculate the
watch register values each time the list changes. This allows for
easy sharing of watch registers for more than one watchpoint. */
struct mips_watchpoint
{
CORE_ADDR addr;
int len;
int type;
struct mips_watchpoint *next;
};
static struct mips_watchpoint *current_watches;
/* The current set of watch register values for writing the
registers. */
static struct pt_watch_regs watch_mirror;
/* Assuming usable watch registers, return the irw_mask. */
static uint32_t
get_irw_mask (struct pt_watch_regs *regs, int set)
{
switch (regs->style)
{
case pt_watch_style_mips32:
return regs->mips32.watch_masks[set] & IRW_MASK;
case pt_watch_style_mips64:
return regs->mips64.watch_masks[set] & IRW_MASK;
default:
internal_error (__FILE__, __LINE__,
_("Unrecognized watch register style"));
}
}
/* Assuming usable watch registers, return the reg_mask. */
static uint32_t
get_reg_mask (struct pt_watch_regs *regs, int set)
{
switch (regs->style)
{
case pt_watch_style_mips32:
return regs->mips32.watch_masks[set] & ~IRW_MASK;
case pt_watch_style_mips64:
return regs->mips64.watch_masks[set] & ~IRW_MASK;
default:
internal_error (__FILE__, __LINE__,
_("Unrecognized watch register style"));
}
}
/* Assuming usable watch registers, return the num_valid. */
static uint32_t
get_num_valid (struct pt_watch_regs *regs)
{
switch (regs->style)
{
case pt_watch_style_mips32:
return regs->mips32.num_valid;
case pt_watch_style_mips64:
return regs->mips64.num_valid;
default:
internal_error (__FILE__, __LINE__,
_("Unrecognized watch register style"));
}
}
/* Assuming usable watch registers, return the watchlo. */
static CORE_ADDR
get_watchlo (struct pt_watch_regs *regs, int set)
{
switch (regs->style)
{
case pt_watch_style_mips32:
return regs->mips32.watchlo[set];
case pt_watch_style_mips64:
return regs->mips64.watchlo[set];
default:
internal_error (__FILE__, __LINE__,
_("Unrecognized watch register style"));
}
}
/* Assuming usable watch registers, set a watchlo value. */
static void
set_watchlo (struct pt_watch_regs *regs, int set, CORE_ADDR value)
{
switch (regs->style)
{
case pt_watch_style_mips32:
/* The cast will never throw away bits as 64 bit addresses can
never be used on a 32 bit kernel. */
regs->mips32.watchlo[set] = (uint32_t)value;
break;
case pt_watch_style_mips64:
regs->mips64.watchlo[set] = value;
break;
default:
internal_error (__FILE__, __LINE__,
_("Unrecognized watch register style"));
}
}
/* Assuming usable watch registers, return the watchhi. */
static uint32_t
get_watchhi (struct pt_watch_regs *regs, int n)
{
switch (regs->style)
{
case pt_watch_style_mips32:
return regs->mips32.watchhi[n];
case pt_watch_style_mips64:
return regs->mips64.watchhi[n];
default:
internal_error (__FILE__, __LINE__,
_("Unrecognized watch register style"));
}
}
/* Assuming usable watch registers, set a watchhi value. */
static void
set_watchhi (struct pt_watch_regs *regs, int n, uint16_t value)
{
switch (regs->style)
{
case pt_watch_style_mips32:
regs->mips32.watchhi[n] = value;
break;
case pt_watch_style_mips64:
regs->mips64.watchhi[n] = value;
break;
default:
internal_error (__FILE__, __LINE__,
_("Unrecognized watch register style"));
}
}
static void
mips_show_dr (const char *func, CORE_ADDR addr,
int len, enum target_hw_bp_type type)
{
int i;
puts_unfiltered (func);
if (addr || len)
* defs.h (strlen_paddr, paddr, paddr_nz): Remove. (paddress): Add GDBARCH parameter. * utils.c (strlen_paddr, paddr, paddr_nz): Remove. (paddress): Add GDBARCH parameter, use it instead of current_gdbarch. * ui-out.h (ui_out_field_core_addr): Add GDBARCH parameter. * ui-out.c (ui_out_field_core_addr): Add GDBARCH parameter, use it instead of current_gdbarch. Update calls to ui_out_field_core_addr to pass architecture: * ada-lang.c (print_one_exception): Update. * breakpoint.c (print_one_breakpoint_location, print_one_exception_catchpoint): Update. * disasm.c (dump_insns): Update. * darwin-nat-info.c (darwin_debug_regions_recurse): Update. * mi/mi-main.c (mi_cmd_data_read_memory): Update. * mi/mi-symbol-cmds.c: Include "objfiles.h". (mi_cmd_symbol_list_lines): Update. * stack.c (print_frame_info, print_frame): Update. Update callers of paddress to pass architecture: * ada-tasks.c (info_task): Update. * ada-valprint.c (ada_val_print_1): Update. * annotate.c (annotate_source, annotate_frame_begin): Update. * breakpoint.c (insert_bp_location, describe_other_breakpoints, mention): Update. * cli/cli-cmds.c (edit_command, list_command, print_disassembly): Update. * corefile.c (memory_error): Update. * c-valprint.c (print_function_pointer_address, c_val_print): Update. * disasm.c (dis_asm_print_address): Update. * exec.c (print_section_info): Update. * f-valprint.c (f_val_print): Update. * infcmd.c: Include "arch-utils.h". (jump_command, program_info): Update. * linux-fork.c: Include "arch-utils.h". (info_forks_command): Update. * m2-valprint.c (print_function_pointer_address, print_unpacked_pointer, print_variable_at_address, m2_val_print): Update. * m32r-rom.c (m32r_load_section, m32r_load, m32r_upload_command): Update. * printcmd.c (print_address, print_address_demangle, address_info): Update. * p-valprint.c (pascal_val_print): Update. * source.c: Include "arch-utils.h". (line_info): Update. * stack.c (frame_info, print_block_frame_labels): Update. * symfile.c (add_symbol_file_command, list_overlays_command): Update. * symmisc.c (dump_msymbols, dump_psymtab, dump_symtab_1, print_symbol, print_partial_symbols, maintenance_info_psymtabs, maintenance_check_symtabs): Update. * symtab.c (find_pc_sect_symtab): Update. * target.c (deprecated_debug_xfer_memory): Update. * tracepoint.c (scope_info): Update. * tui/tui-stack.c (tui_make_status_line): Update. * valprint.c (val_print_string): Update. Update callers of paddr_nz to use paddress instead (keeping user-visible output identical): * alpha-tdep.c (alpha_heuristic_proc_start): Update. * amd64-tdep.c (fixup_riprel, amd64_displaced_step_copy_insn, amd64_displaced_step_fixup): Update. * arch-utils.c (simple_displaced_step_copy_insn): Update. * auxv.c (fprint_target_auxv): Update. * breakpoint.c (insert_single_step_breakpoint): Update. * buildsym.c (finish_block): Update. * cli/cli-dump.c (restore_section_callback): Update. * fbsd-nat.c (fbsd_find_memory_regions): Update. * frame.c (frame_unwind_register_value): Update. * gcore.c (gcore_create_callback): Update. * hppa-tdep.c (hppa_frame_cache, hppa_skip_trampoline_code): Update. * i386-tdep.c (i386_displaced_step_fixup, i386_record_modrm, i386_record_lea_modrm_addr, i386_record_lea_modrm, i386_process_record): Update. * ia64-tdep.c (ia64_frame_this_id, ia64_sigtramp_frame_this_id, ia64_libunwind_frame_this_id, ia64_libunwind_sigtramp_frame_this_id, ia64_dummy_id, ia64_access_reg, ia64_access_rse_reg): Update. * infrun.c (displaced_step_prepare, displaced_step_fixup, handle_inferior_event, insert_step_resume_breakpoint_at_sal, insert_longjmp_resume_breakpoint): Update. * linux-nat.c (linux_nat_find_memory_regions): Update. * linux-record.c (record_linux_system_call): Update. * mips-tdep.c (heuristic_proc_start, mips_eabi_push_dummy_call, mips_n32n64_push_dummy_call, mips_o32_push_dummy_call, mips_o64_push_dummy_call): Update. * monitor.c (monitor_error, monitor_remove_breakpoint): Update. * record.c (record_arch_list_add_mem, record_wait, record_xfer_partial): Update. * remote-mips.c (mips_fetch_word, mips_check_lsi_error, mips_common_breakpoint): Update. * remote-sim.c (gdbsim_xfer_inferior_memory): Update. * rs6000-tdep.c (ppc_displaced_step_fixup): Update. * solib-som.c (som_current_sos): Update. * symfile.c (load_progress, generic_load): Update. * symfile-mem.c (add_vsyscall_page): Update. * valops.c (value_fetch_lazy): Update. * windows-tdep.c (windows_xfer_shared_library): Update. Update callers of paddr_nz to use paddress instead (changing user-visible output to make it more correct): * dwarf2loc.c (locexpr_describe_location): Update. * ia64-tdep.c (ia64_memory_insert_breakpoint, ia64_memory_remove_breakpoint): Update. * jv-valprint.c (java_value_print): Update. * m32c-tdep.c (m32c_m16c_address_to_pointer): Update. * monitor.c (monitor_read_memory): Update. Update callers of paddr to use paddress instead (changing user-visible output to make it more correct): * arm-tdep.c (arm_push_dummy_call): Update. * breakpoint.c (insert_bp_location, create_thread_event_breakpoint, create_breakpoint): Update. * darwin-nat-info.c (darwin_debug_regions): Update. * dcache.c (dcache_info): Update. * dsrec.c (load_srec, make_srec): Update. * dwarf2-frame.c (dwarf2_restore_rule, execute_cfa_program, dwarf2_frame_cache): Update. * gcore.c (gcore_copy_callback): Update. * gnu-nat.c (gnu_xfer_memory): Update. * mips-linux-nat.c (mips_show_dr): Update. * monitor.c (monitor_write_memory, monitor_insert_breakpoint, monitor_remove_breakpoint): Update. * remote.c (compare_sections_command): Update. * remote-m32r-sdi.c (m32r_xfer_memory, m32r_insert_breakpoint, m32r_remove_breakpoint, m32r_insert_watchpoint, m32r_remove_watchpoint): Update. * sol-thread.c (info_cb): Update. * symfile.c (load_progress): Update. Update callers of paddress or paddr_nz to use hex_string instead (changes output of internal/error/debug messages only): * dwarf2read.c (dump_die_shallow): Update. * frame.c (fprint_field, fprint_frame, frame_pc_unwind, get_frame_func, create_new_frame): Update. * hppa-tdep.c (find_unwind_entry, unwind_command): Update. * ia64-tdep.c (get_kernel_table, ia64_find_proc_info_x, ia64_get_dyn_info_list): Update. * maint.c (maintenance_translate_address): Update. * mi/mi-cmd-var.c (mi_cmd_var_create): Update. * target.c (target_flash_erase): Update. Update callers of paddr/paddr_nz to use phex/phex_nz instead, using an appropriate address size. Remove use of strlen_paddr. * exec.c (exec_files_info): Update. * i386-nat.c (i386_show_dr): Update. * remote.c (remote_flash_erase): Update. * m32r-rom.c (m32r_load_section): Update. * monitor.c (monitor_vsprintf, monitor_store_register): Update. * remote.c (remote_check_symbols, remote_search_memory): Update. * remote-mips.c (mips_request, mips_common_breakpoint): Update. * scm-valprint.c (scm_ipruk, scm_scmval_print): Update. * sh64-tdep.c (sh64_show_media_regs, sh64_show_compact_regs): Update. * sh-tdep.c (sh_generic_show_regs, sh3_show_regs, sh2e_show_regs, sh2a_show_regs, sh2a_nofpu_show_regs, sh3e_show_regs, sh3_dsp_show_regs, sh4_show_regs, sh4_nofpu_show_regs, sh_dsp_show_regs): Update. * xcoffsolib.c (sharedlibrary_command): Update. * maint.c (maint_print_section_info): Add ADDR_SIZE parameter. Use hex_string_custom instead of paddr. (print_bfd_section_info): Pass address size. (print_objfile_section_info): Likewise. * annotate.h (annotate_source): Add GDBARCH parameter. (annotate_frame_begin): Likewise. * annotate.c (annotate_source): Add GDBARCH parameter. (annotate_frame_begin): Likewise. * source.c (identify_source_line): Update call to annotate_source. * stack.c (print_frame_info, print_frame): Update call to annotate_frame_begin. * breakpoint.c (describe_other_breakpoints): Add GDBARCH parameter. (create_breakpoint, create_ada_exception_breakpoint): Update call. * stack.c (print_block_frame_labels): Add GDBARCH parameter. (print_frame_label_vars): Update call. * symmisc.c (print_partial_symbols): Add GDBARCH parameter. (dump_psymtab): Update call to print_partial_symbols. (struct print_symbol_args): Add GDBARCH member. (dump_symtab_1): Set print_symbol_args architecture member. (print_symbol): Use it. * windows-tdep.h (windows_xfer_shared_library): Add GDBARCH parameter. * windows-tdep.c (windows_xfer_shared_library): Likewise. * i386-cygwin-tdep.c (struct cpms_data): Add GDBARCH member. (core_process_module_section): Pass architecture from cpms_data to windows_xfer_shared_library. (windows_core_xfer_shared_libraries): Initialize cmps_data architecture member. * windows-nat.c (windows_xfer_shared_libraries): Pass architecture to windows_xfer_shared_library. * defs.h (print_address): Add GDBARCH parameter. * printcmd.c (print_address): Add GDBARCH parameter. (print_scalar_formatted, do_examine): Update call. * findcmd.c (find_command): Update call. * tracepoint.c: Include "arch-utils.h". (trace_find_line_command): Update call. * tui/tui-disasm.c (tui_disassemble): Update call. * value.h (print_address_demangle): Add GDBARCH parameter. * printcmd.c (print_address_demangle): Add GDBARCH parameter. * c-valprint.c (print_function_pointer_address, c_val_print): Update call. * f-valprint.c (f_val_print): Update call. * gnu-v3-abi.c (gnuv3_print_method_ptr): Update call. * jv-valprint.c (java_val_print): Update call. * m2-valprint.c (print_function_pointer_address, m2_val_print): Update call. * p-valprint.c (pascal_val_print): Update call. * disasm.c (gdb_disassemble_info): Install architecture into di.application_data field. testsuite/ChangeLog: * gdb.threads/tls-shared.exp: Update to locexpr_describe_location change to prefix TLS offset in hex with 0x. doc/ChangeLog: * gdbint.texinfo (Item Output Functions): Update signature for ui_out_field_core_addr.
2009-07-02 19:21:10 +02:00
printf_unfiltered (" (addr=%s, len=%d, type=%s)",
paddress (target_gdbarch, addr), len,
type == hw_write ? "data-write"
: (type == hw_read ? "data-read"
: (type == hw_access ? "data-read/write"
: (type == hw_execute ? "instruction-execute"
: "??unknown??"))));
puts_unfiltered (":\n");
for (i = 0; i < MAX_DEBUG_REGISTER; i++)
* defs.h (strlen_paddr, paddr, paddr_nz): Remove. (paddress): Add GDBARCH parameter. * utils.c (strlen_paddr, paddr, paddr_nz): Remove. (paddress): Add GDBARCH parameter, use it instead of current_gdbarch. * ui-out.h (ui_out_field_core_addr): Add GDBARCH parameter. * ui-out.c (ui_out_field_core_addr): Add GDBARCH parameter, use it instead of current_gdbarch. Update calls to ui_out_field_core_addr to pass architecture: * ada-lang.c (print_one_exception): Update. * breakpoint.c (print_one_breakpoint_location, print_one_exception_catchpoint): Update. * disasm.c (dump_insns): Update. * darwin-nat-info.c (darwin_debug_regions_recurse): Update. * mi/mi-main.c (mi_cmd_data_read_memory): Update. * mi/mi-symbol-cmds.c: Include "objfiles.h". (mi_cmd_symbol_list_lines): Update. * stack.c (print_frame_info, print_frame): Update. Update callers of paddress to pass architecture: * ada-tasks.c (info_task): Update. * ada-valprint.c (ada_val_print_1): Update. * annotate.c (annotate_source, annotate_frame_begin): Update. * breakpoint.c (insert_bp_location, describe_other_breakpoints, mention): Update. * cli/cli-cmds.c (edit_command, list_command, print_disassembly): Update. * corefile.c (memory_error): Update. * c-valprint.c (print_function_pointer_address, c_val_print): Update. * disasm.c (dis_asm_print_address): Update. * exec.c (print_section_info): Update. * f-valprint.c (f_val_print): Update. * infcmd.c: Include "arch-utils.h". (jump_command, program_info): Update. * linux-fork.c: Include "arch-utils.h". (info_forks_command): Update. * m2-valprint.c (print_function_pointer_address, print_unpacked_pointer, print_variable_at_address, m2_val_print): Update. * m32r-rom.c (m32r_load_section, m32r_load, m32r_upload_command): Update. * printcmd.c (print_address, print_address_demangle, address_info): Update. * p-valprint.c (pascal_val_print): Update. * source.c: Include "arch-utils.h". (line_info): Update. * stack.c (frame_info, print_block_frame_labels): Update. * symfile.c (add_symbol_file_command, list_overlays_command): Update. * symmisc.c (dump_msymbols, dump_psymtab, dump_symtab_1, print_symbol, print_partial_symbols, maintenance_info_psymtabs, maintenance_check_symtabs): Update. * symtab.c (find_pc_sect_symtab): Update. * target.c (deprecated_debug_xfer_memory): Update. * tracepoint.c (scope_info): Update. * tui/tui-stack.c (tui_make_status_line): Update. * valprint.c (val_print_string): Update. Update callers of paddr_nz to use paddress instead (keeping user-visible output identical): * alpha-tdep.c (alpha_heuristic_proc_start): Update. * amd64-tdep.c (fixup_riprel, amd64_displaced_step_copy_insn, amd64_displaced_step_fixup): Update. * arch-utils.c (simple_displaced_step_copy_insn): Update. * auxv.c (fprint_target_auxv): Update. * breakpoint.c (insert_single_step_breakpoint): Update. * buildsym.c (finish_block): Update. * cli/cli-dump.c (restore_section_callback): Update. * fbsd-nat.c (fbsd_find_memory_regions): Update. * frame.c (frame_unwind_register_value): Update. * gcore.c (gcore_create_callback): Update. * hppa-tdep.c (hppa_frame_cache, hppa_skip_trampoline_code): Update. * i386-tdep.c (i386_displaced_step_fixup, i386_record_modrm, i386_record_lea_modrm_addr, i386_record_lea_modrm, i386_process_record): Update. * ia64-tdep.c (ia64_frame_this_id, ia64_sigtramp_frame_this_id, ia64_libunwind_frame_this_id, ia64_libunwind_sigtramp_frame_this_id, ia64_dummy_id, ia64_access_reg, ia64_access_rse_reg): Update. * infrun.c (displaced_step_prepare, displaced_step_fixup, handle_inferior_event, insert_step_resume_breakpoint_at_sal, insert_longjmp_resume_breakpoint): Update. * linux-nat.c (linux_nat_find_memory_regions): Update. * linux-record.c (record_linux_system_call): Update. * mips-tdep.c (heuristic_proc_start, mips_eabi_push_dummy_call, mips_n32n64_push_dummy_call, mips_o32_push_dummy_call, mips_o64_push_dummy_call): Update. * monitor.c (monitor_error, monitor_remove_breakpoint): Update. * record.c (record_arch_list_add_mem, record_wait, record_xfer_partial): Update. * remote-mips.c (mips_fetch_word, mips_check_lsi_error, mips_common_breakpoint): Update. * remote-sim.c (gdbsim_xfer_inferior_memory): Update. * rs6000-tdep.c (ppc_displaced_step_fixup): Update. * solib-som.c (som_current_sos): Update. * symfile.c (load_progress, generic_load): Update. * symfile-mem.c (add_vsyscall_page): Update. * valops.c (value_fetch_lazy): Update. * windows-tdep.c (windows_xfer_shared_library): Update. Update callers of paddr_nz to use paddress instead (changing user-visible output to make it more correct): * dwarf2loc.c (locexpr_describe_location): Update. * ia64-tdep.c (ia64_memory_insert_breakpoint, ia64_memory_remove_breakpoint): Update. * jv-valprint.c (java_value_print): Update. * m32c-tdep.c (m32c_m16c_address_to_pointer): Update. * monitor.c (monitor_read_memory): Update. Update callers of paddr to use paddress instead (changing user-visible output to make it more correct): * arm-tdep.c (arm_push_dummy_call): Update. * breakpoint.c (insert_bp_location, create_thread_event_breakpoint, create_breakpoint): Update. * darwin-nat-info.c (darwin_debug_regions): Update. * dcache.c (dcache_info): Update. * dsrec.c (load_srec, make_srec): Update. * dwarf2-frame.c (dwarf2_restore_rule, execute_cfa_program, dwarf2_frame_cache): Update. * gcore.c (gcore_copy_callback): Update. * gnu-nat.c (gnu_xfer_memory): Update. * mips-linux-nat.c (mips_show_dr): Update. * monitor.c (monitor_write_memory, monitor_insert_breakpoint, monitor_remove_breakpoint): Update. * remote.c (compare_sections_command): Update. * remote-m32r-sdi.c (m32r_xfer_memory, m32r_insert_breakpoint, m32r_remove_breakpoint, m32r_insert_watchpoint, m32r_remove_watchpoint): Update. * sol-thread.c (info_cb): Update. * symfile.c (load_progress): Update. Update callers of paddress or paddr_nz to use hex_string instead (changes output of internal/error/debug messages only): * dwarf2read.c (dump_die_shallow): Update. * frame.c (fprint_field, fprint_frame, frame_pc_unwind, get_frame_func, create_new_frame): Update. * hppa-tdep.c (find_unwind_entry, unwind_command): Update. * ia64-tdep.c (get_kernel_table, ia64_find_proc_info_x, ia64_get_dyn_info_list): Update. * maint.c (maintenance_translate_address): Update. * mi/mi-cmd-var.c (mi_cmd_var_create): Update. * target.c (target_flash_erase): Update. Update callers of paddr/paddr_nz to use phex/phex_nz instead, using an appropriate address size. Remove use of strlen_paddr. * exec.c (exec_files_info): Update. * i386-nat.c (i386_show_dr): Update. * remote.c (remote_flash_erase): Update. * m32r-rom.c (m32r_load_section): Update. * monitor.c (monitor_vsprintf, monitor_store_register): Update. * remote.c (remote_check_symbols, remote_search_memory): Update. * remote-mips.c (mips_request, mips_common_breakpoint): Update. * scm-valprint.c (scm_ipruk, scm_scmval_print): Update. * sh64-tdep.c (sh64_show_media_regs, sh64_show_compact_regs): Update. * sh-tdep.c (sh_generic_show_regs, sh3_show_regs, sh2e_show_regs, sh2a_show_regs, sh2a_nofpu_show_regs, sh3e_show_regs, sh3_dsp_show_regs, sh4_show_regs, sh4_nofpu_show_regs, sh_dsp_show_regs): Update. * xcoffsolib.c (sharedlibrary_command): Update. * maint.c (maint_print_section_info): Add ADDR_SIZE parameter. Use hex_string_custom instead of paddr. (print_bfd_section_info): Pass address size. (print_objfile_section_info): Likewise. * annotate.h (annotate_source): Add GDBARCH parameter. (annotate_frame_begin): Likewise. * annotate.c (annotate_source): Add GDBARCH parameter. (annotate_frame_begin): Likewise. * source.c (identify_source_line): Update call to annotate_source. * stack.c (print_frame_info, print_frame): Update call to annotate_frame_begin. * breakpoint.c (describe_other_breakpoints): Add GDBARCH parameter. (create_breakpoint, create_ada_exception_breakpoint): Update call. * stack.c (print_block_frame_labels): Add GDBARCH parameter. (print_frame_label_vars): Update call. * symmisc.c (print_partial_symbols): Add GDBARCH parameter. (dump_psymtab): Update call to print_partial_symbols. (struct print_symbol_args): Add GDBARCH member. (dump_symtab_1): Set print_symbol_args architecture member. (print_symbol): Use it. * windows-tdep.h (windows_xfer_shared_library): Add GDBARCH parameter. * windows-tdep.c (windows_xfer_shared_library): Likewise. * i386-cygwin-tdep.c (struct cpms_data): Add GDBARCH member. (core_process_module_section): Pass architecture from cpms_data to windows_xfer_shared_library. (windows_core_xfer_shared_libraries): Initialize cmps_data architecture member. * windows-nat.c (windows_xfer_shared_libraries): Pass architecture to windows_xfer_shared_library. * defs.h (print_address): Add GDBARCH parameter. * printcmd.c (print_address): Add GDBARCH parameter. (print_scalar_formatted, do_examine): Update call. * findcmd.c (find_command): Update call. * tracepoint.c: Include "arch-utils.h". (trace_find_line_command): Update call. * tui/tui-disasm.c (tui_disassemble): Update call. * value.h (print_address_demangle): Add GDBARCH parameter. * printcmd.c (print_address_demangle): Add GDBARCH parameter. * c-valprint.c (print_function_pointer_address, c_val_print): Update call. * f-valprint.c (f_val_print): Update call. * gnu-v3-abi.c (gnuv3_print_method_ptr): Update call. * jv-valprint.c (java_val_print): Update call. * m2-valprint.c (print_function_pointer_address, m2_val_print): Update call. * p-valprint.c (pascal_val_print): Update call. * disasm.c (gdb_disassemble_info): Install architecture into di.application_data field. testsuite/ChangeLog: * gdb.threads/tls-shared.exp: Update to locexpr_describe_location change to prefix TLS offset in hex with 0x. doc/ChangeLog: * gdbint.texinfo (Item Output Functions): Update signature for ui_out_field_core_addr.
2009-07-02 19:21:10 +02:00
printf_unfiltered ("\tDR%d: lo=%s, hi=%s\n", i,
paddress (target_gdbarch,
get_watchlo (&watch_mirror, i)),
paddress (target_gdbarch,
get_watchhi (&watch_mirror, i)));
}
/* Return 1 if watch registers are usable. Cached information is used
unless force is true. */
static int
mips_linux_read_watch_registers (int force)
{
int tid;
if (force || watch_readback_valid == 0)
{
tid = ptid_get_lwp (inferior_ptid);
if (ptrace (PTRACE_GET_WATCH_REGS, tid, &watch_readback) == -1)
{
watch_readback_valid = -1;
return 0;
}
switch (watch_readback.style)
{
case pt_watch_style_mips32:
if (watch_readback.mips32.num_valid == 0)
{
watch_readback_valid = -1;
return 0;
}
break;
case pt_watch_style_mips64:
if (watch_readback.mips64.num_valid == 0)
{
watch_readback_valid = -1;
return 0;
}
break;
default:
watch_readback_valid = -1;
return 0;
}
/* Watch registers appear to be usable. */
watch_readback_valid = 1;
}
return (watch_readback_valid == 1) ? 1 : 0;
}
/* Convert GDB's type to an IRW mask. */
static unsigned
type_to_irw (int type)
{
switch (type)
{
case hw_write:
return W_MASK;
case hw_read:
return R_MASK;
case hw_access:
return (W_MASK | R_MASK);
default:
return 0;
}
}
/* Target to_can_use_hw_breakpoint implementation. Return 1 if we can
handle the specified watch type. */
static int
mips_linux_can_use_hw_breakpoint (int type, int cnt, int ot)
{
int i;
uint32_t wanted_mask, irw_mask;
if (!mips_linux_read_watch_registers (0))
return 0;
switch (type)
{
case bp_hardware_watchpoint:
wanted_mask = W_MASK;
break;
case bp_read_watchpoint:
wanted_mask = R_MASK;
break;
case bp_access_watchpoint:
wanted_mask = R_MASK | W_MASK;
break;
default:
return 0;
}
for (i = 0; i < get_num_valid (&watch_readback) && cnt; i++)
{
irw_mask = get_irw_mask (&watch_readback, i);
if ((irw_mask & wanted_mask) == wanted_mask)
cnt--;
}
return (cnt == 0) ? 1 : 0;
}
/* Target to_stopped_by_watchpoint implementation. Return 1 if
stopped by watchpoint. The watchhi R and W bits indicate the watch
register triggered. */
static int
mips_linux_stopped_by_watchpoint (void)
{
int n;
int num_valid;
if (!mips_linux_read_watch_registers (1))
return 0;
num_valid = get_num_valid (&watch_readback);
for (n = 0; n < MAX_DEBUG_REGISTER && n < num_valid; n++)
if (get_watchhi (&watch_readback, n) & (R_MASK | W_MASK))
return 1;
return 0;
}
/* Target to_stopped_data_address implementation. Set the address
where the watch triggered (if known). Return 1 if the address was
known. */
static int
mips_linux_stopped_data_address (struct target_ops *t, CORE_ADDR *paddr)
{
/* On mips we don't know the low order 3 bits of the data address,
so we must return false. */
return 0;
}
/* Set any low order bits in mask that are not set. */
static CORE_ADDR
fill_mask (CORE_ADDR mask)
{
CORE_ADDR f = 1;
while (f && f < mask)
{
mask |= f;
f <<= 1;
}
return mask;
}
/* Try to add a single watch to the specified registers. Return 1 on
success, 0 on failure. */
static int
try_one_watch (struct pt_watch_regs *regs, CORE_ADDR addr,
int len, unsigned irw)
{
CORE_ADDR base_addr, last_byte, break_addr, segment_len;
CORE_ADDR mask_bits, t_low, t_low_end;
uint16_t t_hi;
int i, free_watches;
struct pt_watch_regs regs_copy;
if (len <= 0)
return 0;
last_byte = addr + len - 1;
mask_bits = fill_mask (addr ^ last_byte) | IRW_MASK;
base_addr = addr & ~mask_bits;
/* Check to see if it is covered by current registers. */
for (i = 0; i < get_num_valid (regs); i++)
{
t_low = get_watchlo (regs, i);
if (t_low != 0 && irw == ((unsigned)t_low & irw))
{
t_hi = get_watchhi (regs, i) | IRW_MASK;
t_low &= ~(CORE_ADDR)t_hi;
if (addr >= t_low && last_byte <= (t_low + t_hi))
return 1;
}
}
/* Try to find an empty register. */
free_watches = 0;
for (i = 0; i < get_num_valid (regs); i++)
{
t_low = get_watchlo (regs, i);
if (t_low == 0 && irw == (get_irw_mask (regs, i) & irw))
{
if (mask_bits <= (get_reg_mask (regs, i) | IRW_MASK))
{
/* It fits, we'll take it. */
set_watchlo (regs, i, base_addr | irw);
set_watchhi (regs, i, mask_bits & ~IRW_MASK);
return 1;
}
else
{
/* It doesn't fit, but has the proper IRW capabilities. */
free_watches++;
}
}
}
if (free_watches > 1)
{
/* Try to split it across several registers. */
regs_copy = *regs;
for (i = 0; i < get_num_valid (&regs_copy); i++)
{
t_low = get_watchlo (&regs_copy, i);
t_hi = get_reg_mask (&regs_copy, i) | IRW_MASK;
if (t_low == 0 && irw == (t_hi & irw))
{
t_low = addr & ~(CORE_ADDR)t_hi;
break_addr = t_low + t_hi + 1;
if (break_addr >= addr + len)
segment_len = len;
else
segment_len = break_addr - addr;
mask_bits = fill_mask (addr ^ (addr + segment_len - 1));
set_watchlo (&regs_copy, i, (addr & ~mask_bits) | irw);
set_watchhi (&regs_copy, i, mask_bits & ~IRW_MASK);
if (break_addr >= addr + len)
{
*regs = regs_copy;
return 1;
}
len = addr + len - break_addr;
addr = break_addr;
}
}
}
/* It didn't fit anywhere, we failed. */
return 0;
}
/* Target to_region_ok_for_hw_watchpoint implementation. Return 1 if
the specified region can be covered by the watch registers. */
static int
mips_linux_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
{
struct pt_watch_regs dummy_regs;
int i;
if (!mips_linux_read_watch_registers (0))
return 0;
dummy_regs = watch_readback;
/* Clear them out. */
for (i = 0; i < get_num_valid (&dummy_regs); i++)
set_watchlo (&dummy_regs, i, 0);
return try_one_watch (&dummy_regs, addr, len, 0);
}
/* Write the mirrored watch register values for each thread. */
static int
write_watchpoint_regs (void)
{
struct lwp_info *lp;
int tid;
ALL_LWPS (lp)
{
tid = ptid_get_lwp (lp->ptid);
if (ptrace (PTRACE_SET_WATCH_REGS, tid, &watch_mirror) == -1)
perror_with_name (_("Couldn't write debug register"));
}
return 0;
}
/* linux_nat new_thread implementation. Write the mirrored watch
register values for the new thread. */
static void
gdb/ 2011-12-14 Pedro Alves <pedro@codesourcery.com> PR threads/10729 * linux-nat.c (linux_nat_new_thread): Change parameter to an lwp pointer. (linux_nat_prepare_to_resume): New global. (lwp_free): New. (purge_lwp_list): Use it. (add_lwp): Call linux_nat_new_thread even on the first LWP. Adjust to interface change. (delete_lwp): Call lwp_free instead of xfree. (detach_callback, linux_nat_detach, resume_lwp, linux_nat_resume) (linux_handle_syscall_trap, linux_handle_extended_wait) (linux_nat_filter_event, resume_stopped_resumed_lwps): Call linux_nat_prepare_to_resume before resuming. (linux_stop_lwp): New. (linux_nat_set_new_thread): Adjust. (linux_nat_set_prepare_to_resume): New. * linux-nat.h (struct arch_lwp_info): Forward declare. (struct lwp_info) <arch_private>: New field. (linux_stop_lwp): Declare. (linux_nat_set_new_thread): Adjust. (linux_nat_set_prepare_to_resume): New. * i386-nat.c (DR_NADDR, DR_STATUS, DR_CONTROL) (struct i386_debug_reg_state): Move to i386-nat.h. (dr_mirror): Comment. (i386_debug_reg_state): New. (i386_update_inferior_debug_regs): Simplify. (i386_stopped_data_address): Use the debug register state from the inferior, not from the local cache. * i386-nat.h (struct i386_dr_low_type): Delete reset_addr and unset_status fields. New get_addr and get_control fields. (DR_FIRSTADDR, DR_LASTADDR, DR_CONTROL): Moved from i386-nat.c. (DR_NADDR, DR_STATUS): New. (struct i386_debug_reg_state): Moved from i386-nat.c. * amd64-linux-nat.c (struct arch_lwp_info): New. (amd64_linux_dr): Delete global. (amd64_linux_dr_get_addr): New. (amd64_linux_dr_get_control): New. (amd64_linux_dr_unset_status): Delete. (amd64_linux_dr_set_addr): Reimplement. (amd64_linux_dr_reset_addr): Delete. (update_debug_registers_callback): New. (amd64_linux_dr_set_control): Reimplement. (amd64_linux_dr_set_addr): Reimplement. (amd64_linux_prepare_to_resume): New. (amd64_linux_new_thread): Change parameter to an lwp pointer. Reimplement. (_initialize_amd64_linux_nat): No longer install i386_dr_low.reset_addr and i386_dr_low.unset_status. Install amd64_linux_dr_get_control as i386_dr_low.get_control. Install amd64_linux_dr_get_addr as i386_dr_low.get_addr. Install amd64_linux_prepare_to_resume. * i386-linux-nat.c (DR_FIRSTADDR, DR_LASTADDR, DR_STATUS) (DR_CONTROL): Delete. (struct arch_lwp_info): New. (i386_linux_dr): Delete global. (i386_linux_dr_set_control): Reimplement. (i386_linux_dr_get_addr): New. (i386_linux_dr_set_addr): Reimplement. (i386_linux_dr_get_control): New. (update_debug_registers_callback): New. (i386_linux_dr_unset_status): Delete. (i386_linux_dr_set_addr): Reimplement. (i386_linux_prepare_to_resume): New. (i386_linux_new_thread): Change parameter to an lwp pointer. Reimplement. (_initialize_i386_linux_nat): No longer install i386_dr_low.reset_addr and i386_dr_low.unset_status. Install i386_linux_dr_get_control as i386_dr_low.get_control. Install i386_linux_dr_get_addr as i386_dr_low.get_addr. Install i386_linux_prepare_to_resume. * arm-linux-nat.c (arm_linux_new_thread): Change parameter to an lwp pointer. Adjust. * ia64-linux-nat.c (ia64_linux_new_thread): Likewise. * mips-linux-nat.c (mips_linux_new_thread): Likewise. * ppc-linux-nat.c (ppc_linux_new_thread): Likewise. * s390-nat.c (s390_fix_watch_points): Likewise. * i386-darwin-nat.c (DR_FIRSTADDR, DR_LASTADDR, DR_STATUS) (DR_CONTROL): Delete. (i386_darwin_dr_reset_addr): Delete. (i386_darwin_dr_get_addr): New. (i386_darwin_dr_get_control): New. * go32-nat.c (go32_get_dr7, go32_get_dr): New. (init_go32_ops): No longer install i386_dr_low.reset_addr. Install go32_get_dr7 as i386_dr_low.get_control. Install go32_get_dr as i386_dr_low.get_addr. * i386bsd-nat.c (i386bsd_dr_get): New. (i386bsd_dr_reset_addr): Delete. (i386bsd_dr_get_addr): New. (i386bsd_dr_get_status): Use i386bsd_dr_get. (i386bsd_dr_get_control): New. * i386bsd-nat.h (i386bsd_dr_reset_addr): Delete. (i386bsd_dr_get_addr): New. (i386bsd_dr_get_control): New. * i386fbsd-nat.c (_initialize_i386fbsd_nat): No longer install i386_dr_low.reset_addr and i386_dr_low.unset_status. Install i386bsd_dr_get_control as i386_dr_low.get_control. Install i386bsd_dr_get_addr as i386_dr_low.get_addr. * windows-nat.c (init_windows_ops): No longer install i386_dr_low.reset_addr and i386_dr_low.unset_status. Install cygwin_get_dr7 as i386_dr_low.get_control. Install cygwin_get_dr as i386_dr_low.get_addr. (cygwin_get_dr): New. (cygwin_get_dr7): New. gdb/testsuite/ 2011-12-14 Pedro Alves <pedro@codesourcery.com> PR threads/10729 * gdb.mi/watch-nonstop.c: New file. * gdb.mi/mi-watch-nonstop.exp: New file.
2011-12-14 18:20:32 +01:00
mips_linux_new_thread (struct lwp_info *lp)
{
int tid;
if (!mips_linux_read_watch_registers (0))
return;
gdb/ 2011-12-14 Pedro Alves <pedro@codesourcery.com> PR threads/10729 * linux-nat.c (linux_nat_new_thread): Change parameter to an lwp pointer. (linux_nat_prepare_to_resume): New global. (lwp_free): New. (purge_lwp_list): Use it. (add_lwp): Call linux_nat_new_thread even on the first LWP. Adjust to interface change. (delete_lwp): Call lwp_free instead of xfree. (detach_callback, linux_nat_detach, resume_lwp, linux_nat_resume) (linux_handle_syscall_trap, linux_handle_extended_wait) (linux_nat_filter_event, resume_stopped_resumed_lwps): Call linux_nat_prepare_to_resume before resuming. (linux_stop_lwp): New. (linux_nat_set_new_thread): Adjust. (linux_nat_set_prepare_to_resume): New. * linux-nat.h (struct arch_lwp_info): Forward declare. (struct lwp_info) <arch_private>: New field. (linux_stop_lwp): Declare. (linux_nat_set_new_thread): Adjust. (linux_nat_set_prepare_to_resume): New. * i386-nat.c (DR_NADDR, DR_STATUS, DR_CONTROL) (struct i386_debug_reg_state): Move to i386-nat.h. (dr_mirror): Comment. (i386_debug_reg_state): New. (i386_update_inferior_debug_regs): Simplify. (i386_stopped_data_address): Use the debug register state from the inferior, not from the local cache. * i386-nat.h (struct i386_dr_low_type): Delete reset_addr and unset_status fields. New get_addr and get_control fields. (DR_FIRSTADDR, DR_LASTADDR, DR_CONTROL): Moved from i386-nat.c. (DR_NADDR, DR_STATUS): New. (struct i386_debug_reg_state): Moved from i386-nat.c. * amd64-linux-nat.c (struct arch_lwp_info): New. (amd64_linux_dr): Delete global. (amd64_linux_dr_get_addr): New. (amd64_linux_dr_get_control): New. (amd64_linux_dr_unset_status): Delete. (amd64_linux_dr_set_addr): Reimplement. (amd64_linux_dr_reset_addr): Delete. (update_debug_registers_callback): New. (amd64_linux_dr_set_control): Reimplement. (amd64_linux_dr_set_addr): Reimplement. (amd64_linux_prepare_to_resume): New. (amd64_linux_new_thread): Change parameter to an lwp pointer. Reimplement. (_initialize_amd64_linux_nat): No longer install i386_dr_low.reset_addr and i386_dr_low.unset_status. Install amd64_linux_dr_get_control as i386_dr_low.get_control. Install amd64_linux_dr_get_addr as i386_dr_low.get_addr. Install amd64_linux_prepare_to_resume. * i386-linux-nat.c (DR_FIRSTADDR, DR_LASTADDR, DR_STATUS) (DR_CONTROL): Delete. (struct arch_lwp_info): New. (i386_linux_dr): Delete global. (i386_linux_dr_set_control): Reimplement. (i386_linux_dr_get_addr): New. (i386_linux_dr_set_addr): Reimplement. (i386_linux_dr_get_control): New. (update_debug_registers_callback): New. (i386_linux_dr_unset_status): Delete. (i386_linux_dr_set_addr): Reimplement. (i386_linux_prepare_to_resume): New. (i386_linux_new_thread): Change parameter to an lwp pointer. Reimplement. (_initialize_i386_linux_nat): No longer install i386_dr_low.reset_addr and i386_dr_low.unset_status. Install i386_linux_dr_get_control as i386_dr_low.get_control. Install i386_linux_dr_get_addr as i386_dr_low.get_addr. Install i386_linux_prepare_to_resume. * arm-linux-nat.c (arm_linux_new_thread): Change parameter to an lwp pointer. Adjust. * ia64-linux-nat.c (ia64_linux_new_thread): Likewise. * mips-linux-nat.c (mips_linux_new_thread): Likewise. * ppc-linux-nat.c (ppc_linux_new_thread): Likewise. * s390-nat.c (s390_fix_watch_points): Likewise. * i386-darwin-nat.c (DR_FIRSTADDR, DR_LASTADDR, DR_STATUS) (DR_CONTROL): Delete. (i386_darwin_dr_reset_addr): Delete. (i386_darwin_dr_get_addr): New. (i386_darwin_dr_get_control): New. * go32-nat.c (go32_get_dr7, go32_get_dr): New. (init_go32_ops): No longer install i386_dr_low.reset_addr. Install go32_get_dr7 as i386_dr_low.get_control. Install go32_get_dr as i386_dr_low.get_addr. * i386bsd-nat.c (i386bsd_dr_get): New. (i386bsd_dr_reset_addr): Delete. (i386bsd_dr_get_addr): New. (i386bsd_dr_get_status): Use i386bsd_dr_get. (i386bsd_dr_get_control): New. * i386bsd-nat.h (i386bsd_dr_reset_addr): Delete. (i386bsd_dr_get_addr): New. (i386bsd_dr_get_control): New. * i386fbsd-nat.c (_initialize_i386fbsd_nat): No longer install i386_dr_low.reset_addr and i386_dr_low.unset_status. Install i386bsd_dr_get_control as i386_dr_low.get_control. Install i386bsd_dr_get_addr as i386_dr_low.get_addr. * windows-nat.c (init_windows_ops): No longer install i386_dr_low.reset_addr and i386_dr_low.unset_status. Install cygwin_get_dr7 as i386_dr_low.get_control. Install cygwin_get_dr as i386_dr_low.get_addr. (cygwin_get_dr): New. (cygwin_get_dr7): New. gdb/testsuite/ 2011-12-14 Pedro Alves <pedro@codesourcery.com> PR threads/10729 * gdb.mi/watch-nonstop.c: New file. * gdb.mi/mi-watch-nonstop.exp: New file.
2011-12-14 18:20:32 +01:00
tid = ptid_get_lwp (lp->ptid);
if (ptrace (PTRACE_SET_WATCH_REGS, tid, &watch_mirror) == -1)
perror_with_name (_("Couldn't write debug register"));
}
/* Fill in the watch registers with the currently cached watches. */
static void
populate_regs_from_watches (struct pt_watch_regs *regs)
{
struct mips_watchpoint *w;
int i;
/* Clear them out. */
for (i = 0; i < get_num_valid (regs); i++)
{
set_watchlo (regs, i, 0);
set_watchhi (regs, i, 0);
}
w = current_watches;
while (w)
{
i = try_one_watch (regs, w->addr, w->len, type_to_irw (w->type));
/* They must all fit, because we previously calculated that they
would. */
gdb_assert (i);
w = w->next;
}
}
/* Target to_insert_watchpoint implementation. Try to insert a new
watch. Return zero on success. */
static int
2010-07-07 Sergio Durigan Junior <sergiodj@linux.vnet.ibm.com> Thiago Jung Bauermann <bauerman@br.ibm.com> Support for hw accelerated condition watchpoints in booke powerpc. * breakpoint.c (fetch_watchpoint_value): Rename to fetch_subexp_value and move to eval.c. Change callers. (insert_bp_location): Pass watchpoint condition in target_insert_watchpoint. (remove_breakpoint_1) Pass watchpoint condition in target_remove_watchpoint. (watchpoint_locations_match): Call target_can_accel_watchpoint_condition. * eval.c: Include wrapper.h. (fetch_subexp_value): Moved from breakpoint.c. * ppc-linux-nat.c (ppc_linux_region_ok_for_hw_watchpoint): Formatting fix. (can_use_watchpoint_cond_accel): New function. (calculate_dvc): Likewise. (num_memory_accesses): Likewise. (check_condition): Likewise. (ppc_linux_can_accel_watchpoint_condition): Likewise (ppc_linux_insert_watchpoint): Call can_use_watchpoint_cond_accel, check_condition and calculate_dvc. (ppc_linux_remove_watchpoint): Likewise. (_initialize_ppc_linux_nat): Set to_can_accel_watchpoint_condition to ppc_linux_can_accel_watchpoint_condition * target.c (debug_to_insert_watchpoint): Add argument for watchpoint condition. (debug_to_remove_watchpoint): Likewise. (debug_to_can_accel_watchpoint_condition): New function. (update_current_target): Set to_can_accel_watchpoint_condition. (setup_target_debug): Set to_can_accel_watchpoint_condition. * target.h: Add opaque declaration for struct expression. (struct target_ops) <to_insert_watchpoint>, <to_remove_watchpoint>: Add new arguments to pass the watchpoint <to_can_accel_watchpoint_condition>: New member. condition. Update all callers and implementations. (target_can_accel_watchpoint_condition): New macro. * value.c (free_value_chain): New function. * value.h (fetch_subexp_value): New prototype. (free_value_chain): Likewise.
2010-07-07 18:15:18 +02:00
mips_linux_insert_watchpoint (CORE_ADDR addr, int len, int type,
struct expression *cond)
{
struct pt_watch_regs regs;
struct mips_watchpoint *new_watch;
struct mips_watchpoint **pw;
int i;
int retval;
if (!mips_linux_read_watch_registers (0))
return -1;
if (len <= 0)
return -1;
regs = watch_readback;
/* Add the current watches. */
populate_regs_from_watches (&regs);
/* Now try to add the new watch. */
if (!try_one_watch (&regs, addr, len, type_to_irw (type)))
return -1;
/* It fit. Stick it on the end of the list. */
new_watch = (struct mips_watchpoint *)
xmalloc (sizeof (struct mips_watchpoint));
new_watch->addr = addr;
new_watch->len = len;
new_watch->type = type;
new_watch->next = NULL;
pw = &current_watches;
while (*pw != NULL)
pw = &(*pw)->next;
*pw = new_watch;
watch_mirror = regs;
retval = write_watchpoint_regs ();
if (maint_show_dr)
mips_show_dr ("insert_watchpoint", addr, len, type);
return retval;
}
/* Target to_remove_watchpoint implementation. Try to remove a watch.
Return zero on success. */
static int
2010-07-07 Sergio Durigan Junior <sergiodj@linux.vnet.ibm.com> Thiago Jung Bauermann <bauerman@br.ibm.com> Support for hw accelerated condition watchpoints in booke powerpc. * breakpoint.c (fetch_watchpoint_value): Rename to fetch_subexp_value and move to eval.c. Change callers. (insert_bp_location): Pass watchpoint condition in target_insert_watchpoint. (remove_breakpoint_1) Pass watchpoint condition in target_remove_watchpoint. (watchpoint_locations_match): Call target_can_accel_watchpoint_condition. * eval.c: Include wrapper.h. (fetch_subexp_value): Moved from breakpoint.c. * ppc-linux-nat.c (ppc_linux_region_ok_for_hw_watchpoint): Formatting fix. (can_use_watchpoint_cond_accel): New function. (calculate_dvc): Likewise. (num_memory_accesses): Likewise. (check_condition): Likewise. (ppc_linux_can_accel_watchpoint_condition): Likewise (ppc_linux_insert_watchpoint): Call can_use_watchpoint_cond_accel, check_condition and calculate_dvc. (ppc_linux_remove_watchpoint): Likewise. (_initialize_ppc_linux_nat): Set to_can_accel_watchpoint_condition to ppc_linux_can_accel_watchpoint_condition * target.c (debug_to_insert_watchpoint): Add argument for watchpoint condition. (debug_to_remove_watchpoint): Likewise. (debug_to_can_accel_watchpoint_condition): New function. (update_current_target): Set to_can_accel_watchpoint_condition. (setup_target_debug): Set to_can_accel_watchpoint_condition. * target.h: Add opaque declaration for struct expression. (struct target_ops) <to_insert_watchpoint>, <to_remove_watchpoint>: Add new arguments to pass the watchpoint <to_can_accel_watchpoint_condition>: New member. condition. Update all callers and implementations. (target_can_accel_watchpoint_condition): New macro. * value.c (free_value_chain): New function. * value.h (fetch_subexp_value): New prototype. (free_value_chain): Likewise.
2010-07-07 18:15:18 +02:00
mips_linux_remove_watchpoint (CORE_ADDR addr, int len, int type,
struct expression *cond)
{
int retval;
int deleted_one;
struct mips_watchpoint **pw;
struct mips_watchpoint *w;
/* Search for a known watch that matches. Then unlink and free
it. */
deleted_one = 0;
pw = &current_watches;
while ((w = *pw))
{
if (w->addr == addr && w->len == len && w->type == type)
{
*pw = w->next;
xfree (w);
deleted_one = 1;
break;
}
pw = &(w->next);
}
if (!deleted_one)
return -1; /* We don't know about it, fail doing nothing. */
/* At this point watch_readback is known to be valid because we
could not have added the watch without reading it. */
gdb_assert (watch_readback_valid == 1);
watch_mirror = watch_readback;
populate_regs_from_watches (&watch_mirror);
retval = write_watchpoint_regs ();
if (maint_show_dr)
mips_show_dr ("remove_watchpoint", addr, len, type);
return retval;
}
/* Target to_close implementation. Free any watches and call the
super implementation. */
static void
mips_linux_close (int quitting)
{
struct mips_watchpoint *w;
struct mips_watchpoint *nw;
/* Clean out the current_watches list. */
w = current_watches;
while (w)
{
nw = w->next;
xfree (w);
w = nw;
}
current_watches = NULL;
if (super_close)
super_close (quitting);
}
* Makefile.in (ALLDEPFILES): Update. (alpha-linux-nat.o, sparc-linux-nat.o): New rules. (amd64-linux-nat.o, arm-linux-nat.o, hppa-linux-nat.o) (i386-linux-nat.o, ia64-linux-nat.o, linux-nat.o, m32r-linux-nat.o) (m68klinux-nat.o, mips-linux-nat.o, ppc-linux-nat.o, s390-nat.o) (sparc64-linux-nat.o): Update dependencies. * alpha-linux-nat.c, sparc-linux-nat.c: New files. * amd64-linux-nat.c (amd64_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (amd64_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (amd64_linux_child_post_start_inferior): Renamed from child_post_startup_inferior and made static. Call super_post_startup_inferior. (super_post_startup_inferior): New. (_initialize_amd64_linux_nat): Set it. Call linux_target and add_target. * arm-linux-nat.c (arm_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (arm_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_arm_linux_nat): Add a prototype. Use linux_target and add_target. * hppa-linux-nat.c (hppa_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (hppa_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_hppa_linux_nat): New function. * i386-linux-nat.c (i386_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (i386_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (i386_linux_resume): Renamed from child_resume and made static. (i386_linux_child_post_start_inferior): Renamed from child_post_startup_inferior and made static. Call super_post_startup_inferior. (super_post_startup_inferior): New. (_initialize_i386_linux_nat): New function. * i386-nat.c: Remove LINUX_CHILD_POST_STARTUP_INFERIOR #ifndef. * ia64-linux-nat.c (ia64_linux_xfer_unwind_table): Remove. (super_xfer_partial): New. (ia64_linux_xfer_partial): New function. Use it. (_initialize_ia64_linux_nat): New function. * ia64-tdep.c (getunwind_table): Revert 2005-06-08 change; use target_read_partial and document the problem. * inf-ptrace.c (inf_ptrace_fetch_register): Use CANNOT_FETCH_REGISTER. Fix some comments. (inf_ptrace_store_register): Use CANNOT_STORE_REGISTER. Fix some comments. * linux-nat.c: Include "inf-ptrace.h" and "auxv.h". (linux_ops, super_xfer_partial): New variables. (linux_child_post_startup_inferior): Make static. (child_post_startup_inferior): Delete. (linux_nat_attach, linux_nat_detach, resume_callback) (linux_nat_resume, linux_nat_wait, linux_nat_create_inferior) (linux_nat_mourn_inferior): Use linux_ops instead of deprecated_child_ops. (child_wait): Do not depend on CHILD_WAIT. (linux_nat_xfer_memory): Remove, replace by ... (linux_nat_xfer_partial): ... this. Use linux_ops->to_xfer_partial instead of linux_proc_xfer_memory and child_xfer_memory. (linux_nat_fetch_registers, linux_nat_store_registers) (linux_nat_child_post_startup_inferior): New functions. (init_linux_nat_ops): Use the new functions. (linux_proc_xfer_memory): Remove, replace by ... (linux_proc_xfer_partial): ... this. Make static. (linux_xfer_partial, linux_register_u_offset, linux_target): New functions. (_initialize_linux_nat): Do not modify deprecated_child_ops. * linux-nat.h (linux_proc_xfer_memory): Remove prototype. (struct mem_attrib, struct target_ops): Remove forward declarations. (linux_child_post_startup_inferior): Remove prototype. (linux_target): Add prototype. * linux-thread-db.c (thread_db_xfer_memory): Remove, replace by ... (thread_db_xfer_partial): ... this. (init_thread_db_ops): Set to_xfer_partial instead of deprecated_xfer_memory. * m32r-linux-nat.c (m32r_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (m32r_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_m32r_linux_nat): New function. * m68klinux-nat.c (m68k_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (m68k_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (old_fetch_inferior_registers, old_store_inferior_registers): Made static. (_initialize_m68k_linux_nat): Use linux_target and add_target. * mips-linux-nat.c (_initialize_mips_linux_nat): New function. * ppc-linux-nat.c (ppc_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (ppc_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_ppc_linux_nat): New function. * s390-nat.c (s390_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (s390_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_s390_nat): New function. * sparc64-linux-nat.c (_initialize_sparc64_linux_nat): Use linux_target and add_target. * config/nm-linux.h: Don't include "auxv.h". (struct target_waitstatus, child_wait, CHILD_WAIT) (CHILD_PID_TO_EXEC_FILE, CHILD_INSERT_FORK_CATCHPOINT) (CHILD_INSERT_VFORK_CATCHPOINT, CHILD_INSERT_EXEC_CATCHPOINT) (CHILD_POST_STARTUP_INFERIOR, CHILD_POST_ATTACH, CHILD_FOLLOW_FORK) (DEPRECATED_KILL_INFERIOR, NATIVE_XFER_AUXV): Delete. * config/alpha/alpha-linux.mh (NATDEPFILES): Replace infptrace.o and inftarg.o with inf-ptrace.o and alpha-linux-nat.o. * config/sparc/linux.mh (NATDEPFILES): Replace infptrace.o and inftarg.o with sparc-linux-nat.o. * config/sparc/linux64.mh (NATDEPFILES): Remove infptrace.o and inftarg.o. * config/arm/linux.mh (NATDEPFILES): Replace infptrace.o and inftarg.o with inf-ptrace.o. * config/i386/linux.mh (NATDEPFILES): Likewise. * config/i386/linux64.mh (NATDEPFILES): Likewise. * config/ia64/linux.mh (NATDEPFILES): Likewise. * config/m32r/linux.mh (NATDEPFILES): Likewise. * config/m68k/linux.mh (NATDEPFILES): Likewise. * config/mips/linux.mh (NATDEPFILES): Likewise. * config/pa/linux.mh (NATDEPFILES): Likewise. * config/powerpc/linux.mh (NATDEPFILES): Likewise. * config/powerpc/ppc64-linux.mh (NATDEPFILES): Likewise. * config/s390/s390.mh (NATDEPFILES): Likewise. * config/i386/nm-linux.h (DEPRECATED_CHILD_RESUME): Don't define. (LINUX_CHILD_POST_STARTUP_INFERIOR): Don't define. * config/i386/nm-linux64.h (LINUX_CHILD_POST_STARTUP_INFERIOR): Don't define. * config/ia64/nm-linux.h: Don't include "target.h". (NATIVE_XFER_UNWIND_TABLE, ia64_linux_xfer_unwind_table): Remove. * config/djgpp/fnchange.lst: Add alpha-linux-tdep.c, alpha-linux-nat.c, sparc-linux-tdep.c, and sparc-linux-nat.c.
2005-09-10 20:11:14 +02:00
void _initialize_mips_linux_nat (void);
void
_initialize_mips_linux_nat (void)
{
struct target_ops *t;
add_setshow_boolean_cmd ("show-debug-regs", class_maintenance,
&maint_show_dr, _("\
Set whether to show variables that mirror the mips debug registers."), _("\
Show whether to show variables that mirror the mips debug registers."), _("\
Use \"on\" to enable, \"off\" to disable.\n\
If enabled, the debug registers values are shown when GDB inserts\n\
or removes a hardware breakpoint or watchpoint, and when the inferior\n\
triggers a breakpoint or watchpoint."),
NULL,
NULL,
&maintenance_set_cmdlist,
&maintenance_show_cmdlist);
t = linux_trad_target (mips_linux_register_u_offset);
super_close = t->to_close;
t->to_close = mips_linux_close;
* Makefile.in (mips_linux_tdep_h): New. (mpis-linux-nat.o, mips-linux-tdep.o): Update. * mips-linux-nat.c: Include "inferior.h", "mips-linux-tdep.h", and <sys/ptrace.h>. (have_ptrace_regsets, super_fetch_registers, super_store_registers) (mips64_linux_regsets_fetch_registers) (mips64_linux_regsets_store_registers, mips64_linux_fetch_registers) (mips64_linux_store_registers): New. (_initialize_mips_linux_nat): Override to_fetch_registers and to_store_registers. * mips-linux-tdep.h: New file. * mips-linux-tdep.c: Include "mips-linux-tdep.c". (ELF_NGREG, ELF_NFPREG, elf_greg_t, elf_gregset_t, elf_fpreg_t) (elf_fpregset_t, FPR_BASE, PC, CAUSE, BADVADDR, MMHI, MMLO) (FPC_CSR, FPC_EIR, EF_REG0, EF_REG31, EF_LO, EF_HI, EF_CP0_EPC) (EF_CP0_BADVADDR, EF_CP0_STATUS, EF_CP0_CAUSE, EF_SIZE) (MIPS64_ELF_NGREG, MIPS64_ELF_NFPREG, mips64_elf_greg_t) (mips64_elf_gregset_t, mips64_elf_fpreg_t, mips64_elf_fpregset_t) (MIPS64_FPR_BASE, MIPS64_PC, MIPS64_CAUSE, MIPS64_BADVADDR) (MIPS64_MMHI, MIPS64_MMLO, MIPS64_FPC_CSR, MIPS64_FPC_EIR) (MIPS64_EF_REG0, MIPS64_EF_REG31, MIPS64_EF_LO, MIPS64_EF_HI) (MIPS64_EF_CP0_EPC, MIPS64_EF_CP0_BADVADDR, MIPS64_EF_CP0_STATUS) (MIPS64_EF_CP0_CAUSE, MIPS64_EF_SIZE): Delete. (supply_32bit_reg): Use gdb_byte. (supply_64bit_reg): New. (mips_supply_gregset, mips_fill_gregset, mips_supply_fpregset) (mips_fill_fpregset, fetch_core_registers, supply_gregset) (fill_gregset, supply_fpregset): Update for renamed types. (mips64_supply_gregset): Use gdb_byte and supply_64bit_reg. (mips64_fill_gregset): Make global. Handle 32-bit register sizes. (mips64_fill_fpregset): Make global. Use gdb_byte. Handle FP regsets properly.
2006-03-15 18:13:36 +01:00
super_fetch_registers = t->to_fetch_registers;
super_store_registers = t->to_store_registers;
t->to_fetch_registers = mips64_linux_fetch_registers;
t->to_store_registers = mips64_linux_store_registers;
t->to_can_use_hw_breakpoint = mips_linux_can_use_hw_breakpoint;
t->to_remove_watchpoint = mips_linux_remove_watchpoint;
t->to_insert_watchpoint = mips_linux_insert_watchpoint;
t->to_stopped_by_watchpoint = mips_linux_stopped_by_watchpoint;
t->to_stopped_data_address = mips_linux_stopped_data_address;
t->to_region_ok_for_hw_watchpoint = mips_linux_region_ok_for_hw_watchpoint;
t->to_read_description = mips_linux_read_description;
* linux-nat.c (linux_ops_saved): New. (super_mourn_inferior, kill_inferior, threaded, linux_nat_ops) (child_mourn_inferior, child_wait, linux_nat_create_inferior) (linux_nat_fetch_registers, linux_nat_store_registers) (linux_nat_child_post_startup_inferior, init_linux_nat_ops): Delete. (init_lwp_list): Don't set threaded. (add_lwp): Don't modify threaded. (delete_lwp): Don't mention non-threaded mode. (linux_nat_switch_fork): New. (linux_nat_attach): Update inferior_ptid. (linux_nat_wait): Handle num_lwps == 0 at entry. Don't check threaded flag. (linux_nat_kill): Handle pending forks and saved forks. (linux_nat_mourn_inferior): Handle saved forks. (linux_nat_pid_to_str): Don't use the LWP form when there is only one thread. (linux_target): Don't set to_wait, to_kill, or to_mourn_inferior. (linux_nat_add_target): New. (_initialize_linux_nat): Don't initialize the linux native target here. * linux-nat.h (linux_nat_add_target, linux_nat_switch_fork): New prototypes. * linux-fork.c: Include "linux-nat.h". (add_fork): Update initial PID. (fork_load_infrun_state): Call linux_nat_switch_fork. * Makefile.in (linux-fork.o): Update. * alpha-linux-nat.c (_initialize_alpha_linux_nat): Use linux_nat_add_target instead of add_target. * amd64-linux-nat.c (_initialize_amd64_linux_nat): Likewise. * arm-linux-nat.c (_initialize_arm_linux_nat): Likewise. * hppa-linux-nat.c (_initialize_hppa_linux_nat): Likewise. * ia64-linux-nat.c (_initialize_ia64_linux_nat): Likewise. * i386-linux-nat.c (_initialize_i386_linux_nat): Likewise. * m32r-linux-nat.c (_initialize_m32r_linux_nat): Likewise. * m68klinux-nat.c (_initialize_m68k_linux_nat): Likewise. * mips-linux-nat.c (_initialize_mips_linux_nat): Likewise. * ppc-linux-nat.c (_initialize_ppc_linux_nat): Likewise. * s390-nat.c (_initialize_s390_nat): Likewise. * sparc-linux-nat.c (_initialize_sparc_linux_nat): Likewise. * sparc64-linux-nat.c (_initialize_sparc64_linux_nat): Likewise.
2006-03-25 00:08:16 +01:00
linux_nat_add_target (t);
linux_nat_set_new_thread (t, mips_linux_new_thread);
/* Initialize the standard target descriptions. */
initialize_tdesc_mips_linux ();
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
initialize_tdesc_mips_dsp_linux ();
initialize_tdesc_mips64_linux ();
gdb/ * features/mips-dsp.xml: New file. * features/mips64-dsp.xml: New file. * features/mips-dsp-linux.xml: New file. * features/mips64-dsp-linux.xml: New file. * features/Makefile (WHICH): Add mips-dsp-linux and mips64-dsp-linux. (mips-dsp-expedite, mips64-dsp-expedite): New variables. * features/mips-dsp-linux.c: New file. * features/mips64-dsp-linux.c: New file. * regformats/mips-dsp-linux.dat: New file. * regformats/mips64-dsp-linux.dat: New file. * mips-linux-nat.c (mips_linux_register_addr): Handle DSP registers. (mips64_linux_register_addr): Likewise. (mips64_linux_regsets_fetch_registers): Likewise. (mips64_linux_regsets_store_registers): Likewise. (mips64_linux_fetch_registers): Update call to mips64_linux_regsets_fetch_registers. (mips64_linux_store_registers): Update call to mips64_linux_regsets_store_registers. (mips_linux_read_description): Probe for DSP registers. (_initialize_mips_linux_nat): Call initialize_tdesc_mips_dsp_linux and initialize_tdesc_mips64_dsp_linux. * mips-linux-tdep.c (supply_gregset, mips64_supply_gregset): Remove padding of no longer used embedded register slots. * mips-linux-tdep.h (DSP_BASE, DSP_CONTROL): New macros. (MIPS_RESTART_REGNUM): Redefine enum value. * mips-tdep.c (mips_generic_reg_names): Remove trailing null strings. (mips_tx39_reg_names): Likewise. (mips_linux_reg_names): New array of register names for Linux targets. (mips_register_name): Check for a null pointer in mips_processor_reg_names and return an empty string. (mips_register_type): Exclude embedded registers for the IRIX and Linux ABIs. (mips_pseudo_register_type): Likewise. Use dynamic numbers to refer to FP registers, LO, HI, BadVAddr, Cause and PC. Handle DSP registers. (mips_stab_reg_to_regnum): Handle DSP accumulators. (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Likewise. (mips_gdbarch_init): Likewise. Initialize internal register indices for the Linux ABI. Use dynamic numbers to refer to registers, as applicable, while parsing the target description. * mips-tdep.h (struct mips_regnum): Add dspacc/dspctl offsets. gdb/doc/ * gdb.texinfo (MIPS Features): Add org.gnu.gdb.mips.dsp. gdb/gdbserver/ * linux-low.h (linux_target_ops): Add regset_bitmap member. * linux-low.c (use_linux_regsets): New macro. [!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise. [!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise. (linux_register_in_regsets): New function. (usr_fetch_inferior_registers): Skip registers covered by regsets. (usr_store_inferior_registers): Likewise. (usr_fetch_inferior_registers): New macro. (usr_store_inferior_registers): Likewise. (linux_fetch_registers): Handle mixed regset/non-regset targets. (linux_store_registers): Likewise. * linux-mips-low.c (init_registers_mips_dsp_linux): New prototype. (init_registers_mips64_dsp_linux): Likewise. (init_registers_mips_linux): New macro. (init_registers_mips_dsp_linux): Likewise. (mips_dsp_num_regs): Likewise. (DSP_BASE, DSP_CONTROL): New fallback macros. (mips_base_regs): New macro. (mips_regmap): Use it. Fix the size. (mips_dsp_regmap): New variable. (mips_dsp_regset_bitmap): Likewise. (mips_arch_setup): New function. (mips_cannot_fetch_register): Use the_low_target.regmap rather than mips_regmap. (mips_cannot_store_register): Likewise. (the_low_target): Update .arch_setup, .num_regs and .regmap initializers. Add .regset_bitmap initializer. * linux-arm-low.c (the_low_target): Add .regset_bitmap initializer. * linux-bfin-low.c (the_low_target): Likewise. * linux-cris-low.c (the_low_target): Likewise. * linux-crisv32-low.c (the_low_target): Likewise. * linux-ia64-low.c (the_low_target): Likewise. * linux-m32r-low.c (the_low_target): Likewise. * linux-m68k-low.c (the_low_target): Likewise. * linux-ppc-low.c (the_low_target): Likewise. * linux-s390-low.c (the_low_target): Likewise. * linux-sh-low.c (the_low_target): Likewise. * linux-sparc-low.c (the_low_target): Likewise. * linux-tic6x-low.c (the_low_target): Likewise. * linux-x86-low.c (the_low_target): Likewise. * linux-xtensa-low.c (the_low_target): Likewise. * configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and mips64-dsp-linux.o to srv_regobj. Add mips-dsp-linux.xml, mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to srv_xmlfiles. * Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets. (mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise. gdb/testsuite/ * gdb.xml/tdesc-regs.exp: Add "mips-dsp.xml" to the list of MIPS core registers.
2012-03-01 23:19:48 +01:00
initialize_tdesc_mips64_dsp_linux ();
* Makefile.in (ALLDEPFILES): Update. (alpha-linux-nat.o, sparc-linux-nat.o): New rules. (amd64-linux-nat.o, arm-linux-nat.o, hppa-linux-nat.o) (i386-linux-nat.o, ia64-linux-nat.o, linux-nat.o, m32r-linux-nat.o) (m68klinux-nat.o, mips-linux-nat.o, ppc-linux-nat.o, s390-nat.o) (sparc64-linux-nat.o): Update dependencies. * alpha-linux-nat.c, sparc-linux-nat.c: New files. * amd64-linux-nat.c (amd64_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (amd64_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (amd64_linux_child_post_start_inferior): Renamed from child_post_startup_inferior and made static. Call super_post_startup_inferior. (super_post_startup_inferior): New. (_initialize_amd64_linux_nat): Set it. Call linux_target and add_target. * arm-linux-nat.c (arm_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (arm_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_arm_linux_nat): Add a prototype. Use linux_target and add_target. * hppa-linux-nat.c (hppa_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (hppa_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_hppa_linux_nat): New function. * i386-linux-nat.c (i386_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (i386_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (i386_linux_resume): Renamed from child_resume and made static. (i386_linux_child_post_start_inferior): Renamed from child_post_startup_inferior and made static. Call super_post_startup_inferior. (super_post_startup_inferior): New. (_initialize_i386_linux_nat): New function. * i386-nat.c: Remove LINUX_CHILD_POST_STARTUP_INFERIOR #ifndef. * ia64-linux-nat.c (ia64_linux_xfer_unwind_table): Remove. (super_xfer_partial): New. (ia64_linux_xfer_partial): New function. Use it. (_initialize_ia64_linux_nat): New function. * ia64-tdep.c (getunwind_table): Revert 2005-06-08 change; use target_read_partial and document the problem. * inf-ptrace.c (inf_ptrace_fetch_register): Use CANNOT_FETCH_REGISTER. Fix some comments. (inf_ptrace_store_register): Use CANNOT_STORE_REGISTER. Fix some comments. * linux-nat.c: Include "inf-ptrace.h" and "auxv.h". (linux_ops, super_xfer_partial): New variables. (linux_child_post_startup_inferior): Make static. (child_post_startup_inferior): Delete. (linux_nat_attach, linux_nat_detach, resume_callback) (linux_nat_resume, linux_nat_wait, linux_nat_create_inferior) (linux_nat_mourn_inferior): Use linux_ops instead of deprecated_child_ops. (child_wait): Do not depend on CHILD_WAIT. (linux_nat_xfer_memory): Remove, replace by ... (linux_nat_xfer_partial): ... this. Use linux_ops->to_xfer_partial instead of linux_proc_xfer_memory and child_xfer_memory. (linux_nat_fetch_registers, linux_nat_store_registers) (linux_nat_child_post_startup_inferior): New functions. (init_linux_nat_ops): Use the new functions. (linux_proc_xfer_memory): Remove, replace by ... (linux_proc_xfer_partial): ... this. Make static. (linux_xfer_partial, linux_register_u_offset, linux_target): New functions. (_initialize_linux_nat): Do not modify deprecated_child_ops. * linux-nat.h (linux_proc_xfer_memory): Remove prototype. (struct mem_attrib, struct target_ops): Remove forward declarations. (linux_child_post_startup_inferior): Remove prototype. (linux_target): Add prototype. * linux-thread-db.c (thread_db_xfer_memory): Remove, replace by ... (thread_db_xfer_partial): ... this. (init_thread_db_ops): Set to_xfer_partial instead of deprecated_xfer_memory. * m32r-linux-nat.c (m32r_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (m32r_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_m32r_linux_nat): New function. * m68klinux-nat.c (m68k_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (m68k_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (old_fetch_inferior_registers, old_store_inferior_registers): Made static. (_initialize_m68k_linux_nat): Use linux_target and add_target. * mips-linux-nat.c (_initialize_mips_linux_nat): New function. * ppc-linux-nat.c (ppc_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (ppc_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_ppc_linux_nat): New function. * s390-nat.c (s390_linux_fetch_inferior_registers): Renamed from fetch_inferior_registers and made static. (s390_linux_store_inferior_registers): Renamed from store_inferior_registers and made static. (_initialize_s390_nat): New function. * sparc64-linux-nat.c (_initialize_sparc64_linux_nat): Use linux_target and add_target. * config/nm-linux.h: Don't include "auxv.h". (struct target_waitstatus, child_wait, CHILD_WAIT) (CHILD_PID_TO_EXEC_FILE, CHILD_INSERT_FORK_CATCHPOINT) (CHILD_INSERT_VFORK_CATCHPOINT, CHILD_INSERT_EXEC_CATCHPOINT) (CHILD_POST_STARTUP_INFERIOR, CHILD_POST_ATTACH, CHILD_FOLLOW_FORK) (DEPRECATED_KILL_INFERIOR, NATIVE_XFER_AUXV): Delete. * config/alpha/alpha-linux.mh (NATDEPFILES): Replace infptrace.o and inftarg.o with inf-ptrace.o and alpha-linux-nat.o. * config/sparc/linux.mh (NATDEPFILES): Replace infptrace.o and inftarg.o with sparc-linux-nat.o. * config/sparc/linux64.mh (NATDEPFILES): Remove infptrace.o and inftarg.o. * config/arm/linux.mh (NATDEPFILES): Replace infptrace.o and inftarg.o with inf-ptrace.o. * config/i386/linux.mh (NATDEPFILES): Likewise. * config/i386/linux64.mh (NATDEPFILES): Likewise. * config/ia64/linux.mh (NATDEPFILES): Likewise. * config/m32r/linux.mh (NATDEPFILES): Likewise. * config/m68k/linux.mh (NATDEPFILES): Likewise. * config/mips/linux.mh (NATDEPFILES): Likewise. * config/pa/linux.mh (NATDEPFILES): Likewise. * config/powerpc/linux.mh (NATDEPFILES): Likewise. * config/powerpc/ppc64-linux.mh (NATDEPFILES): Likewise. * config/s390/s390.mh (NATDEPFILES): Likewise. * config/i386/nm-linux.h (DEPRECATED_CHILD_RESUME): Don't define. (LINUX_CHILD_POST_STARTUP_INFERIOR): Don't define. * config/i386/nm-linux64.h (LINUX_CHILD_POST_STARTUP_INFERIOR): Don't define. * config/ia64/nm-linux.h: Don't include "target.h". (NATIVE_XFER_UNWIND_TABLE, ia64_linux_xfer_unwind_table): Remove. * config/djgpp/fnchange.lst: Add alpha-linux-tdep.c, alpha-linux-nat.c, sparc-linux-tdep.c, and sparc-linux-nat.c.
2005-09-10 20:11:14 +02:00
}