]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/m68k-tdep.h
gdb: include gdbarch.h in all files extending gdbarch_tdep
[thirdparty/binutils-gdb.git] / gdb / m68k-tdep.h
CommitLineData
748894bf
MK
1/* Target-dependent code for the Motorola 68000 series.
2
3666a048 3 Copyright (C) 1990-2021 Free Software Foundation, Inc.
32eeb91a
AS
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
32eeb91a
AS
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
32eeb91a
AS
19
20#ifndef M68K_TDEP_H
21#define M68K_TDEP_H
22
76eb8ef1
SM
23#include "gdbarch.h"
24
8de307e0
AS
25struct frame_info;
26
748894bf 27/* Register numbers of various important registers. */
32eeb91a 28
748894bf 29enum m68k_regnum
32eeb91a
AS
30{
31 M68K_D0_REGNUM = 0,
8de307e0 32 M68K_D1_REGNUM = 1,
c0c2b0db
MK
33 M68K_D2_REGNUM = 2,
34 M68K_D7_REGNUM = 7,
32eeb91a
AS
35 M68K_A0_REGNUM = 8,
36 M68K_A1_REGNUM = 9,
c0c2b0db 37 M68K_A2_REGNUM = 10,
748894bf
MK
38 M68K_FP_REGNUM = 14, /* Address of executing stack frame. */
39 M68K_SP_REGNUM = 15, /* Address of top of stack. */
40 M68K_PS_REGNUM = 16, /* Processor status. */
41 M68K_PC_REGNUM = 17, /* Program counter. */
42 M68K_FP0_REGNUM = 18, /* Floating point register 0. */
43 M68K_FPC_REGNUM = 26, /* 68881 control register. */
44 M68K_FPS_REGNUM = 27, /* 68881 status register. */
32eeb91a
AS
45 M68K_FPI_REGNUM = 28
46};
47
748894bf
MK
48/* Number of machine registers. */
49#define M68K_NUM_REGS (M68K_FPI_REGNUM + 1)
8de307e0
AS
50
51/* Size of the largest register. */
52#define M68K_MAX_REGISTER_SIZE 12
53
c481dac7
AS
54/* Convention for returning structures. */
55
56enum struct_return
57{
58 pcc_struct_return, /* Return "short" structures in memory. */
59 reg_struct_return /* Return "short" structures in registers. */
60};
61
8ed86d01
VP
62/* Particular flavour of m68k. */
63enum m68k_flavour
64 {
65 m68k_no_flavour,
66 m68k_coldfire_flavour,
67 m68k_fido_flavour
68 };
69
eb2e12d7 70/* Target-dependent structure in gdbarch. */
748894bf 71
345bd07c 72struct m68k_gdbarch_tdep : gdbarch_tdep
eb2e12d7
AS
73{
74 /* Offset to PC value in the jump buffer. If this is negative,
75 longjmp support will be disabled. */
345bd07c 76 int jb_pc = 0;
eb2e12d7 77 /* The size of each entry in the jump buffer. */
345bd07c 78 size_t jb_elt_size = 0;
8de307e0 79
f595cb19
MK
80 /* Register in which the address to store a structure value is
81 passed to a function. */
345bd07c 82 int struct_value_regnum = 0;
f595cb19 83
3eba3a01
TT
84 /* Register in which a pointer value is returned. In the SVR4 ABI,
85 this is %a0, but in GCC's "embedded" ABI, this is %d0. */
345bd07c 86 int pointer_result_regnum = 0;
3eba3a01 87
c481dac7 88 /* Convention for returning structures. */
345bd07c 89 enum struct_return struct_return {};
8ed86d01
VP
90
91 /* Convention for returning floats. zero in int regs, non-zero in float. */
345bd07c 92 int float_return = 0;
8ed86d01
VP
93
94 /* The particular flavour of m68k. */
345bd07c 95 enum m68k_flavour flavour {};
8ed86d01
VP
96
97 /* Flag set if the floating point registers are present, or assumed
98 to be present. */
345bd07c 99 int fpregs_present = 0;
27067745
UW
100
101 /* ISA-specific data types. */
345bd07c
SM
102 struct type *m68k_ps_type = nullptr;
103 struct type *m68881_ext_type = nullptr;
eb2e12d7
AS
104};
105
f595cb19
MK
106/* Initialize a SVR4 architecture variant. */
107extern void m68k_svr4_init_abi (struct gdbarch_info, struct gdbarch *);
108\f
109
03b62bbb 110/* Functions exported from m68k-bsd-tdep.c. */
511dd2cd 111
6ba38425 112extern int m68kbsd_fpreg_offset (struct gdbarch *gdbarch, int regnum);
511dd2cd 113
748894bf 114#endif /* m68k-tdep.h */