* config/mh-openedition.h: Added -DLE370 definition.
[deliverable/binutils-gdb.git] / gdb / gdbarch.h
CommitLineData
59233f88
AC
1/* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
2
adf40b2e 3/* Dynamic architecture support for GDB, the GNU debugger.
b83266a0 4 Copyright 1998-1999, Free Software Foundation, Inc.
c906108c 5
c5aa993b 6 This file is part of GDB.
c906108c 7
c5aa993b
JM
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
c906108c 12
c5aa993b
JM
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
c906108c 17
c5aa993b
JM
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA. */
c906108c 22
104c1213
JM
23/* This file was created with the aid of ``gdbarch.sh''.
24
25 The bourn shell script ``gdbarch.sh'' creates the files
26 ``new-gdbarch.c'' and ``new-gdbarch.h and then compares them
27 against the existing ``gdbarch.[hc]''. Any differences found
28 being reported.
29
30 If editing this file, please also run gdbarch.sh and merge any
31 changes into that script. Conversely, when makeing sweeping changes
32 to this file, modifying gdbarch.sh and using its output may prove
33 easier. */
adf40b2e 34
c906108c
SS
35#ifndef GDBARCH_H
36#define GDBARCH_H
37
cce74817
JM
38struct frame_info;
39struct value;
cce74817 40
0f71a2f6
JM
41
42#ifndef GDB_MULTI_ARCH
43#define GDB_MULTI_ARCH 0
44#endif
45
46extern struct gdbarch *current_gdbarch;
47
48
49/* See gdb/doc/gdbint.texi for a discussion of the GDB_MULTI_ARCH
50 macro */
51
52
53/* If any of the following are defined, the target wasn't correctly
54 converted. */
55
0f71a2f6
JM
56#if GDB_MULTI_ARCH
57#if defined (EXTRA_FRAME_INFO)
58#error "EXTRA_FRAME_INFO: replaced by struct frame_extra_info"
59#endif
60#endif
61
62#if GDB_MULTI_ARCH
63#if defined (FRAME_FIND_SAVED_REGS)
64#error "FRAME_FIND_SAVED_REGS: replaced by FRAME_INIT_SAVED_REGS"
65#endif
66#endif
67
68
69/* The following are pre-initialized by GDBARCH. */
70
104c1213 71extern const struct bfd_arch_info * gdbarch_bfd_arch_info (struct gdbarch *gdbarch);
0f71a2f6
JM
72/* set_gdbarch_bfd_arch_info() - not applicable - pre-initialized. */
73#if GDB_MULTI_ARCH
74#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_ARCHITECTURE)
75#define TARGET_ARCHITECTURE (gdbarch_bfd_arch_info (current_gdbarch))
76#endif
77#endif
78
104c1213 79extern int gdbarch_byte_order (struct gdbarch *gdbarch);
0f71a2f6
JM
80/* set_gdbarch_byte_order() - not applicable - pre-initialized. */
81#if GDB_MULTI_ARCH
82#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_BYTE_ORDER)
83#define TARGET_BYTE_ORDER (gdbarch_byte_order (current_gdbarch))
84#endif
85#endif
86
87
88/* The following are initialized by the target dependant code. */
89
33489c5b
AC
90/* Default (value) for non- multi-arch platforms. */
91#if (GDB_MULTI_ARCH == 0) && !defined (TARGET_BFD_VMA_BIT)
92#define TARGET_BFD_VMA_BIT (TARGET_ARCHITECTURE->bits_per_address)
93#endif
94
c4093a6a
JM
95extern int gdbarch_bfd_vma_bit (struct gdbarch *gdbarch);
96extern void set_gdbarch_bfd_vma_bit (struct gdbarch *gdbarch, int bfd_vma_bit);
33489c5b 97#if GDB_MULTI_ARCH
c4093a6a
JM
98#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_BFD_VMA_BIT)
99#define TARGET_BFD_VMA_BIT (gdbarch_bfd_vma_bit (current_gdbarch))
100#endif
33489c5b 101#endif
c4093a6a 102
104c1213
JM
103extern int gdbarch_ptr_bit (struct gdbarch *gdbarch);
104extern void set_gdbarch_ptr_bit (struct gdbarch *gdbarch, int ptr_bit);
0f71a2f6
JM
105#if GDB_MULTI_ARCH
106#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_PTR_BIT)
107#define TARGET_PTR_BIT (gdbarch_ptr_bit (current_gdbarch))
108#endif
109#endif
110
104c1213
JM
111extern int gdbarch_short_bit (struct gdbarch *gdbarch);
112extern void set_gdbarch_short_bit (struct gdbarch *gdbarch, int short_bit);
0f71a2f6
JM
113#if GDB_MULTI_ARCH
114#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_SHORT_BIT)
115#define TARGET_SHORT_BIT (gdbarch_short_bit (current_gdbarch))
116#endif
117#endif
118
104c1213
JM
119extern int gdbarch_int_bit (struct gdbarch *gdbarch);
120extern void set_gdbarch_int_bit (struct gdbarch *gdbarch, int int_bit);
0f71a2f6
JM
121#if GDB_MULTI_ARCH
122#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_INT_BIT)
123#define TARGET_INT_BIT (gdbarch_int_bit (current_gdbarch))
124#endif
125#endif
126
104c1213
JM
127extern int gdbarch_long_bit (struct gdbarch *gdbarch);
128extern void set_gdbarch_long_bit (struct gdbarch *gdbarch, int long_bit);
0f71a2f6
JM
129#if GDB_MULTI_ARCH
130#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_LONG_BIT)
131#define TARGET_LONG_BIT (gdbarch_long_bit (current_gdbarch))
132#endif
133#endif
134
104c1213
JM
135extern int gdbarch_long_long_bit (struct gdbarch *gdbarch);
136extern void set_gdbarch_long_long_bit (struct gdbarch *gdbarch, int long_long_bit);
0f71a2f6
JM
137#if GDB_MULTI_ARCH
138#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_LONG_LONG_BIT)
139#define TARGET_LONG_LONG_BIT (gdbarch_long_long_bit (current_gdbarch))
140#endif
141#endif
142
104c1213
JM
143extern int gdbarch_float_bit (struct gdbarch *gdbarch);
144extern void set_gdbarch_float_bit (struct gdbarch *gdbarch, int float_bit);
0f71a2f6
JM
145#if GDB_MULTI_ARCH
146#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_FLOAT_BIT)
147#define TARGET_FLOAT_BIT (gdbarch_float_bit (current_gdbarch))
148#endif
149#endif
150
104c1213
JM
151extern int gdbarch_double_bit (struct gdbarch *gdbarch);
152extern void set_gdbarch_double_bit (struct gdbarch *gdbarch, int double_bit);
0f71a2f6
JM
153#if GDB_MULTI_ARCH
154#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_DOUBLE_BIT)
155#define TARGET_DOUBLE_BIT (gdbarch_double_bit (current_gdbarch))
156#endif
157#endif
158
104c1213
JM
159extern int gdbarch_long_double_bit (struct gdbarch *gdbarch);
160extern void set_gdbarch_long_double_bit (struct gdbarch *gdbarch, int long_double_bit);
0f71a2f6
JM
161#if GDB_MULTI_ARCH
162#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_LONG_DOUBLE_BIT)
163#define TARGET_LONG_DOUBLE_BIT (gdbarch_long_double_bit (current_gdbarch))
164#endif
165#endif
166
33489c5b
AC
167/* Default (value) for non- multi-arch platforms. */
168#if (GDB_MULTI_ARCH == 0) && !defined (IEEE_FLOAT)
169#define IEEE_FLOAT (0)
170#endif
171
7355ddba
JB
172extern int gdbarch_ieee_float (struct gdbarch *gdbarch);
173extern void set_gdbarch_ieee_float (struct gdbarch *gdbarch, int ieee_float);
33489c5b 174#if GDB_MULTI_ARCH
7355ddba
JB
175#if (GDB_MULTI_ARCH > 1) || !defined (IEEE_FLOAT)
176#define IEEE_FLOAT (gdbarch_ieee_float (current_gdbarch))
177#endif
33489c5b 178#endif
7355ddba 179
104c1213
JM
180typedef CORE_ADDR (gdbarch_read_pc_ftype) (int pid);
181extern CORE_ADDR gdbarch_read_pc (struct gdbarch *gdbarch, int pid);
182extern void set_gdbarch_read_pc (struct gdbarch *gdbarch, gdbarch_read_pc_ftype *read_pc);
0f71a2f6
JM
183#if GDB_MULTI_ARCH
184#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_READ_PC)
185#define TARGET_READ_PC(pid) (gdbarch_read_pc (current_gdbarch, pid))
186#endif
187#endif
188
104c1213
JM
189typedef void (gdbarch_write_pc_ftype) (CORE_ADDR val, int pid);
190extern void gdbarch_write_pc (struct gdbarch *gdbarch, CORE_ADDR val, int pid);
191extern void set_gdbarch_write_pc (struct gdbarch *gdbarch, gdbarch_write_pc_ftype *write_pc);
0f71a2f6
JM
192#if GDB_MULTI_ARCH
193#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_WRITE_PC)
194#define TARGET_WRITE_PC(val, pid) (gdbarch_write_pc (current_gdbarch, val, pid))
195#endif
196#endif
197
104c1213
JM
198typedef CORE_ADDR (gdbarch_read_fp_ftype) (void);
199extern CORE_ADDR gdbarch_read_fp (struct gdbarch *gdbarch);
200extern void set_gdbarch_read_fp (struct gdbarch *gdbarch, gdbarch_read_fp_ftype *read_fp);
0f71a2f6
JM
201#if GDB_MULTI_ARCH
202#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_READ_FP)
203#define TARGET_READ_FP() (gdbarch_read_fp (current_gdbarch))
204#endif
205#endif
206
104c1213
JM
207typedef void (gdbarch_write_fp_ftype) (CORE_ADDR val);
208extern void gdbarch_write_fp (struct gdbarch *gdbarch, CORE_ADDR val);
209extern void set_gdbarch_write_fp (struct gdbarch *gdbarch, gdbarch_write_fp_ftype *write_fp);
0f71a2f6
JM
210#if GDB_MULTI_ARCH
211#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_WRITE_FP)
212#define TARGET_WRITE_FP(val) (gdbarch_write_fp (current_gdbarch, val))
213#endif
214#endif
215
104c1213
JM
216typedef CORE_ADDR (gdbarch_read_sp_ftype) (void);
217extern CORE_ADDR gdbarch_read_sp (struct gdbarch *gdbarch);
218extern void set_gdbarch_read_sp (struct gdbarch *gdbarch, gdbarch_read_sp_ftype *read_sp);
0f71a2f6
JM
219#if GDB_MULTI_ARCH
220#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_READ_SP)
221#define TARGET_READ_SP() (gdbarch_read_sp (current_gdbarch))
222#endif
223#endif
224
104c1213
JM
225typedef void (gdbarch_write_sp_ftype) (CORE_ADDR val);
226extern void gdbarch_write_sp (struct gdbarch *gdbarch, CORE_ADDR val);
227extern void set_gdbarch_write_sp (struct gdbarch *gdbarch, gdbarch_write_sp_ftype *write_sp);
0f71a2f6
JM
228#if GDB_MULTI_ARCH
229#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_WRITE_SP)
230#define TARGET_WRITE_SP(val) (gdbarch_write_sp (current_gdbarch, val))
231#endif
232#endif
233
104c1213
JM
234extern int gdbarch_num_regs (struct gdbarch *gdbarch);
235extern void set_gdbarch_num_regs (struct gdbarch *gdbarch, int num_regs);
0f71a2f6
JM
236#if GDB_MULTI_ARCH
237#if (GDB_MULTI_ARCH > 1) || !defined (NUM_REGS)
238#define NUM_REGS (gdbarch_num_regs (current_gdbarch))
239#endif
240#endif
241
0aba1244
EZ
242/* Default (value) for non- multi-arch platforms. */
243#if (GDB_MULTI_ARCH == 0) && !defined (NUM_PSEUDO_REGS)
244#define NUM_PSEUDO_REGS (0)
245#endif
246
247extern int gdbarch_num_pseudo_regs (struct gdbarch *gdbarch);
248extern void set_gdbarch_num_pseudo_regs (struct gdbarch *gdbarch, int num_pseudo_regs);
249#if GDB_MULTI_ARCH
250#if (GDB_MULTI_ARCH > 1) || !defined (NUM_PSEUDO_REGS)
251#define NUM_PSEUDO_REGS (gdbarch_num_pseudo_regs (current_gdbarch))
252#endif
253#endif
254
104c1213
JM
255extern int gdbarch_sp_regnum (struct gdbarch *gdbarch);
256extern void set_gdbarch_sp_regnum (struct gdbarch *gdbarch, int sp_regnum);
0f71a2f6
JM
257#if GDB_MULTI_ARCH
258#if (GDB_MULTI_ARCH > 1) || !defined (SP_REGNUM)
259#define SP_REGNUM (gdbarch_sp_regnum (current_gdbarch))
260#endif
261#endif
262
104c1213
JM
263extern int gdbarch_fp_regnum (struct gdbarch *gdbarch);
264extern void set_gdbarch_fp_regnum (struct gdbarch *gdbarch, int fp_regnum);
0f71a2f6
JM
265#if GDB_MULTI_ARCH
266#if (GDB_MULTI_ARCH > 1) || !defined (FP_REGNUM)
267#define FP_REGNUM (gdbarch_fp_regnum (current_gdbarch))
268#endif
269#endif
270
104c1213
JM
271extern int gdbarch_pc_regnum (struct gdbarch *gdbarch);
272extern void set_gdbarch_pc_regnum (struct gdbarch *gdbarch, int pc_regnum);
0f71a2f6
JM
273#if GDB_MULTI_ARCH
274#if (GDB_MULTI_ARCH > 1) || !defined (PC_REGNUM)
275#define PC_REGNUM (gdbarch_pc_regnum (current_gdbarch))
276#endif
277#endif
278
60054393
MS
279/* Default (value) for non- multi-arch platforms. */
280#if (GDB_MULTI_ARCH == 0) && !defined (FP0_REGNUM)
281#define FP0_REGNUM (-1)
282#endif
283
284extern int gdbarch_fp0_regnum (struct gdbarch *gdbarch);
285extern void set_gdbarch_fp0_regnum (struct gdbarch *gdbarch, int fp0_regnum);
286#if GDB_MULTI_ARCH
287#if (GDB_MULTI_ARCH > 1) || !defined (FP0_REGNUM)
288#define FP0_REGNUM (gdbarch_fp0_regnum (current_gdbarch))
289#endif
290#endif
291
03863182
AC
292/* Default (value) for non- multi-arch platforms. */
293#if (GDB_MULTI_ARCH == 0) && !defined (NPC_REGNUM)
294#define NPC_REGNUM (-1)
295#endif
296
297extern int gdbarch_npc_regnum (struct gdbarch *gdbarch);
298extern void set_gdbarch_npc_regnum (struct gdbarch *gdbarch, int npc_regnum);
299#if GDB_MULTI_ARCH
300#if (GDB_MULTI_ARCH > 1) || !defined (NPC_REGNUM)
301#define NPC_REGNUM (gdbarch_npc_regnum (current_gdbarch))
302#endif
303#endif
304
305/* Default (value) for non- multi-arch platforms. */
306#if (GDB_MULTI_ARCH == 0) && !defined (NNPC_REGNUM)
307#define NNPC_REGNUM (-1)
308#endif
309
310extern int gdbarch_nnpc_regnum (struct gdbarch *gdbarch);
311extern void set_gdbarch_nnpc_regnum (struct gdbarch *gdbarch, int nnpc_regnum);
312#if GDB_MULTI_ARCH
313#if (GDB_MULTI_ARCH > 1) || !defined (NNPC_REGNUM)
314#define NNPC_REGNUM (gdbarch_nnpc_regnum (current_gdbarch))
315#endif
316#endif
317
33489c5b
AC
318/* Default (function) for non- multi-arch platforms. */
319#if (GDB_MULTI_ARCH == 0) && !defined (REGISTER_NAME)
320#define REGISTER_NAME(regnr) (legacy_register_name (regnr))
321#endif
322
104c1213
JM
323typedef char * (gdbarch_register_name_ftype) (int regnr);
324extern char * gdbarch_register_name (struct gdbarch *gdbarch, int regnr);
325extern void set_gdbarch_register_name (struct gdbarch *gdbarch, gdbarch_register_name_ftype *register_name);
33489c5b 326#if GDB_MULTI_ARCH
0f71a2f6
JM
327#if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_NAME)
328#define REGISTER_NAME(regnr) (gdbarch_register_name (current_gdbarch, regnr))
329#endif
33489c5b 330#endif
0f71a2f6 331
104c1213
JM
332extern int gdbarch_register_size (struct gdbarch *gdbarch);
333extern void set_gdbarch_register_size (struct gdbarch *gdbarch, int register_size);
0f71a2f6
JM
334#if GDB_MULTI_ARCH
335#if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_SIZE)
336#define REGISTER_SIZE (gdbarch_register_size (current_gdbarch))
337#endif
338#endif
339
104c1213
JM
340extern int gdbarch_register_bytes (struct gdbarch *gdbarch);
341extern void set_gdbarch_register_bytes (struct gdbarch *gdbarch, int register_bytes);
0f71a2f6
JM
342#if GDB_MULTI_ARCH
343#if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_BYTES)
344#define REGISTER_BYTES (gdbarch_register_bytes (current_gdbarch))
345#endif
346#endif
347
104c1213
JM
348typedef int (gdbarch_register_byte_ftype) (int reg_nr);
349extern int gdbarch_register_byte (struct gdbarch *gdbarch, int reg_nr);
350extern void set_gdbarch_register_byte (struct gdbarch *gdbarch, gdbarch_register_byte_ftype *register_byte);
0f71a2f6
JM
351#if GDB_MULTI_ARCH
352#if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_BYTE)
353#define REGISTER_BYTE(reg_nr) (gdbarch_register_byte (current_gdbarch, reg_nr))
354#endif
355#endif
356
104c1213
JM
357typedef int (gdbarch_register_raw_size_ftype) (int reg_nr);
358extern int gdbarch_register_raw_size (struct gdbarch *gdbarch, int reg_nr);
359extern void set_gdbarch_register_raw_size (struct gdbarch *gdbarch, gdbarch_register_raw_size_ftype *register_raw_size);
0f71a2f6
JM
360#if GDB_MULTI_ARCH
361#if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_RAW_SIZE)
362#define REGISTER_RAW_SIZE(reg_nr) (gdbarch_register_raw_size (current_gdbarch, reg_nr))
363#endif
364#endif
365
104c1213
JM
366extern int gdbarch_max_register_raw_size (struct gdbarch *gdbarch);
367extern void set_gdbarch_max_register_raw_size (struct gdbarch *gdbarch, int max_register_raw_size);
0f71a2f6
JM
368#if GDB_MULTI_ARCH
369#if (GDB_MULTI_ARCH > 1) || !defined (MAX_REGISTER_RAW_SIZE)
370#define MAX_REGISTER_RAW_SIZE (gdbarch_max_register_raw_size (current_gdbarch))
371#endif
372#endif
373
104c1213
JM
374typedef int (gdbarch_register_virtual_size_ftype) (int reg_nr);
375extern int gdbarch_register_virtual_size (struct gdbarch *gdbarch, int reg_nr);
376extern void set_gdbarch_register_virtual_size (struct gdbarch *gdbarch, gdbarch_register_virtual_size_ftype *register_virtual_size);
0f71a2f6
JM
377#if GDB_MULTI_ARCH
378#if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_VIRTUAL_SIZE)
379#define REGISTER_VIRTUAL_SIZE(reg_nr) (gdbarch_register_virtual_size (current_gdbarch, reg_nr))
380#endif
381#endif
382
104c1213
JM
383extern int gdbarch_max_register_virtual_size (struct gdbarch *gdbarch);
384extern void set_gdbarch_max_register_virtual_size (struct gdbarch *gdbarch, int max_register_virtual_size);
0f71a2f6
JM
385#if GDB_MULTI_ARCH
386#if (GDB_MULTI_ARCH > 1) || !defined (MAX_REGISTER_VIRTUAL_SIZE)
387#define MAX_REGISTER_VIRTUAL_SIZE (gdbarch_max_register_virtual_size (current_gdbarch))
388#endif
389#endif
390
104c1213
JM
391typedef struct type * (gdbarch_register_virtual_type_ftype) (int reg_nr);
392extern struct type * gdbarch_register_virtual_type (struct gdbarch *gdbarch, int reg_nr);
393extern void set_gdbarch_register_virtual_type (struct gdbarch *gdbarch, gdbarch_register_virtual_type_ftype *register_virtual_type);
0f71a2f6
JM
394#if GDB_MULTI_ARCH
395#if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_VIRTUAL_TYPE)
396#define REGISTER_VIRTUAL_TYPE(reg_nr) (gdbarch_register_virtual_type (current_gdbarch, reg_nr))
397#endif
398#endif
399
104c1213
JM
400extern int gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch);
401extern void set_gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch, int use_generic_dummy_frames);
0f71a2f6
JM
402#if GDB_MULTI_ARCH
403#if (GDB_MULTI_ARCH > 1) || !defined (USE_GENERIC_DUMMY_FRAMES)
404#define USE_GENERIC_DUMMY_FRAMES (gdbarch_use_generic_dummy_frames (current_gdbarch))
405#endif
406#endif
407
104c1213
JM
408extern int gdbarch_call_dummy_location (struct gdbarch *gdbarch);
409extern void set_gdbarch_call_dummy_location (struct gdbarch *gdbarch, int call_dummy_location);
0f71a2f6
JM
410#if GDB_MULTI_ARCH
411#if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_LOCATION)
412#define CALL_DUMMY_LOCATION (gdbarch_call_dummy_location (current_gdbarch))
413#endif
414#endif
415
104c1213
JM
416typedef CORE_ADDR (gdbarch_call_dummy_address_ftype) (void);
417extern CORE_ADDR gdbarch_call_dummy_address (struct gdbarch *gdbarch);
418extern void set_gdbarch_call_dummy_address (struct gdbarch *gdbarch, gdbarch_call_dummy_address_ftype *call_dummy_address);
0f71a2f6
JM
419#if GDB_MULTI_ARCH
420#if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_ADDRESS)
421#define CALL_DUMMY_ADDRESS() (gdbarch_call_dummy_address (current_gdbarch))
422#endif
423#endif
424
104c1213
JM
425extern CORE_ADDR gdbarch_call_dummy_start_offset (struct gdbarch *gdbarch);
426extern void set_gdbarch_call_dummy_start_offset (struct gdbarch *gdbarch, CORE_ADDR call_dummy_start_offset);
0f71a2f6
JM
427#if GDB_MULTI_ARCH
428#if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_START_OFFSET)
429#define CALL_DUMMY_START_OFFSET (gdbarch_call_dummy_start_offset (current_gdbarch))
430#endif
431#endif
432
104c1213
JM
433extern CORE_ADDR gdbarch_call_dummy_breakpoint_offset (struct gdbarch *gdbarch);
434extern void set_gdbarch_call_dummy_breakpoint_offset (struct gdbarch *gdbarch, CORE_ADDR call_dummy_breakpoint_offset);
0f71a2f6
JM
435#if GDB_MULTI_ARCH
436#if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_BREAKPOINT_OFFSET)
437#define CALL_DUMMY_BREAKPOINT_OFFSET (gdbarch_call_dummy_breakpoint_offset (current_gdbarch))
438#endif
439#endif
440
104c1213
JM
441extern int gdbarch_call_dummy_breakpoint_offset_p (struct gdbarch *gdbarch);
442extern void set_gdbarch_call_dummy_breakpoint_offset_p (struct gdbarch *gdbarch, int call_dummy_breakpoint_offset_p);
0f71a2f6
JM
443#if GDB_MULTI_ARCH
444#if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_BREAKPOINT_OFFSET_P)
445#define CALL_DUMMY_BREAKPOINT_OFFSET_P (gdbarch_call_dummy_breakpoint_offset_p (current_gdbarch))
446#endif
447#endif
448
104c1213
JM
449extern int gdbarch_call_dummy_length (struct gdbarch *gdbarch);
450extern void set_gdbarch_call_dummy_length (struct gdbarch *gdbarch, int call_dummy_length);
0f71a2f6
JM
451#if GDB_MULTI_ARCH
452#if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_LENGTH)
453#define CALL_DUMMY_LENGTH (gdbarch_call_dummy_length (current_gdbarch))
454#endif
455#endif
456
104c1213
JM
457typedef int (gdbarch_pc_in_call_dummy_ftype) (CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address);
458extern int gdbarch_pc_in_call_dummy (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address);
459extern void set_gdbarch_pc_in_call_dummy (struct gdbarch *gdbarch, gdbarch_pc_in_call_dummy_ftype *pc_in_call_dummy);
0f71a2f6
JM
460#if GDB_MULTI_ARCH
461#if (GDB_MULTI_ARCH > 1) || !defined (PC_IN_CALL_DUMMY)
462#define PC_IN_CALL_DUMMY(pc, sp, frame_address) (gdbarch_pc_in_call_dummy (current_gdbarch, pc, sp, frame_address))
463#endif
464#endif
465
104c1213
JM
466extern int gdbarch_call_dummy_p (struct gdbarch *gdbarch);
467extern void set_gdbarch_call_dummy_p (struct gdbarch *gdbarch, int call_dummy_p);
0f71a2f6
JM
468#if GDB_MULTI_ARCH
469#if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_P)
470#define CALL_DUMMY_P (gdbarch_call_dummy_p (current_gdbarch))
471#endif
472#endif
473
33489c5b
AC
474/* Default (value) for non- multi-arch platforms. */
475#if (GDB_MULTI_ARCH == 0) && !defined (CALL_DUMMY_WORDS)
476#define CALL_DUMMY_WORDS (legacy_call_dummy_words)
477#endif
478
104c1213
JM
479extern LONGEST * gdbarch_call_dummy_words (struct gdbarch *gdbarch);
480extern void set_gdbarch_call_dummy_words (struct gdbarch *gdbarch, LONGEST * call_dummy_words);
33489c5b 481#if GDB_MULTI_ARCH
0f71a2f6
JM
482#if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_WORDS)
483#define CALL_DUMMY_WORDS (gdbarch_call_dummy_words (current_gdbarch))
484#endif
33489c5b
AC
485#endif
486
487/* Default (value) for non- multi-arch platforms. */
488#if (GDB_MULTI_ARCH == 0) && !defined (SIZEOF_CALL_DUMMY_WORDS)
489#define SIZEOF_CALL_DUMMY_WORDS (legacy_sizeof_call_dummy_words)
490#endif
0f71a2f6 491
104c1213
JM
492extern int gdbarch_sizeof_call_dummy_words (struct gdbarch *gdbarch);
493extern void set_gdbarch_sizeof_call_dummy_words (struct gdbarch *gdbarch, int sizeof_call_dummy_words);
33489c5b 494#if GDB_MULTI_ARCH
0f71a2f6
JM
495#if (GDB_MULTI_ARCH > 1) || !defined (SIZEOF_CALL_DUMMY_WORDS)
496#define SIZEOF_CALL_DUMMY_WORDS (gdbarch_sizeof_call_dummy_words (current_gdbarch))
497#endif
33489c5b 498#endif
0f71a2f6 499
104c1213
JM
500extern int gdbarch_call_dummy_stack_adjust_p (struct gdbarch *gdbarch);
501extern void set_gdbarch_call_dummy_stack_adjust_p (struct gdbarch *gdbarch, int call_dummy_stack_adjust_p);
0f71a2f6
JM
502#if GDB_MULTI_ARCH
503#if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_STACK_ADJUST_P)
504#define CALL_DUMMY_STACK_ADJUST_P (gdbarch_call_dummy_stack_adjust_p (current_gdbarch))
505#endif
506#endif
507
104c1213
JM
508extern int gdbarch_call_dummy_stack_adjust (struct gdbarch *gdbarch);
509extern void set_gdbarch_call_dummy_stack_adjust (struct gdbarch *gdbarch, int call_dummy_stack_adjust);
0f71a2f6
JM
510#if GDB_MULTI_ARCH
511#if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_STACK_ADJUST)
512#define CALL_DUMMY_STACK_ADJUST (gdbarch_call_dummy_stack_adjust (current_gdbarch))
513#endif
514#endif
515
104c1213
JM
516typedef void (gdbarch_fix_call_dummy_ftype) (char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs, struct value **args, struct type *type, int gcc_p);
517extern void gdbarch_fix_call_dummy (struct gdbarch *gdbarch, char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs, struct value **args, struct type *type, int gcc_p);
518extern void set_gdbarch_fix_call_dummy (struct gdbarch *gdbarch, gdbarch_fix_call_dummy_ftype *fix_call_dummy);
0f71a2f6
JM
519#if GDB_MULTI_ARCH
520#if (GDB_MULTI_ARCH > 1) || !defined (FIX_CALL_DUMMY)
521#define FIX_CALL_DUMMY(dummy, pc, fun, nargs, args, type, gcc_p) (gdbarch_fix_call_dummy (current_gdbarch, dummy, pc, fun, nargs, args, type, gcc_p))
522#endif
523#endif
524
104c1213
JM
525extern int gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch);
526extern void set_gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch, int believe_pcc_promotion);
0f71a2f6
JM
527#if GDB_MULTI_ARCH
528#if (GDB_MULTI_ARCH > 1) || !defined (BELIEVE_PCC_PROMOTION)
529#define BELIEVE_PCC_PROMOTION (gdbarch_believe_pcc_promotion (current_gdbarch))
530#endif
531#endif
532
104c1213
JM
533extern int gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch);
534extern void set_gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch, int believe_pcc_promotion_type);
0f71a2f6
JM
535#if GDB_MULTI_ARCH
536#if (GDB_MULTI_ARCH > 1) || !defined (BELIEVE_PCC_PROMOTION_TYPE)
537#define BELIEVE_PCC_PROMOTION_TYPE (gdbarch_believe_pcc_promotion_type (current_gdbarch))
538#endif
539#endif
540
33489c5b
AC
541/* Default (function) for non- multi-arch platforms. */
542#if (GDB_MULTI_ARCH == 0) && !defined (COERCE_FLOAT_TO_DOUBLE)
543#define COERCE_FLOAT_TO_DOUBLE(formal, actual) (default_coerce_float_to_double (formal, actual))
544#endif
545
b9a8e3bf
JB
546typedef int (gdbarch_coerce_float_to_double_ftype) (struct type *formal, struct type *actual);
547extern int gdbarch_coerce_float_to_double (struct gdbarch *gdbarch, struct type *formal, struct type *actual);
548extern void set_gdbarch_coerce_float_to_double (struct gdbarch *gdbarch, gdbarch_coerce_float_to_double_ftype *coerce_float_to_double);
33489c5b 549#if GDB_MULTI_ARCH
b9a8e3bf
JB
550#if (GDB_MULTI_ARCH > 1) || !defined (COERCE_FLOAT_TO_DOUBLE)
551#define COERCE_FLOAT_TO_DOUBLE(formal, actual) (gdbarch_coerce_float_to_double (current_gdbarch, formal, actual))
552#endif
33489c5b 553#endif
b9a8e3bf 554
104c1213
JM
555typedef void (gdbarch_get_saved_register_ftype) (char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval);
556extern void gdbarch_get_saved_register (struct gdbarch *gdbarch, char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval);
557extern void set_gdbarch_get_saved_register (struct gdbarch *gdbarch, gdbarch_get_saved_register_ftype *get_saved_register);
0f71a2f6
JM
558#if GDB_MULTI_ARCH
559#if (GDB_MULTI_ARCH > 1) || !defined (GET_SAVED_REGISTER)
560#define GET_SAVED_REGISTER(raw_buffer, optimized, addrp, frame, regnum, lval) (gdbarch_get_saved_register (current_gdbarch, raw_buffer, optimized, addrp, frame, regnum, lval))
561#endif
562#endif
563
33489c5b
AC
564/* Default (function) for non- multi-arch platforms. */
565#if (GDB_MULTI_ARCH == 0) && !defined (REGISTER_CONVERTIBLE)
566#define REGISTER_CONVERTIBLE(nr) (generic_register_convertible_not (nr))
567#endif
568
104c1213
JM
569typedef int (gdbarch_register_convertible_ftype) (int nr);
570extern int gdbarch_register_convertible (struct gdbarch *gdbarch, int nr);
571extern void set_gdbarch_register_convertible (struct gdbarch *gdbarch, gdbarch_register_convertible_ftype *register_convertible);
33489c5b 572#if GDB_MULTI_ARCH
0f71a2f6
JM
573#if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_CONVERTIBLE)
574#define REGISTER_CONVERTIBLE(nr) (gdbarch_register_convertible (current_gdbarch, nr))
575#endif
33489c5b
AC
576#endif
577
578/* Default (function) for non- multi-arch platforms. */
579#if (GDB_MULTI_ARCH == 0) && !defined (REGISTER_CONVERT_TO_VIRTUAL)
580#define REGISTER_CONVERT_TO_VIRTUAL(regnum, type, from, to) (internal_error ("REGISTER_CONVERT_TO_VIRTUAL"), 0)
581#endif
0f71a2f6 582
104c1213
JM
583typedef void (gdbarch_register_convert_to_virtual_ftype) (int regnum, struct type *type, char *from, char *to);
584extern void gdbarch_register_convert_to_virtual (struct gdbarch *gdbarch, int regnum, struct type *type, char *from, char *to);
585extern void set_gdbarch_register_convert_to_virtual (struct gdbarch *gdbarch, gdbarch_register_convert_to_virtual_ftype *register_convert_to_virtual);
33489c5b 586#if GDB_MULTI_ARCH
0f71a2f6
JM
587#if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_CONVERT_TO_VIRTUAL)
588#define REGISTER_CONVERT_TO_VIRTUAL(regnum, type, from, to) (gdbarch_register_convert_to_virtual (current_gdbarch, regnum, type, from, to))
589#endif
33489c5b
AC
590#endif
591
592/* Default (function) for non- multi-arch platforms. */
593#if (GDB_MULTI_ARCH == 0) && !defined (REGISTER_CONVERT_TO_RAW)
594#define REGISTER_CONVERT_TO_RAW(type, regnum, from, to) (internal_error ("REGISTER_CONVERT_TO_RAW"), 0)
595#endif
0f71a2f6 596
104c1213
JM
597typedef void (gdbarch_register_convert_to_raw_ftype) (struct type *type, int regnum, char *from, char *to);
598extern void gdbarch_register_convert_to_raw (struct gdbarch *gdbarch, struct type *type, int regnum, char *from, char *to);
599extern void set_gdbarch_register_convert_to_raw (struct gdbarch *gdbarch, gdbarch_register_convert_to_raw_ftype *register_convert_to_raw);
33489c5b 600#if GDB_MULTI_ARCH
0f71a2f6
JM
601#if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_CONVERT_TO_RAW)
602#define REGISTER_CONVERT_TO_RAW(type, regnum, from, to) (gdbarch_register_convert_to_raw (current_gdbarch, type, regnum, from, to))
603#endif
33489c5b
AC
604#endif
605
7f1b2585
EZ
606/* Default (function) for non- multi-arch platforms. */
607#if (GDB_MULTI_ARCH == 0) && !defined (FETCH_PSEUDO_REGISTER)
608#define FETCH_PSEUDO_REGISTER(regnum) (internal_error ("FETCH_PSEUDO_REGISTER"), 0)
609#endif
610
611typedef void (gdbarch_fetch_pseudo_register_ftype) (int regnum);
612extern void gdbarch_fetch_pseudo_register (struct gdbarch *gdbarch, int regnum);
613extern void set_gdbarch_fetch_pseudo_register (struct gdbarch *gdbarch, gdbarch_fetch_pseudo_register_ftype *fetch_pseudo_register);
614#if GDB_MULTI_ARCH
615#if (GDB_MULTI_ARCH > 1) || !defined (FETCH_PSEUDO_REGISTER)
616#define FETCH_PSEUDO_REGISTER(regnum) (gdbarch_fetch_pseudo_register (current_gdbarch, regnum))
617#endif
618#endif
619
620/* Default (function) for non- multi-arch platforms. */
621#if (GDB_MULTI_ARCH == 0) && !defined (STORE_PSEUDO_REGISTER)
622#define STORE_PSEUDO_REGISTER(regnum) (internal_error ("STORE_PSEUDO_REGISTER"), 0)
623#endif
624
625typedef void (gdbarch_store_pseudo_register_ftype) (int regnum);
626extern void gdbarch_store_pseudo_register (struct gdbarch *gdbarch, int regnum);
627extern void set_gdbarch_store_pseudo_register (struct gdbarch *gdbarch, gdbarch_store_pseudo_register_ftype *store_pseudo_register);
628#if GDB_MULTI_ARCH
629#if (GDB_MULTI_ARCH > 1) || !defined (STORE_PSEUDO_REGISTER)
630#define STORE_PSEUDO_REGISTER(regnum) (gdbarch_store_pseudo_register (current_gdbarch, regnum))
631#endif
632#endif
633
33489c5b
AC
634/* Default (function) for non- multi-arch platforms. */
635#if (GDB_MULTI_ARCH == 0) && !defined (POINTER_TO_ADDRESS)
ac2e2ef7 636#define POINTER_TO_ADDRESS(type, buf) (unsigned_pointer_to_address (type, buf))
33489c5b 637#endif
4478b372 638
ac2e2ef7
AC
639typedef CORE_ADDR (gdbarch_pointer_to_address_ftype) (struct type *type, void *buf);
640extern CORE_ADDR gdbarch_pointer_to_address (struct gdbarch *gdbarch, struct type *type, void *buf);
4478b372 641extern void set_gdbarch_pointer_to_address (struct gdbarch *gdbarch, gdbarch_pointer_to_address_ftype *pointer_to_address);
33489c5b 642#if GDB_MULTI_ARCH
4478b372
JB
643#if (GDB_MULTI_ARCH > 1) || !defined (POINTER_TO_ADDRESS)
644#define POINTER_TO_ADDRESS(type, buf) (gdbarch_pointer_to_address (current_gdbarch, type, buf))
645#endif
33489c5b
AC
646#endif
647
648/* Default (function) for non- multi-arch platforms. */
649#if (GDB_MULTI_ARCH == 0) && !defined (ADDRESS_TO_POINTER)
ac2e2ef7 650#define ADDRESS_TO_POINTER(type, buf, addr) (unsigned_address_to_pointer (type, buf, addr))
33489c5b 651#endif
4478b372 652
ac2e2ef7
AC
653typedef void (gdbarch_address_to_pointer_ftype) (struct type *type, void *buf, CORE_ADDR addr);
654extern void gdbarch_address_to_pointer (struct gdbarch *gdbarch, struct type *type, void *buf, CORE_ADDR addr);
4478b372 655extern void set_gdbarch_address_to_pointer (struct gdbarch *gdbarch, gdbarch_address_to_pointer_ftype *address_to_pointer);
33489c5b 656#if GDB_MULTI_ARCH
4478b372
JB
657#if (GDB_MULTI_ARCH > 1) || !defined (ADDRESS_TO_POINTER)
658#define ADDRESS_TO_POINTER(type, buf, addr) (gdbarch_address_to_pointer (current_gdbarch, type, buf, addr))
659#endif
33489c5b
AC
660#endif
661
662/* Default (function) for non- multi-arch platforms. */
663#if (GDB_MULTI_ARCH == 0) && !defined (RETURN_VALUE_ON_STACK)
664#define RETURN_VALUE_ON_STACK(type) (generic_return_value_on_stack_not (type))
665#endif
0f71a2f6 666
71a9f22e
JB
667typedef int (gdbarch_return_value_on_stack_ftype) (struct type *type);
668extern int gdbarch_return_value_on_stack (struct gdbarch *gdbarch, struct type *type);
669extern void set_gdbarch_return_value_on_stack (struct gdbarch *gdbarch, gdbarch_return_value_on_stack_ftype *return_value_on_stack);
33489c5b 670#if GDB_MULTI_ARCH
71a9f22e
JB
671#if (GDB_MULTI_ARCH > 1) || !defined (RETURN_VALUE_ON_STACK)
672#define RETURN_VALUE_ON_STACK(type) (gdbarch_return_value_on_stack (current_gdbarch, type))
673#endif
33489c5b 674#endif
71a9f22e 675
104c1213
JM
676typedef void (gdbarch_extract_return_value_ftype) (struct type *type, char *regbuf, char *valbuf);
677extern void gdbarch_extract_return_value (struct gdbarch *gdbarch, struct type *type, char *regbuf, char *valbuf);
678extern void set_gdbarch_extract_return_value (struct gdbarch *gdbarch, gdbarch_extract_return_value_ftype *extract_return_value);
0f71a2f6
JM
679#if GDB_MULTI_ARCH
680#if (GDB_MULTI_ARCH > 1) || !defined (EXTRACT_RETURN_VALUE)
681#define EXTRACT_RETURN_VALUE(type, regbuf, valbuf) (gdbarch_extract_return_value (current_gdbarch, type, regbuf, valbuf))
682#endif
683#endif
684
104c1213
JM
685typedef CORE_ADDR (gdbarch_push_arguments_ftype) (int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr);
686extern CORE_ADDR gdbarch_push_arguments (struct gdbarch *gdbarch, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr);
687extern void set_gdbarch_push_arguments (struct gdbarch *gdbarch, gdbarch_push_arguments_ftype *push_arguments);
0f71a2f6
JM
688#if GDB_MULTI_ARCH
689#if (GDB_MULTI_ARCH > 1) || !defined (PUSH_ARGUMENTS)
690#define PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) (gdbarch_push_arguments (current_gdbarch, nargs, args, sp, struct_return, struct_addr))
691#endif
692#endif
693
104c1213
JM
694typedef void (gdbarch_push_dummy_frame_ftype) (void);
695extern void gdbarch_push_dummy_frame (struct gdbarch *gdbarch);
696extern void set_gdbarch_push_dummy_frame (struct gdbarch *gdbarch, gdbarch_push_dummy_frame_ftype *push_dummy_frame);
0f71a2f6
JM
697#if GDB_MULTI_ARCH
698#if (GDB_MULTI_ARCH > 1) || !defined (PUSH_DUMMY_FRAME)
699#define PUSH_DUMMY_FRAME (gdbarch_push_dummy_frame (current_gdbarch))
700#endif
701#endif
702
104c1213
JM
703typedef CORE_ADDR (gdbarch_push_return_address_ftype) (CORE_ADDR pc, CORE_ADDR sp);
704extern CORE_ADDR gdbarch_push_return_address (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR sp);
705extern void set_gdbarch_push_return_address (struct gdbarch *gdbarch, gdbarch_push_return_address_ftype *push_return_address);
0f71a2f6
JM
706#if GDB_MULTI_ARCH
707#if (GDB_MULTI_ARCH > 1) || !defined (PUSH_RETURN_ADDRESS)
708#define PUSH_RETURN_ADDRESS(pc, sp) (gdbarch_push_return_address (current_gdbarch, pc, sp))
709#endif
710#endif
711
104c1213
JM
712typedef void (gdbarch_pop_frame_ftype) (void);
713extern void gdbarch_pop_frame (struct gdbarch *gdbarch);
714extern void set_gdbarch_pop_frame (struct gdbarch *gdbarch, gdbarch_pop_frame_ftype *pop_frame);
0f71a2f6
JM
715#if GDB_MULTI_ARCH
716#if (GDB_MULTI_ARCH > 1) || !defined (POP_FRAME)
717#define POP_FRAME (gdbarch_pop_frame (current_gdbarch))
718#endif
719#endif
720
33489c5b
AC
721/* Default (function) for non- multi-arch platforms. */
722#if (GDB_MULTI_ARCH == 0) && !defined (D10V_MAKE_DADDR)
723#define D10V_MAKE_DADDR(x) (internal_error ("D10V_MAKE_DADDR"), 0)
724#endif
725
104c1213
JM
726typedef CORE_ADDR (gdbarch_d10v_make_daddr_ftype) (CORE_ADDR x);
727extern CORE_ADDR gdbarch_d10v_make_daddr (struct gdbarch *gdbarch, CORE_ADDR x);
728extern void set_gdbarch_d10v_make_daddr (struct gdbarch *gdbarch, gdbarch_d10v_make_daddr_ftype *d10v_make_daddr);
33489c5b 729#if GDB_MULTI_ARCH
0f71a2f6
JM
730#if (GDB_MULTI_ARCH > 1) || !defined (D10V_MAKE_DADDR)
731#define D10V_MAKE_DADDR(x) (gdbarch_d10v_make_daddr (current_gdbarch, x))
732#endif
33489c5b
AC
733#endif
734
735/* Default (function) for non- multi-arch platforms. */
736#if (GDB_MULTI_ARCH == 0) && !defined (D10V_MAKE_IADDR)
737#define D10V_MAKE_IADDR(x) (internal_error ("D10V_MAKE_IADDR"), 0)
738#endif
0f71a2f6 739
104c1213
JM
740typedef CORE_ADDR (gdbarch_d10v_make_iaddr_ftype) (CORE_ADDR x);
741extern CORE_ADDR gdbarch_d10v_make_iaddr (struct gdbarch *gdbarch, CORE_ADDR x);
742extern void set_gdbarch_d10v_make_iaddr (struct gdbarch *gdbarch, gdbarch_d10v_make_iaddr_ftype *d10v_make_iaddr);
33489c5b 743#if GDB_MULTI_ARCH
0f71a2f6
JM
744#if (GDB_MULTI_ARCH > 1) || !defined (D10V_MAKE_IADDR)
745#define D10V_MAKE_IADDR(x) (gdbarch_d10v_make_iaddr (current_gdbarch, x))
746#endif
33489c5b
AC
747#endif
748
749/* Default (function) for non- multi-arch platforms. */
750#if (GDB_MULTI_ARCH == 0) && !defined (D10V_DADDR_P)
751#define D10V_DADDR_P(x) (internal_error ("D10V_DADDR_P"), 0)
752#endif
0f71a2f6 753
104c1213
JM
754typedef int (gdbarch_d10v_daddr_p_ftype) (CORE_ADDR x);
755extern int gdbarch_d10v_daddr_p (struct gdbarch *gdbarch, CORE_ADDR x);
756extern void set_gdbarch_d10v_daddr_p (struct gdbarch *gdbarch, gdbarch_d10v_daddr_p_ftype *d10v_daddr_p);
33489c5b 757#if GDB_MULTI_ARCH
0f71a2f6
JM
758#if (GDB_MULTI_ARCH > 1) || !defined (D10V_DADDR_P)
759#define D10V_DADDR_P(x) (gdbarch_d10v_daddr_p (current_gdbarch, x))
760#endif
33489c5b
AC
761#endif
762
763/* Default (function) for non- multi-arch platforms. */
764#if (GDB_MULTI_ARCH == 0) && !defined (D10V_IADDR_P)
765#define D10V_IADDR_P(x) (internal_error ("D10V_IADDR_P"), 0)
766#endif
0f71a2f6 767
104c1213
JM
768typedef int (gdbarch_d10v_iaddr_p_ftype) (CORE_ADDR x);
769extern int gdbarch_d10v_iaddr_p (struct gdbarch *gdbarch, CORE_ADDR x);
770extern void set_gdbarch_d10v_iaddr_p (struct gdbarch *gdbarch, gdbarch_d10v_iaddr_p_ftype *d10v_iaddr_p);
33489c5b 771#if GDB_MULTI_ARCH
0f71a2f6
JM
772#if (GDB_MULTI_ARCH > 1) || !defined (D10V_IADDR_P)
773#define D10V_IADDR_P(x) (gdbarch_d10v_iaddr_p (current_gdbarch, x))
774#endif
33489c5b
AC
775#endif
776
777/* Default (function) for non- multi-arch platforms. */
778#if (GDB_MULTI_ARCH == 0) && !defined (D10V_CONVERT_DADDR_TO_RAW)
779#define D10V_CONVERT_DADDR_TO_RAW(x) (internal_error ("D10V_CONVERT_DADDR_TO_RAW"), 0)
780#endif
0f71a2f6 781
104c1213
JM
782typedef CORE_ADDR (gdbarch_d10v_convert_daddr_to_raw_ftype) (CORE_ADDR x);
783extern CORE_ADDR gdbarch_d10v_convert_daddr_to_raw (struct gdbarch *gdbarch, CORE_ADDR x);
784extern void set_gdbarch_d10v_convert_daddr_to_raw (struct gdbarch *gdbarch, gdbarch_d10v_convert_daddr_to_raw_ftype *d10v_convert_daddr_to_raw);
33489c5b 785#if GDB_MULTI_ARCH
0f71a2f6
JM
786#if (GDB_MULTI_ARCH > 1) || !defined (D10V_CONVERT_DADDR_TO_RAW)
787#define D10V_CONVERT_DADDR_TO_RAW(x) (gdbarch_d10v_convert_daddr_to_raw (current_gdbarch, x))
788#endif
33489c5b
AC
789#endif
790
791/* Default (function) for non- multi-arch platforms. */
792#if (GDB_MULTI_ARCH == 0) && !defined (D10V_CONVERT_IADDR_TO_RAW)
793#define D10V_CONVERT_IADDR_TO_RAW(x) (internal_error ("D10V_CONVERT_IADDR_TO_RAW"), 0)
794#endif
0f71a2f6 795
104c1213
JM
796typedef CORE_ADDR (gdbarch_d10v_convert_iaddr_to_raw_ftype) (CORE_ADDR x);
797extern CORE_ADDR gdbarch_d10v_convert_iaddr_to_raw (struct gdbarch *gdbarch, CORE_ADDR x);
798extern void set_gdbarch_d10v_convert_iaddr_to_raw (struct gdbarch *gdbarch, gdbarch_d10v_convert_iaddr_to_raw_ftype *d10v_convert_iaddr_to_raw);
33489c5b 799#if GDB_MULTI_ARCH
0f71a2f6
JM
800#if (GDB_MULTI_ARCH > 1) || !defined (D10V_CONVERT_IADDR_TO_RAW)
801#define D10V_CONVERT_IADDR_TO_RAW(x) (gdbarch_d10v_convert_iaddr_to_raw (current_gdbarch, x))
802#endif
33489c5b 803#endif
0f71a2f6 804
104c1213
JM
805typedef void (gdbarch_store_struct_return_ftype) (CORE_ADDR addr, CORE_ADDR sp);
806extern void gdbarch_store_struct_return (struct gdbarch *gdbarch, CORE_ADDR addr, CORE_ADDR sp);
807extern void set_gdbarch_store_struct_return (struct gdbarch *gdbarch, gdbarch_store_struct_return_ftype *store_struct_return);
0f71a2f6
JM
808#if GDB_MULTI_ARCH
809#if (GDB_MULTI_ARCH > 1) || !defined (STORE_STRUCT_RETURN)
810#define STORE_STRUCT_RETURN(addr, sp) (gdbarch_store_struct_return (current_gdbarch, addr, sp))
811#endif
812#endif
813
104c1213
JM
814typedef void (gdbarch_store_return_value_ftype) (struct type *type, char *valbuf);
815extern void gdbarch_store_return_value (struct gdbarch *gdbarch, struct type *type, char *valbuf);
816extern void set_gdbarch_store_return_value (struct gdbarch *gdbarch, gdbarch_store_return_value_ftype *store_return_value);
0f71a2f6
JM
817#if GDB_MULTI_ARCH
818#if (GDB_MULTI_ARCH > 1) || !defined (STORE_RETURN_VALUE)
819#define STORE_RETURN_VALUE(type, valbuf) (gdbarch_store_return_value (current_gdbarch, type, valbuf))
820#endif
821#endif
822
104c1213
JM
823typedef CORE_ADDR (gdbarch_extract_struct_value_address_ftype) (char *regbuf);
824extern CORE_ADDR gdbarch_extract_struct_value_address (struct gdbarch *gdbarch, char *regbuf);
825extern void set_gdbarch_extract_struct_value_address (struct gdbarch *gdbarch, gdbarch_extract_struct_value_address_ftype *extract_struct_value_address);
0f71a2f6
JM
826#if GDB_MULTI_ARCH
827#if (GDB_MULTI_ARCH > 1) || !defined (EXTRACT_STRUCT_VALUE_ADDRESS)
828#define EXTRACT_STRUCT_VALUE_ADDRESS(regbuf) (gdbarch_extract_struct_value_address (current_gdbarch, regbuf))
829#endif
830#endif
831
104c1213
JM
832typedef int (gdbarch_use_struct_convention_ftype) (int gcc_p, struct type *value_type);
833extern int gdbarch_use_struct_convention (struct gdbarch *gdbarch, int gcc_p, struct type *value_type);
834extern void set_gdbarch_use_struct_convention (struct gdbarch *gdbarch, gdbarch_use_struct_convention_ftype *use_struct_convention);
0f71a2f6
JM
835#if GDB_MULTI_ARCH
836#if (GDB_MULTI_ARCH > 1) || !defined (USE_STRUCT_CONVENTION)
837#define USE_STRUCT_CONVENTION(gcc_p, value_type) (gdbarch_use_struct_convention (current_gdbarch, gcc_p, value_type))
838#endif
839#endif
840
104c1213
JM
841typedef void (gdbarch_frame_init_saved_regs_ftype) (struct frame_info *frame);
842extern void gdbarch_frame_init_saved_regs (struct gdbarch *gdbarch, struct frame_info *frame);
843extern void set_gdbarch_frame_init_saved_regs (struct gdbarch *gdbarch, gdbarch_frame_init_saved_regs_ftype *frame_init_saved_regs);
0f71a2f6
JM
844#if GDB_MULTI_ARCH
845#if (GDB_MULTI_ARCH > 1) || !defined (FRAME_INIT_SAVED_REGS)
846#define FRAME_INIT_SAVED_REGS(frame) (gdbarch_frame_init_saved_regs (current_gdbarch, frame))
847#endif
848#endif
849
104c1213
JM
850typedef void (gdbarch_init_extra_frame_info_ftype) (int fromleaf, struct frame_info *frame);
851extern void gdbarch_init_extra_frame_info (struct gdbarch *gdbarch, int fromleaf, struct frame_info *frame);
852extern void set_gdbarch_init_extra_frame_info (struct gdbarch *gdbarch, gdbarch_init_extra_frame_info_ftype *init_extra_frame_info);
0f71a2f6
JM
853#if GDB_MULTI_ARCH
854#if (GDB_MULTI_ARCH > 1) || !defined (INIT_EXTRA_FRAME_INFO)
855#define INIT_EXTRA_FRAME_INFO(fromleaf, frame) (gdbarch_init_extra_frame_info (current_gdbarch, fromleaf, frame))
856#endif
857#endif
858
104c1213
JM
859typedef CORE_ADDR (gdbarch_skip_prologue_ftype) (CORE_ADDR ip);
860extern CORE_ADDR gdbarch_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR ip);
861extern void set_gdbarch_skip_prologue (struct gdbarch *gdbarch, gdbarch_skip_prologue_ftype *skip_prologue);
0f71a2f6
JM
862#if GDB_MULTI_ARCH
863#if (GDB_MULTI_ARCH > 1) || !defined (SKIP_PROLOGUE)
864#define SKIP_PROLOGUE(ip) (gdbarch_skip_prologue (current_gdbarch, ip))
865#endif
866#endif
867
33489c5b
AC
868/* Default (function) for non- multi-arch platforms. */
869#if (GDB_MULTI_ARCH == 0) && !defined (PROLOGUE_FRAMELESS_P)
870#define PROLOGUE_FRAMELESS_P(ip) (generic_prologue_frameless_p (ip))
871#endif
872
dad41f9a
AC
873typedef int (gdbarch_prologue_frameless_p_ftype) (CORE_ADDR ip);
874extern int gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, CORE_ADDR ip);
875extern void set_gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, gdbarch_prologue_frameless_p_ftype *prologue_frameless_p);
33489c5b 876#if GDB_MULTI_ARCH
dad41f9a
AC
877#if (GDB_MULTI_ARCH > 1) || !defined (PROLOGUE_FRAMELESS_P)
878#define PROLOGUE_FRAMELESS_P(ip) (gdbarch_prologue_frameless_p (current_gdbarch, ip))
879#endif
33489c5b 880#endif
dad41f9a 881
104c1213
JM
882typedef int (gdbarch_inner_than_ftype) (CORE_ADDR lhs, CORE_ADDR rhs);
883extern int gdbarch_inner_than (struct gdbarch *gdbarch, CORE_ADDR lhs, CORE_ADDR rhs);
884extern void set_gdbarch_inner_than (struct gdbarch *gdbarch, gdbarch_inner_than_ftype *inner_than);
0f71a2f6
JM
885#if GDB_MULTI_ARCH
886#if (GDB_MULTI_ARCH > 1) || !defined (INNER_THAN)
887#define INNER_THAN(lhs, rhs) (gdbarch_inner_than (current_gdbarch, lhs, rhs))
888#endif
889#endif
890
33489c5b
AC
891/* Default (function) for non- multi-arch platforms. */
892#if (GDB_MULTI_ARCH == 0) && !defined (BREAKPOINT_FROM_PC)
893#define BREAKPOINT_FROM_PC(pcptr, lenptr) (legacy_breakpoint_from_pc (pcptr, lenptr))
894#endif
895
104c1213
JM
896typedef unsigned char * (gdbarch_breakpoint_from_pc_ftype) (CORE_ADDR *pcptr, int *lenptr);
897extern unsigned char * gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr);
898extern void set_gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc);
33489c5b 899#if GDB_MULTI_ARCH
0f71a2f6
JM
900#if (GDB_MULTI_ARCH > 1) || !defined (BREAKPOINT_FROM_PC)
901#define BREAKPOINT_FROM_PC(pcptr, lenptr) (gdbarch_breakpoint_from_pc (current_gdbarch, pcptr, lenptr))
902#endif
33489c5b
AC
903#endif
904
905/* Default (function) for non- multi-arch platforms. */
906#if (GDB_MULTI_ARCH == 0) && !defined (MEMORY_INSERT_BREAKPOINT)
907#define MEMORY_INSERT_BREAKPOINT(addr, contents_cache) (default_memory_insert_breakpoint (addr, contents_cache))
908#endif
0f71a2f6 909
917317f4
JM
910typedef int (gdbarch_memory_insert_breakpoint_ftype) (CORE_ADDR addr, char *contents_cache);
911extern int gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache);
912extern void set_gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, gdbarch_memory_insert_breakpoint_ftype *memory_insert_breakpoint);
33489c5b 913#if GDB_MULTI_ARCH
917317f4
JM
914#if (GDB_MULTI_ARCH > 1) || !defined (MEMORY_INSERT_BREAKPOINT)
915#define MEMORY_INSERT_BREAKPOINT(addr, contents_cache) (gdbarch_memory_insert_breakpoint (current_gdbarch, addr, contents_cache))
916#endif
33489c5b
AC
917#endif
918
919/* Default (function) for non- multi-arch platforms. */
920#if (GDB_MULTI_ARCH == 0) && !defined (MEMORY_REMOVE_BREAKPOINT)
921#define MEMORY_REMOVE_BREAKPOINT(addr, contents_cache) (default_memory_remove_breakpoint (addr, contents_cache))
922#endif
917317f4
JM
923
924typedef int (gdbarch_memory_remove_breakpoint_ftype) (CORE_ADDR addr, char *contents_cache);
925extern int gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache);
926extern void set_gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, gdbarch_memory_remove_breakpoint_ftype *memory_remove_breakpoint);
33489c5b 927#if GDB_MULTI_ARCH
917317f4
JM
928#if (GDB_MULTI_ARCH > 1) || !defined (MEMORY_REMOVE_BREAKPOINT)
929#define MEMORY_REMOVE_BREAKPOINT(addr, contents_cache) (gdbarch_memory_remove_breakpoint (current_gdbarch, addr, contents_cache))
930#endif
33489c5b 931#endif
917317f4 932
104c1213
JM
933extern CORE_ADDR gdbarch_decr_pc_after_break (struct gdbarch *gdbarch);
934extern void set_gdbarch_decr_pc_after_break (struct gdbarch *gdbarch, CORE_ADDR decr_pc_after_break);
0f71a2f6
JM
935#if GDB_MULTI_ARCH
936#if (GDB_MULTI_ARCH > 1) || !defined (DECR_PC_AFTER_BREAK)
937#define DECR_PC_AFTER_BREAK (gdbarch_decr_pc_after_break (current_gdbarch))
938#endif
939#endif
940
104c1213
JM
941extern CORE_ADDR gdbarch_function_start_offset (struct gdbarch *gdbarch);
942extern void set_gdbarch_function_start_offset (struct gdbarch *gdbarch, CORE_ADDR function_start_offset);
0f71a2f6
JM
943#if GDB_MULTI_ARCH
944#if (GDB_MULTI_ARCH > 1) || !defined (FUNCTION_START_OFFSET)
945#define FUNCTION_START_OFFSET (gdbarch_function_start_offset (current_gdbarch))
946#endif
947#endif
948
33489c5b
AC
949/* Default (function) for non- multi-arch platforms. */
950#if (GDB_MULTI_ARCH == 0) && !defined (REMOTE_TRANSLATE_XFER_ADDRESS)
951#define REMOTE_TRANSLATE_XFER_ADDRESS(gdb_addr, gdb_len, rem_addr, rem_len) (generic_remote_translate_xfer_address (gdb_addr, gdb_len, rem_addr, rem_len))
952#endif
953
104c1213
JM
954typedef void (gdbarch_remote_translate_xfer_address_ftype) (CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len);
955extern void gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch, CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len);
956extern void set_gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch, gdbarch_remote_translate_xfer_address_ftype *remote_translate_xfer_address);
33489c5b 957#if GDB_MULTI_ARCH
0f71a2f6
JM
958#if (GDB_MULTI_ARCH > 1) || !defined (REMOTE_TRANSLATE_XFER_ADDRESS)
959#define REMOTE_TRANSLATE_XFER_ADDRESS(gdb_addr, gdb_len, rem_addr, rem_len) (gdbarch_remote_translate_xfer_address (current_gdbarch, gdb_addr, gdb_len, rem_addr, rem_len))
960#endif
33489c5b 961#endif
0f71a2f6 962
104c1213
JM
963extern CORE_ADDR gdbarch_frame_args_skip (struct gdbarch *gdbarch);
964extern void set_gdbarch_frame_args_skip (struct gdbarch *gdbarch, CORE_ADDR frame_args_skip);
0f71a2f6
JM
965#if GDB_MULTI_ARCH
966#if (GDB_MULTI_ARCH > 1) || !defined (FRAME_ARGS_SKIP)
967#define FRAME_ARGS_SKIP (gdbarch_frame_args_skip (current_gdbarch))
968#endif
969#endif
970
33489c5b
AC
971/* Default (function) for non- multi-arch platforms. */
972#if (GDB_MULTI_ARCH == 0) && !defined (FRAMELESS_FUNCTION_INVOCATION)
973#define FRAMELESS_FUNCTION_INVOCATION(fi) (generic_frameless_function_invocation_not (fi))
974#endif
975
104c1213
JM
976typedef int (gdbarch_frameless_function_invocation_ftype) (struct frame_info *fi);
977extern int gdbarch_frameless_function_invocation (struct gdbarch *gdbarch, struct frame_info *fi);
978extern void set_gdbarch_frameless_function_invocation (struct gdbarch *gdbarch, gdbarch_frameless_function_invocation_ftype *frameless_function_invocation);
33489c5b 979#if GDB_MULTI_ARCH
0f71a2f6
JM
980#if (GDB_MULTI_ARCH > 1) || !defined (FRAMELESS_FUNCTION_INVOCATION)
981#define FRAMELESS_FUNCTION_INVOCATION(fi) (gdbarch_frameless_function_invocation (current_gdbarch, fi))
982#endif
33489c5b 983#endif
0f71a2f6 984
104c1213
JM
985typedef CORE_ADDR (gdbarch_frame_chain_ftype) (struct frame_info *frame);
986extern CORE_ADDR gdbarch_frame_chain (struct gdbarch *gdbarch, struct frame_info *frame);
987extern void set_gdbarch_frame_chain (struct gdbarch *gdbarch, gdbarch_frame_chain_ftype *frame_chain);
0f71a2f6
JM
988#if GDB_MULTI_ARCH
989#if (GDB_MULTI_ARCH > 1) || !defined (FRAME_CHAIN)
990#define FRAME_CHAIN(frame) (gdbarch_frame_chain (current_gdbarch, frame))
991#endif
992#endif
993
104c1213
JM
994typedef int (gdbarch_frame_chain_valid_ftype) (CORE_ADDR chain, struct frame_info *thisframe);
995extern int gdbarch_frame_chain_valid (struct gdbarch *gdbarch, CORE_ADDR chain, struct frame_info *thisframe);
996extern void set_gdbarch_frame_chain_valid (struct gdbarch *gdbarch, gdbarch_frame_chain_valid_ftype *frame_chain_valid);
0f71a2f6
JM
997#if GDB_MULTI_ARCH
998#if (GDB_MULTI_ARCH > 1) || !defined (FRAME_CHAIN_VALID)
999#define FRAME_CHAIN_VALID(chain, thisframe) (gdbarch_frame_chain_valid (current_gdbarch, chain, thisframe))
1000#endif
1001#endif
1002
104c1213
JM
1003typedef CORE_ADDR (gdbarch_frame_saved_pc_ftype) (struct frame_info *fi);
1004extern CORE_ADDR gdbarch_frame_saved_pc (struct gdbarch *gdbarch, struct frame_info *fi);
1005extern void set_gdbarch_frame_saved_pc (struct gdbarch *gdbarch, gdbarch_frame_saved_pc_ftype *frame_saved_pc);
0f71a2f6
JM
1006#if GDB_MULTI_ARCH
1007#if (GDB_MULTI_ARCH > 1) || !defined (FRAME_SAVED_PC)
1008#define FRAME_SAVED_PC(fi) (gdbarch_frame_saved_pc (current_gdbarch, fi))
1009#endif
1010#endif
1011
104c1213
JM
1012typedef CORE_ADDR (gdbarch_frame_args_address_ftype) (struct frame_info *fi);
1013extern CORE_ADDR gdbarch_frame_args_address (struct gdbarch *gdbarch, struct frame_info *fi);
1014extern void set_gdbarch_frame_args_address (struct gdbarch *gdbarch, gdbarch_frame_args_address_ftype *frame_args_address);
0f71a2f6
JM
1015#if GDB_MULTI_ARCH
1016#if (GDB_MULTI_ARCH > 1) || !defined (FRAME_ARGS_ADDRESS)
1017#define FRAME_ARGS_ADDRESS(fi) (gdbarch_frame_args_address (current_gdbarch, fi))
1018#endif
1019#endif
1020
104c1213
JM
1021typedef CORE_ADDR (gdbarch_frame_locals_address_ftype) (struct frame_info *fi);
1022extern CORE_ADDR gdbarch_frame_locals_address (struct gdbarch *gdbarch, struct frame_info *fi);
1023extern void set_gdbarch_frame_locals_address (struct gdbarch *gdbarch, gdbarch_frame_locals_address_ftype *frame_locals_address);
0f71a2f6
JM
1024#if GDB_MULTI_ARCH
1025#if (GDB_MULTI_ARCH > 1) || !defined (FRAME_LOCALS_ADDRESS)
1026#define FRAME_LOCALS_ADDRESS(fi) (gdbarch_frame_locals_address (current_gdbarch, fi))
1027#endif
1028#endif
1029
104c1213
JM
1030typedef CORE_ADDR (gdbarch_saved_pc_after_call_ftype) (struct frame_info *frame);
1031extern CORE_ADDR gdbarch_saved_pc_after_call (struct gdbarch *gdbarch, struct frame_info *frame);
1032extern void set_gdbarch_saved_pc_after_call (struct gdbarch *gdbarch, gdbarch_saved_pc_after_call_ftype *saved_pc_after_call);
0f71a2f6
JM
1033#if GDB_MULTI_ARCH
1034#if (GDB_MULTI_ARCH > 1) || !defined (SAVED_PC_AFTER_CALL)
1035#define SAVED_PC_AFTER_CALL(frame) (gdbarch_saved_pc_after_call (current_gdbarch, frame))
1036#endif
1037#endif
1038
104c1213
JM
1039typedef int (gdbarch_frame_num_args_ftype) (struct frame_info *frame);
1040extern int gdbarch_frame_num_args (struct gdbarch *gdbarch, struct frame_info *frame);
1041extern void set_gdbarch_frame_num_args (struct gdbarch *gdbarch, gdbarch_frame_num_args_ftype *frame_num_args);
0f71a2f6
JM
1042#if GDB_MULTI_ARCH
1043#if (GDB_MULTI_ARCH > 1) || !defined (FRAME_NUM_ARGS)
1044#define FRAME_NUM_ARGS(frame) (gdbarch_frame_num_args (current_gdbarch, frame))
1045#endif
1046#endif
1047
2ada493a
AC
1048#if defined (STACK_ALIGN)
1049/* Legacy for systems yet to multi-arch STACK_ALIGN */
1050#define STACK_ALIGN_P() (1)
1051#endif
1052
33489c5b
AC
1053/* Default predicate for non- multi-arch targets. */
1054#if (GDB_MULTI_ARCH == 0) && !defined (STACK_ALIGN_P)
1055#define STACK_ALIGN_P() (0)
1056#endif
1057
2ada493a
AC
1058extern int gdbarch_stack_align_p (struct gdbarch *gdbarch);
1059#if (GDB_MULTI_ARCH > 1) || !defined (STACK_ALIGN_P)
1060#define STACK_ALIGN_P() (gdbarch_stack_align_p (current_gdbarch))
1061#endif
1062
33489c5b
AC
1063/* Default (function) for non- multi-arch platforms. */
1064#if (GDB_MULTI_ARCH == 0) && !defined (STACK_ALIGN)
1065#define STACK_ALIGN(sp) (internal_error ("STACK_ALIGN"), 0)
1066#endif
1067
2ada493a
AC
1068typedef CORE_ADDR (gdbarch_stack_align_ftype) (CORE_ADDR sp);
1069extern CORE_ADDR gdbarch_stack_align (struct gdbarch *gdbarch, CORE_ADDR sp);
1070extern void set_gdbarch_stack_align (struct gdbarch *gdbarch, gdbarch_stack_align_ftype *stack_align);
33489c5b 1071#if GDB_MULTI_ARCH
2ada493a
AC
1072#if (GDB_MULTI_ARCH > 1) || !defined (STACK_ALIGN)
1073#define STACK_ALIGN(sp) (gdbarch_stack_align (current_gdbarch, sp))
1074#endif
33489c5b 1075#endif
2ada493a 1076
d03e67c9
AC
1077#if defined (REG_STRUCT_HAS_ADDR)
1078/* Legacy for systems yet to multi-arch REG_STRUCT_HAS_ADDR */
1079#define REG_STRUCT_HAS_ADDR_P() (1)
1080#endif
1081
33489c5b
AC
1082/* Default predicate for non- multi-arch targets. */
1083#if (GDB_MULTI_ARCH == 0) && !defined (REG_STRUCT_HAS_ADDR_P)
1084#define REG_STRUCT_HAS_ADDR_P() (0)
1085#endif
1086
d03e67c9
AC
1087extern int gdbarch_reg_struct_has_addr_p (struct gdbarch *gdbarch);
1088#if (GDB_MULTI_ARCH > 1) || !defined (REG_STRUCT_HAS_ADDR_P)
1089#define REG_STRUCT_HAS_ADDR_P() (gdbarch_reg_struct_has_addr_p (current_gdbarch))
1090#endif
1091
33489c5b
AC
1092/* Default (function) for non- multi-arch platforms. */
1093#if (GDB_MULTI_ARCH == 0) && !defined (REG_STRUCT_HAS_ADDR)
1094#define REG_STRUCT_HAS_ADDR(gcc_p, type) (internal_error ("REG_STRUCT_HAS_ADDR"), 0)
1095#endif
1096
d03e67c9
AC
1097typedef int (gdbarch_reg_struct_has_addr_ftype) (int gcc_p, struct type *type);
1098extern int gdbarch_reg_struct_has_addr (struct gdbarch *gdbarch, int gcc_p, struct type *type);
1099extern void set_gdbarch_reg_struct_has_addr (struct gdbarch *gdbarch, gdbarch_reg_struct_has_addr_ftype *reg_struct_has_addr);
33489c5b 1100#if GDB_MULTI_ARCH
d03e67c9
AC
1101#if (GDB_MULTI_ARCH > 1) || !defined (REG_STRUCT_HAS_ADDR)
1102#define REG_STRUCT_HAS_ADDR(gcc_p, type) (gdbarch_reg_struct_has_addr (current_gdbarch, gcc_p, type))
1103#endif
33489c5b 1104#endif
d03e67c9 1105
d1e3cf49
AC
1106#if defined (SAVE_DUMMY_FRAME_TOS)
1107/* Legacy for systems yet to multi-arch SAVE_DUMMY_FRAME_TOS */
1108#define SAVE_DUMMY_FRAME_TOS_P() (1)
1109#endif
1110
1111/* Default predicate for non- multi-arch targets. */
1112#if (GDB_MULTI_ARCH == 0) && !defined (SAVE_DUMMY_FRAME_TOS_P)
1113#define SAVE_DUMMY_FRAME_TOS_P() (0)
1114#endif
1115
1116extern int gdbarch_save_dummy_frame_tos_p (struct gdbarch *gdbarch);
1117#if (GDB_MULTI_ARCH > 1) || !defined (SAVE_DUMMY_FRAME_TOS_P)
1118#define SAVE_DUMMY_FRAME_TOS_P() (gdbarch_save_dummy_frame_tos_p (current_gdbarch))
1119#endif
1120
1121/* Default (function) for non- multi-arch platforms. */
1122#if (GDB_MULTI_ARCH == 0) && !defined (SAVE_DUMMY_FRAME_TOS)
1123#define SAVE_DUMMY_FRAME_TOS(sp) (internal_error ("SAVE_DUMMY_FRAME_TOS"), 0)
1124#endif
1125
1126typedef void (gdbarch_save_dummy_frame_tos_ftype) (CORE_ADDR sp);
1127extern void gdbarch_save_dummy_frame_tos (struct gdbarch *gdbarch, CORE_ADDR sp);
1128extern void set_gdbarch_save_dummy_frame_tos (struct gdbarch *gdbarch, gdbarch_save_dummy_frame_tos_ftype *save_dummy_frame_tos);
1129#if GDB_MULTI_ARCH
1130#if (GDB_MULTI_ARCH > 1) || !defined (SAVE_DUMMY_FRAME_TOS)
1131#define SAVE_DUMMY_FRAME_TOS(sp) (gdbarch_save_dummy_frame_tos (current_gdbarch, sp))
1132#endif
1133#endif
1134
f0d4cc9e
AC
1135/* Default (value) for non- multi-arch platforms. */
1136#if (GDB_MULTI_ARCH == 0) && !defined (TARGET_FLOAT_FORMAT)
1137#define TARGET_FLOAT_FORMAT (default_float_format (current_gdbarch))
1138#endif
1139
1140extern const struct floatformat * gdbarch_float_format (struct gdbarch *gdbarch);
1141extern void set_gdbarch_float_format (struct gdbarch *gdbarch, const struct floatformat * float_format);
1142#if GDB_MULTI_ARCH
1143#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_FLOAT_FORMAT)
1144#define TARGET_FLOAT_FORMAT (gdbarch_float_format (current_gdbarch))
1145#endif
1146#endif
1147
1148/* Default (value) for non- multi-arch platforms. */
1149#if (GDB_MULTI_ARCH == 0) && !defined (TARGET_DOUBLE_FORMAT)
1150#define TARGET_DOUBLE_FORMAT (default_double_format (current_gdbarch))
1151#endif
1152
1153extern const struct floatformat * gdbarch_double_format (struct gdbarch *gdbarch);
1154extern void set_gdbarch_double_format (struct gdbarch *gdbarch, const struct floatformat * double_format);
1155#if GDB_MULTI_ARCH
1156#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_DOUBLE_FORMAT)
1157#define TARGET_DOUBLE_FORMAT (gdbarch_double_format (current_gdbarch))
1158#endif
1159#endif
1160
1161/* Default (value) for non- multi-arch platforms. */
1162#if (GDB_MULTI_ARCH == 0) && !defined (TARGET_LONG_DOUBLE_FORMAT)
1163#define TARGET_LONG_DOUBLE_FORMAT (&floatformat_unknown)
1164#endif
1165
1166extern const struct floatformat * gdbarch_long_double_format (struct gdbarch *gdbarch);
1167extern void set_gdbarch_long_double_format (struct gdbarch *gdbarch, const struct floatformat * long_double_format);
1168#if GDB_MULTI_ARCH
1169#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_LONG_DOUBLE_FORMAT)
1170#define TARGET_LONG_DOUBLE_FORMAT (gdbarch_long_double_format (current_gdbarch))
1171#endif
1172#endif
1173
104c1213 1174extern struct gdbarch_tdep *gdbarch_tdep (struct gdbarch *gdbarch);
0f71a2f6
JM
1175
1176
1177/* Mechanism for co-ordinating the selection of a specific
1178 architecture.
1179
1180 GDB targets (*-tdep.c) can register an interest in a specific
1181 architecture. Other GDB components can register a need to maintain
1182 per-architecture data.
1183
1184 The mechanisms below ensures that there is only a loose connection
1185 between the set-architecture command and the various GDB
1186 components. Each component can independantly register their need
1187 to maintain architecture specific data with gdbarch.
1188
1189 Pragmatics:
1190
1191 Previously, a single TARGET_ARCHITECTURE_HOOK was provided. It
1192 didn't scale.
1193
1194 The more traditional mega-struct containing architecture specific
1195 data for all the various GDB components was also considered. Since
1196 GDB is built from a variable number of (fairly independant)
1197 components it was determined that the global aproach was not
1198 applicable. */
1199
1200
1201/* Register a new architectural family with GDB.
1202
1203 Register support for the specified ARCHITECTURE with GDB. When
1204 gdbarch determines that the specified architecture has been
1205 selected, the corresponding INIT function is called.
1206
1207 --
1208
1209 The INIT function takes two parameters: INFO which contains the
1210 information available to gdbarch about the (possibly new)
1211 architecture; ARCHES which is a list of the previously created
1212 ``struct gdbarch'' for this architecture.
1213
1214 The INIT function parameter INFO shall, as far as possible, be
1215 pre-initialized with information obtained from INFO.ABFD or
1216 previously selected architecture (if similar). INIT shall ensure
1217 that the INFO.BYTE_ORDER is non-zero.
1218
1219 The INIT function shall return any of: NULL - indicating that it
1220 doesn't reconize the selected architecture; an existing ``struct
1221 gdbarch'' from the ARCHES list - indicating that the new
1222 architecture is just a synonym for an earlier architecture (see
1223 gdbarch_list_lookup_by_info()); a newly created ``struct gdbarch''
4b9b3959
AC
1224 - that describes the selected architecture (see gdbarch_alloc()).
1225
1226 The DUMP_TDEP function shall print out all target specific values.
1227 Care should be taken to ensure that the function works in both the
1228 multi-arch and non- multi-arch cases. */
0f71a2f6 1229
adf40b2e
JM
1230struct gdbarch_list
1231{
1232 struct gdbarch *gdbarch;
1233 struct gdbarch_list *next;
1234};
0f71a2f6 1235
adf40b2e
JM
1236struct gdbarch_info
1237{
1238 /* Use default: bfd_arch_unknown (ZERO). */
1239 enum bfd_architecture bfd_architecture;
0f71a2f6 1240
adf40b2e
JM
1241 /* Use default: NULL (ZERO). */
1242 const struct bfd_arch_info *bfd_arch_info;
0f71a2f6 1243
adf40b2e
JM
1244 /* Use default: 0 (ZERO). */
1245 int byte_order;
0f71a2f6 1246
adf40b2e
JM
1247 /* Use default: NULL (ZERO). */
1248 bfd *abfd;
0f71a2f6 1249
adf40b2e
JM
1250 /* Use default: NULL (ZERO). */
1251 struct gdbarch_tdep_info *tdep_info;
1252};
0f71a2f6 1253
104c1213 1254typedef struct gdbarch *(gdbarch_init_ftype) (struct gdbarch_info info, struct gdbarch_list *arches);
4b9b3959 1255typedef void (gdbarch_dump_tdep_ftype) (struct gdbarch *gdbarch, struct ui_file *file);
0f71a2f6 1256
4b9b3959 1257/* DEPRECATED - use gdbarch_register() */
104c1213 1258extern void register_gdbarch_init (enum bfd_architecture architecture, gdbarch_init_ftype *);
0f71a2f6 1259
4b9b3959
AC
1260extern void gdbarch_register (enum bfd_architecture architecture,
1261 gdbarch_init_ftype *,
1262 gdbarch_dump_tdep_ftype *);
1263
0f71a2f6 1264
b4a20239
AC
1265/* Return a freshly allocated, NULL terminated, array of the valid
1266 architecture names. Since architectures are registered during the
1267 _initialize phase this function only returns useful information
1268 once initialization has been completed. */
1269
1270extern const char **gdbarch_printable_names (void);
1271
1272
0f71a2f6
JM
1273/* Helper function. Search the list of ARCHES for a GDBARCH that
1274 matches the information provided by INFO. */
1275
104c1213 1276extern struct gdbarch_list *gdbarch_list_lookup_by_info (struct gdbarch_list *arches, const struct gdbarch_info *info);
0f71a2f6
JM
1277
1278
1279/* Helper function. Create a preliminary ``struct gdbarch''. Perform
1280 basic initialization using values obtained from the INFO andTDEP
1281 parameters. set_gdbarch_*() functions are called to complete the
1282 initialization of the object. */
1283
104c1213 1284extern struct gdbarch *gdbarch_alloc (const struct gdbarch_info *info, struct gdbarch_tdep *tdep);
0f71a2f6
JM
1285
1286
4b9b3959
AC
1287/* Helper function. Free a partially-constructed ``struct gdbarch''.
1288 It is assumed that the caller freeds the ``struct
1289 gdbarch_tdep''. */
1290
058f20d5
JB
1291extern void gdbarch_free (struct gdbarch *);
1292
1293
0f71a2f6
JM
1294/* Helper function. Force an update of the current architecture. Used
1295 by legacy targets that have added their own target specific
1296 architecture manipulation commands.
1297
1298 The INFO parameter shall be fully initialized (``memset (&INFO,
1299 sizeof (info), 0)'' set relevant fields) before gdbarch_update() is
1300 called. gdbarch_update() shall initialize any ``default'' fields
1301 using information obtained from the previous architecture or
1302 INFO.ABFD (if specified) before calling the corresponding
1303 architectures INIT function. */
1304
104c1213 1305extern int gdbarch_update (struct gdbarch_info info);
0f71a2f6
JM
1306
1307
1308
1309/* Register per-architecture data-pointer.
1310
1311 Reserve space for a per-architecture data-pointer. An identifier
1312 for the reserved data-pointer is returned. That identifer should
1313 be saved in a local static.
1314
1315 When a new architecture is selected, INIT() is called. When a
1316 previous architecture is re-selected, the per-architecture
1317 data-pointer for that previous architecture is restored (INIT() is
1318 not called).
1319
1320 INIT() shall return the initial value for the per-architecture
1321 data-pointer for the current architecture.
1322
1323 Multiple registrarants for any architecture are allowed (and
1324 strongly encouraged). */
1325
104c1213
JM
1326typedef void *(gdbarch_data_ftype) (void);
1327extern struct gdbarch_data *register_gdbarch_data (gdbarch_data_ftype *init);
0f71a2f6
JM
1328
1329/* Return the value of the per-architecture data-pointer for the
1330 current architecture. */
1331
104c1213 1332extern void *gdbarch_data (struct gdbarch_data*);
0f71a2f6
JM
1333
1334
1335
1336/* Register per-architecture memory region.
1337
1338 Provide a memory-region swap mechanism. Per-architecture memory
1339 region are created. These memory regions are swapped whenever the
1340 architecture is changed. For a new architecture, the memory region
1341 is initialized with zero (0) and the INIT function is called.
1342
1343 Memory regions are swapped / initialized in the order that they are
1344 registered. NULL DATA and/or INIT values can be specified.
1345
1346 New code should use register_gdbarch_data(). */
1347
104c1213
JM
1348typedef void (gdbarch_swap_ftype) (void);
1349extern void register_gdbarch_swap (void *data, unsigned long size, gdbarch_swap_ftype *init);
e514a9d6 1350#define REGISTER_GDBARCH_SWAP(VAR) register_gdbarch_swap (&(VAR), sizeof ((VAR)), NULL)
0f71a2f6
JM
1351
1352
1353
c906108c
SS
1354/* The target-system-dependant byte order is dynamic */
1355
1356/* TARGET_BYTE_ORDER_SELECTABLE_P determines if the target endianness
b83266a0 1357 is selectable at runtime. The user can use the ``set endian''
c906108c
SS
1358 command to change it. TARGET_BYTE_ORDER_AUTO is nonzero when
1359 target_byte_order should be auto-detected (from the program image
1360 say). */
1361
0f71a2f6
JM
1362#if GDB_MULTI_ARCH
1363/* Multi-arch GDB is always bi-endian. */
1364#define TARGET_BYTE_ORDER_SELECTABLE_P 1
1365#endif
1366
c906108c
SS
1367#ifndef TARGET_BYTE_ORDER_SELECTABLE_P
1368/* compat - Catch old targets that define TARGET_BYTE_ORDER_SLECTABLE
1369 when they should have defined TARGET_BYTE_ORDER_SELECTABLE_P 1 */
1370#ifdef TARGET_BYTE_ORDER_SELECTABLE
1371#define TARGET_BYTE_ORDER_SELECTABLE_P 1
1372#else
1373#define TARGET_BYTE_ORDER_SELECTABLE_P 0
1374#endif
1375#endif
1376
adf40b2e 1377extern int target_byte_order;
c906108c
SS
1378#ifdef TARGET_BYTE_ORDER_SELECTABLE
1379/* compat - Catch old targets that define TARGET_BYTE_ORDER_SELECTABLE
1380 and expect defs.h to re-define TARGET_BYTE_ORDER. */
1381#undef TARGET_BYTE_ORDER
1382#endif
1383#ifndef TARGET_BYTE_ORDER
1384#define TARGET_BYTE_ORDER (target_byte_order + 0)
1385#endif
1386
adf40b2e 1387extern int target_byte_order_auto;
c906108c
SS
1388#ifndef TARGET_BYTE_ORDER_AUTO
1389#define TARGET_BYTE_ORDER_AUTO (target_byte_order_auto + 0)
1390#endif
1391
1392
1393
1394/* The target-system-dependant BFD architecture is dynamic */
1395
adf40b2e 1396extern int target_architecture_auto;
c906108c
SS
1397#ifndef TARGET_ARCHITECTURE_AUTO
1398#define TARGET_ARCHITECTURE_AUTO (target_architecture_auto + 0)
1399#endif
1400
adf40b2e 1401extern const struct bfd_arch_info *target_architecture;
c906108c
SS
1402#ifndef TARGET_ARCHITECTURE
1403#define TARGET_ARCHITECTURE (target_architecture + 0)
1404#endif
1405
c906108c
SS
1406
1407/* The target-system-dependant disassembler is semi-dynamic */
1408
1409#include "dis-asm.h" /* Get defs for disassemble_info */
1410
104c1213 1411extern int dis_asm_read_memory (bfd_vma memaddr, bfd_byte *myaddr,
ff844c8d 1412 unsigned int len, disassemble_info *info);
c906108c 1413
104c1213
JM
1414extern void dis_asm_memory_error (int status, bfd_vma memaddr,
1415 disassemble_info *info);
c906108c 1416
104c1213
JM
1417extern void dis_asm_print_address (bfd_vma addr,
1418 disassemble_info *info);
c906108c 1419
104c1213 1420extern int (*tm_print_insn) (bfd_vma, disassemble_info*);
adf40b2e 1421extern disassemble_info tm_print_insn_info;
c906108c
SS
1422#ifndef TARGET_PRINT_INSN
1423#define TARGET_PRINT_INSN(vma, info) (*tm_print_insn) (vma, info)
1424#endif
1425#ifndef TARGET_PRINT_INSN_INFO
1426#define TARGET_PRINT_INSN_INFO (&tm_print_insn_info)
1427#endif
1428
1429
1430
7a292a7a
SS
1431/* Explicit test for D10V architecture.
1432 USE of these macro's is *STRONGLY* discouraged. */
1433
1434#define GDB_TARGET_IS_D10V (TARGET_ARCHITECTURE->arch == bfd_arch_d10v)
7a292a7a
SS
1435
1436
ac9a91a7
JM
1437/* Fallback definition for EXTRACT_STRUCT_VALUE_ADDRESS */
1438#ifndef EXTRACT_STRUCT_VALUE_ADDRESS
1439#define EXTRACT_STRUCT_VALUE_ADDRESS_P (0)
96baa820 1440#define EXTRACT_STRUCT_VALUE_ADDRESS(X) (internal_error ("gdbarch: EXTRACT_STRUCT_VALUE_ADDRESS"), 0)
ac9a91a7
JM
1441#else
1442#ifndef EXTRACT_STRUCT_VALUE_ADDRESS_P
1443#define EXTRACT_STRUCT_VALUE_ADDRESS_P (1)
1444#endif
1445#endif
1446
1447
c906108c
SS
1448/* Set the dynamic target-system-dependant parameters (architecture,
1449 byte-order, ...) using information found in the BFD */
1450
104c1213 1451extern void set_gdbarch_from_file (bfd *);
c906108c
SS
1452
1453
e514a9d6
JM
1454/* Initialize the current architecture to the "first" one we find on
1455 our list. */
1456
1457extern void initialize_current_architecture (void);
1458
cce74817 1459
c906108c 1460/* gdbarch trace variable */
adf40b2e 1461extern int gdbarch_debug;
c906108c 1462
4b9b3959 1463extern void gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file);
0f71a2f6 1464
c906108c 1465#endif
This page took 0.133823 seconds and 4 git commands to generate.