From ab3b81262e3164b572fc8eada737809cc09c92f8 Mon Sep 17 00:00:00 2001 From: Jason Thorpe Date: Fri, 17 May 2002 06:55:49 +0000 Subject: [PATCH] * Makefile.in (sh_tdep_h): Define and use. * config/sh/tm-sh.h (sh_osabi, sh_abi, gdbarch_tdep, register enum): Move to... * * sh-tdep.h: ...here. * sh-tdep.c: Include sh-tdep.h. * sh3-rom.c: Likewise. * shnbsd-tdep.c: Likewise. --- gdb/ChangeLog | 10 ++++ gdb/Makefile.in | 5 +- gdb/config/sh/tm-sh.h | 94 -------------------------------- gdb/sh-tdep.c | 2 + gdb/sh-tdep.h | 121 ++++++++++++++++++++++++++++++++++++++++++ gdb/sh3-rom.c | 2 + gdb/shnbsd-tdep.c | 1 + 7 files changed, 139 insertions(+), 96 deletions(-) create mode 100644 gdb/sh-tdep.h diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6de3b8e68b..bfdf13cf57 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2002-05-17 Jason Thorpe + + * Makefile.in (sh_tdep_h): Define and use. + * config/sh/tm-sh.h (sh_osabi, sh_abi, gdbarch_tdep, + register enum): Move to... + * * sh-tdep.h: ...here. + * sh-tdep.c: Include sh-tdep.h. + * sh3-rom.c: Likewise. + * shnbsd-tdep.c: Likewise. + 2002-05-16 Michael Snyder * arm-tdep.c: Spelling fix in comment. diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 333cbc39e5..37abd9f1e8 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -649,6 +649,7 @@ remote_h = remote.h remote_utils_h = remote-utils.h $(target_h) ser_unix_h = ser-unix.h serial_h = serial.h +sh_tdep_h = sh-tdep.h solist_h = solist.h source_h = source.h stabsread_h = stabsread.h @@ -2052,11 +2053,11 @@ serial.o: serial.c $(defs_h) $(serial_h) $(gdb_string_h) sh-tdep.o: sh-tdep.c $(bfd_h) $(dis_asm_h) \ $(srcdir)/../opcodes/sh-opc.h $(defs_h) $(expression_h) $(frame_h) \ $(gdbcmd_h) $(gdbtypes_h) $(symtab_h) $(value_h) $(arch_utils_h) \ - $(regcache_h) $(doublest_h) + $(regcache_h) $(doublest_h) $(sh_tdep_h) sh3-rom.o: sh3-rom.c $(monitor_h) $(bfd_h) $(gdb_wait_h) $(defs_h) $(gdbcmd_h) \ $(inferior_h) $(target_h) $(serial_h) $(terminal_h) $(arch_utils_h) \ - $(regcache_h) + $(regcache_h) $(sh_tdep_h) signals.o: signals/signals.c $(defs_h) $(target_h) $(CC) -c $(INTERNAL_CFLAGS) $< diff --git a/gdb/config/sh/tm-sh.h b/gdb/config/sh/tm-sh.h index bae87b8bbe..6ae6085d9b 100644 --- a/gdb/config/sh/tm-sh.h +++ b/gdb/config/sh/tm-sh.h @@ -23,100 +23,6 @@ #define GDB_MULTI_ARCH 1 -/* Information that is dependent on the processor variant. */ - -/* ABI variants that we know about. If you add to this enum, please - update the table of names in sh-tdep.c. */ -enum sh_osabi -{ - SH_OSABI_UNKNOWN = 0, - SH_OSABI_LINUX, - SH_OSABI_NETBSD_ELF, - - SH_OSABI_INVALID /* Keep this last. */ -}; - -enum sh_abi - { - SH_ABI_UNKNOWN, - SH_ABI_32, - SH_ABI_64 - }; - -struct gdbarch_tdep - { - int PR_REGNUM; - int FPUL_REGNUM; /* sh3e, sh4 */ - int FPSCR_REGNUM; /* sh3e, sh4 */ - int SR_REGNUM; /* sh-dsp, sh3, sh3-dsp, sh3e, sh4 */ - int DSR_REGNUM; /* sh-dsp, sh3-dsp */ - int FP_LAST_REGNUM; /* sh3e, sh4 */ - int A0G_REGNUM; /* sh-dsp, sh3-dsp */ - int A0_REGNUM; /* sh-dsp, sh3-dsp */ - int A1G_REGNUM; /* sh-dsp, sh3-dsp */ - int A1_REGNUM; /* sh-dsp, sh3-dsp */ - int M0_REGNUM; /* sh-dsp, sh3-dsp */ - int M1_REGNUM; /* sh-dsp, sh3-dsp */ - int X0_REGNUM; /* sh-dsp, sh3-dsp */ - int X1_REGNUM; /* sh-dsp, sh3-dsp */ - int Y0_REGNUM; /* sh-dsp, sh3-dsp */ - int Y1_REGNUM; /* sh-dsp, sh3-dsp */ - int MOD_REGNUM; /* sh-dsp, sh3-dsp */ - int SSR_REGNUM; /* sh3, sh3-dsp, sh3e, sh4 */ - int SPC_REGNUM; /* sh3, sh3-dsp, sh3e, sh4 */ - int RS_REGNUM; /* sh-dsp, sh3-dsp */ - int RE_REGNUM; /* sh-dsp, sh3-dsp */ - int DR0_REGNUM; /* sh4 */ - int DR_LAST_REGNUM; /* sh4 */ - int FV0_REGNUM; /* sh4 */ - int FV_LAST_REGNUM; /* sh4 */ - /* FPP stands for Floating Point Pair, to avoid confusion with - GDB's FP0_REGNUM, which is the number of the first Floating - point register. Unfortunately on the sh5, the floating point - registers are called FR, and the floating point pairs are called FP. */ - int TR7_REGNUM; /* sh5-media*/ - int FPP0_REGNUM; /* sh5-media*/ - int FPP_LAST_REGNUM; /* sh5-media*/ - int R0_C_REGNUM; /* sh5-compact*/ - int R_LAST_C_REGNUM; /* sh5-compact*/ - int PC_C_REGNUM; /* sh5-compact*/ - int GBR_C_REGNUM; /* sh5-compact*/ - int MACH_C_REGNUM; /* sh5-compact*/ - int MACL_C_REGNUM; /* sh5-compact*/ - int PR_C_REGNUM; /* sh5-compact*/ - int T_C_REGNUM; /* sh5-compact*/ - int FPSCR_C_REGNUM; /* sh5-compact*/ - int FPUL_C_REGNUM; /* sh5-compact*/ - int FP0_C_REGNUM; /* sh5-compact*/ - int FP_LAST_C_REGNUM; /* sh5-compact*/ - int DR0_C_REGNUM; /* sh5-compact*/ - int DR_LAST_C_REGNUM; /* sh5-compact*/ - int FV0_C_REGNUM; /* sh5-compact*/ - int FV_LAST_C_REGNUM; /* sh5-compact*/ - int ARG0_REGNUM; - int ARGLAST_REGNUM; - int FLOAT_ARGLAST_REGNUM; - int RETURN_REGNUM; - enum sh_osabi sh_osabi; /* OS/ABI of the inferior */ - const char *osabi_name; /* Name of the above */ - enum sh_abi sh_abi; - }; - -/* Registers common to all the SH variants. */ -enum - { - R0_REGNUM = 0, - STRUCT_RETURN_REGNUM = 2, - ARG0_REGNUM = 4, /* Used in h8300-tdep.c */ - ARGLAST_REGNUM = 7, /* Used in h8300-tdep.c */ - PR_REGNUM = 17, /* used in sh3-rom.c */ - GBR_REGNUM = 18, - VBR_REGNUM = 19, - MACH_REGNUM = 20, - MACL_REGNUM = 21, - SR_REGNUM = 22 - }; - #define NUM_REALREGS 59 /* used in remote-e7000.c which is not multiarched. */ #define REGISTER_TYPE long /* used in standalone.c */ diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c index b768692997..4f5a2519c8 100644 --- a/gdb/sh-tdep.c +++ b/gdb/sh-tdep.c @@ -41,6 +41,8 @@ #include "regcache.h" #include "doublest.h" +#include "sh-tdep.h" + #include "elf-bfd.h" #include "solib-svr4.h" diff --git a/gdb/sh-tdep.h b/gdb/sh-tdep.h new file mode 100644 index 0000000000..81bb39d25a --- /dev/null +++ b/gdb/sh-tdep.h @@ -0,0 +1,121 @@ +/* Target-specific definition for a Hitachi Super-H. + Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 + Free Software Foundation, Inc. + + 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 2 of the License, or + (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, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef SH_TDEP_H +#define SH_TDEP_H + +/* Contributed by Steve Chamberlain sac@cygnus.com */ + +/* Information that is dependent on the processor variant. */ + +/* ABI variants that we know about. If you add to this enum, please + update the table of names in sh-tdep.c. */ +enum sh_osabi +{ + SH_OSABI_UNKNOWN = 0, + SH_OSABI_LINUX, + SH_OSABI_NETBSD_ELF, + + SH_OSABI_INVALID /* Keep this last. */ +}; + +enum sh_abi + { + SH_ABI_UNKNOWN, + SH_ABI_32, + SH_ABI_64 + }; + +struct gdbarch_tdep + { + int PR_REGNUM; + int FPUL_REGNUM; /* sh3e, sh4 */ + int FPSCR_REGNUM; /* sh3e, sh4 */ + int SR_REGNUM; /* sh-dsp, sh3, sh3-dsp, sh3e, sh4 */ + int DSR_REGNUM; /* sh-dsp, sh3-dsp */ + int FP_LAST_REGNUM; /* sh3e, sh4 */ + int A0G_REGNUM; /* sh-dsp, sh3-dsp */ + int A0_REGNUM; /* sh-dsp, sh3-dsp */ + int A1G_REGNUM; /* sh-dsp, sh3-dsp */ + int A1_REGNUM; /* sh-dsp, sh3-dsp */ + int M0_REGNUM; /* sh-dsp, sh3-dsp */ + int M1_REGNUM; /* sh-dsp, sh3-dsp */ + int X0_REGNUM; /* sh-dsp, sh3-dsp */ + int X1_REGNUM; /* sh-dsp, sh3-dsp */ + int Y0_REGNUM; /* sh-dsp, sh3-dsp */ + int Y1_REGNUM; /* sh-dsp, sh3-dsp */ + int MOD_REGNUM; /* sh-dsp, sh3-dsp */ + int SSR_REGNUM; /* sh3, sh3-dsp, sh3e, sh4 */ + int SPC_REGNUM; /* sh3, sh3-dsp, sh3e, sh4 */ + int RS_REGNUM; /* sh-dsp, sh3-dsp */ + int RE_REGNUM; /* sh-dsp, sh3-dsp */ + int DR0_REGNUM; /* sh4 */ + int DR_LAST_REGNUM; /* sh4 */ + int FV0_REGNUM; /* sh4 */ + int FV_LAST_REGNUM; /* sh4 */ + /* FPP stands for Floating Point Pair, to avoid confusion with + GDB's FP0_REGNUM, which is the number of the first Floating + point register. Unfortunately on the sh5, the floating point + registers are called FR, and the floating point pairs are called FP. */ + int TR7_REGNUM; /* sh5-media*/ + int FPP0_REGNUM; /* sh5-media*/ + int FPP_LAST_REGNUM; /* sh5-media*/ + int R0_C_REGNUM; /* sh5-compact*/ + int R_LAST_C_REGNUM; /* sh5-compact*/ + int PC_C_REGNUM; /* sh5-compact*/ + int GBR_C_REGNUM; /* sh5-compact*/ + int MACH_C_REGNUM; /* sh5-compact*/ + int MACL_C_REGNUM; /* sh5-compact*/ + int PR_C_REGNUM; /* sh5-compact*/ + int T_C_REGNUM; /* sh5-compact*/ + int FPSCR_C_REGNUM; /* sh5-compact*/ + int FPUL_C_REGNUM; /* sh5-compact*/ + int FP0_C_REGNUM; /* sh5-compact*/ + int FP_LAST_C_REGNUM; /* sh5-compact*/ + int DR0_C_REGNUM; /* sh5-compact*/ + int DR_LAST_C_REGNUM; /* sh5-compact*/ + int FV0_C_REGNUM; /* sh5-compact*/ + int FV_LAST_C_REGNUM; /* sh5-compact*/ + int ARG0_REGNUM; + int ARGLAST_REGNUM; + int FLOAT_ARGLAST_REGNUM; + int RETURN_REGNUM; + enum sh_osabi sh_osabi; /* OS/ABI of the inferior */ + const char *osabi_name; /* Name of the above */ + enum sh_abi sh_abi; + }; + +/* Registers common to all the SH variants. */ +enum + { + R0_REGNUM = 0, + STRUCT_RETURN_REGNUM = 2, + ARG0_REGNUM = 4, /* Used in h8300-tdep.c */ + ARGLAST_REGNUM = 7, /* Used in h8300-tdep.c */ + PR_REGNUM = 17, /* used in sh3-rom.c */ + GBR_REGNUM = 18, + VBR_REGNUM = 19, + MACH_REGNUM = 20, + MACL_REGNUM = 21, + SR_REGNUM = 22 + }; + +#endif /* SH_TDEP_H */ diff --git a/gdb/sh3-rom.c b/gdb/sh3-rom.c index 2b07bd83c8..f450ac9d5f 100644 --- a/gdb/sh3-rom.c +++ b/gdb/sh3-rom.c @@ -28,6 +28,8 @@ #include "arch-utils.h" #include "regcache.h" +#include "sh-tdep.h" + static struct serial *parallel; static int parallel_in_use; diff --git a/gdb/shnbsd-tdep.c b/gdb/shnbsd-tdep.c index 5f9903d8d7..7ac04892bc 100644 --- a/gdb/shnbsd-tdep.c +++ b/gdb/shnbsd-tdep.c @@ -25,6 +25,7 @@ #include "value.h" #include "nbsd-tdep.h" +#include "sh-tdep.h" #include "shnbsd-tdep.h" /* Convert an r0-r15 register number into an offset into a ptrace