Commit | Line | Data |
---|---|---|
748894bf MK |
1 | /* Target-dependent code for the Motorola 68000 series. |
2 | ||
42a4f53d | 3 | Copyright (C) 1990-2019 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 | ||
8de307e0 AS |
23 | struct frame_info; |
24 | ||
748894bf | 25 | /* Register numbers of various important registers. */ |
32eeb91a | 26 | |
748894bf | 27 | enum m68k_regnum |
32eeb91a AS |
28 | { |
29 | M68K_D0_REGNUM = 0, | |
8de307e0 | 30 | M68K_D1_REGNUM = 1, |
c0c2b0db MK |
31 | M68K_D2_REGNUM = 2, |
32 | M68K_D7_REGNUM = 7, | |
32eeb91a AS |
33 | M68K_A0_REGNUM = 8, |
34 | M68K_A1_REGNUM = 9, | |
c0c2b0db | 35 | M68K_A2_REGNUM = 10, |
748894bf MK |
36 | M68K_FP_REGNUM = 14, /* Address of executing stack frame. */ |
37 | M68K_SP_REGNUM = 15, /* Address of top of stack. */ | |
38 | M68K_PS_REGNUM = 16, /* Processor status. */ | |
39 | M68K_PC_REGNUM = 17, /* Program counter. */ | |
40 | M68K_FP0_REGNUM = 18, /* Floating point register 0. */ | |
41 | M68K_FPC_REGNUM = 26, /* 68881 control register. */ | |
42 | M68K_FPS_REGNUM = 27, /* 68881 status register. */ | |
32eeb91a AS |
43 | M68K_FPI_REGNUM = 28 |
44 | }; | |
45 | ||
748894bf MK |
46 | /* Number of machine registers. */ |
47 | #define M68K_NUM_REGS (M68K_FPI_REGNUM + 1) | |
8de307e0 AS |
48 | |
49 | /* Size of the largest register. */ | |
50 | #define M68K_MAX_REGISTER_SIZE 12 | |
51 | ||
c481dac7 AS |
52 | /* Convention for returning structures. */ |
53 | ||
54 | enum struct_return | |
55 | { | |
56 | pcc_struct_return, /* Return "short" structures in memory. */ | |
57 | reg_struct_return /* Return "short" structures in registers. */ | |
58 | }; | |
59 | ||
8ed86d01 VP |
60 | /* Particular flavour of m68k. */ |
61 | enum m68k_flavour | |
62 | { | |
63 | m68k_no_flavour, | |
64 | m68k_coldfire_flavour, | |
65 | m68k_fido_flavour | |
66 | }; | |
67 | ||
eb2e12d7 | 68 | /* Target-dependent structure in gdbarch. */ |
748894bf | 69 | |
eb2e12d7 AS |
70 | struct gdbarch_tdep |
71 | { | |
72 | /* Offset to PC value in the jump buffer. If this is negative, | |
73 | longjmp support will be disabled. */ | |
74 | int jb_pc; | |
75 | /* The size of each entry in the jump buffer. */ | |
76 | size_t jb_elt_size; | |
8de307e0 | 77 | |
f595cb19 MK |
78 | /* Register in which the address to store a structure value is |
79 | passed to a function. */ | |
80 | int struct_value_regnum; | |
81 | ||
c481dac7 AS |
82 | /* Convention for returning structures. */ |
83 | enum struct_return struct_return; | |
8ed86d01 VP |
84 | |
85 | /* Convention for returning floats. zero in int regs, non-zero in float. */ | |
86 | int float_return; | |
87 | ||
88 | /* The particular flavour of m68k. */ | |
89 | enum m68k_flavour flavour; | |
90 | ||
91 | /* Flag set if the floating point registers are present, or assumed | |
92 | to be present. */ | |
93 | int fpregs_present; | |
27067745 UW |
94 | |
95 | /* ISA-specific data types. */ | |
209bd28e | 96 | struct type *m68k_ps_type; |
27067745 | 97 | struct type *m68881_ext_type; |
eb2e12d7 AS |
98 | }; |
99 | ||
f595cb19 MK |
100 | /* Initialize a SVR4 architecture variant. */ |
101 | extern void m68k_svr4_init_abi (struct gdbarch_info, struct gdbarch *); | |
102 | \f | |
103 | ||
03b62bbb | 104 | /* Functions exported from m68k-bsd-tdep.c. */ |
511dd2cd | 105 | |
6ba38425 | 106 | extern int m68kbsd_fpreg_offset (struct gdbarch *gdbarch, int regnum); |
511dd2cd | 107 | |
748894bf | 108 | #endif /* m68k-tdep.h */ |