X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gdb%2Fm68k-tdep.h;h=c70a26e8554901fd8a325d3db80029316f69d8b5;hb=1ead4b8ed29a8dfb565eb120d527286c3051adfd;hp=be28d8863912efd590ef76a066b8c1f29faae290;hpb=17e20bce79d64f0856cd38d3e00b56beb6fa7e8c;p=binutils-gdb.git diff --git a/gdb/m68k-tdep.h b/gdb/m68k-tdep.h index be28d886391..c70a26e8554 100644 --- a/gdb/m68k-tdep.h +++ b/gdb/m68k-tdep.h @@ -1,13 +1,12 @@ /* Target-dependent code for the Motorola 68000 series. - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, - 2001, 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 1990-2022 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 + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -16,13 +15,13 @@ 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. */ + along with this program. If not, see . */ #ifndef M68K_TDEP_H #define M68K_TDEP_H +#include "gdbarch.h" + struct frame_info; /* Register numbers of various important registers. */ @@ -31,8 +30,11 @@ enum m68k_regnum { M68K_D0_REGNUM = 0, M68K_D1_REGNUM = 1, + M68K_D2_REGNUM = 2, + M68K_D7_REGNUM = 7, M68K_A0_REGNUM = 8, M68K_A1_REGNUM = 9, + M68K_A2_REGNUM = 10, M68K_FP_REGNUM = 14, /* Address of executing stack frame. */ M68K_SP_REGNUM = 15, /* Address of top of stack. */ M68K_PS_REGNUM = 16, /* Processor status. */ @@ -57,22 +59,56 @@ enum struct_return reg_struct_return /* Return "short" structures in registers. */ }; +/* Particular flavour of m68k. */ +enum m68k_flavour + { + m68k_no_flavour, + m68k_coldfire_flavour, + m68k_fido_flavour + }; + /* Target-dependent structure in gdbarch. */ -struct gdbarch_tdep +struct m68k_gdbarch_tdep : gdbarch_tdep { /* Offset to PC value in the jump buffer. If this is negative, longjmp support will be disabled. */ - int jb_pc; + int jb_pc = 0; /* The size of each entry in the jump buffer. */ - size_t jb_elt_size; + size_t jb_elt_size = 0; + + /* Register in which the address to store a structure value is + passed to a function. */ + int struct_value_regnum = 0; + + /* Register in which a pointer value is returned. In the SVR4 ABI, + this is %a0, but in GCC's "embedded" ABI, this is %d0. */ + int pointer_result_regnum = 0; /* Convention for returning structures. */ - enum struct_return struct_return; + enum struct_return struct_return {}; + + /* Convention for returning floats. zero in int regs, non-zero in float. */ + int float_return = 0; + + /* The particular flavour of m68k. */ + enum m68k_flavour flavour {}; + + /* Flag set if the floating point registers are present, or assumed + to be present. */ + int fpregs_present = 0; + + /* ISA-specific data types. */ + struct type *m68k_ps_type = nullptr; + struct type *m68881_ext_type = nullptr; }; -/* Functions exported from m68kbsd-tdep.c. */ +/* Initialize a SVR4 architecture variant. */ +extern void m68k_svr4_init_abi (struct gdbarch_info, struct gdbarch *); + + +/* Functions exported from m68k-bsd-tdep.c. */ -extern int m68kbsd_fpreg_offset (int regnum); +extern int m68kbsd_fpreg_offset (struct gdbarch *gdbarch, int regnum); #endif /* m68k-tdep.h */