From ab3b81262e3164b572fc8eada737809cc09c92f8 Mon Sep 17 00:00:00 2001 From: Jason Thorpe Date: Fri, 17 May 2002 06:55:49 +0000 Subject: * 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/sh-tdep.h | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 gdb/sh-tdep.h (limited to 'gdb/sh-tdep.h') diff --git a/gdb/sh-tdep.h b/gdb/sh-tdep.h new file mode 100644 index 0000000..81bb39d --- /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 */ -- cgit v1.1