2006-04-20 Michael Snyder <msnyder@redhat.com>
[external/binutils.git] / gdb / m32c-tdep.c
1 /* Renesas M32C target-dependent code for GDB, the GNU debugger.
2
3    Copyright 2004, 2005 Free Software Foundation, Inc.
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
9    the Free Software Foundation; either version 2 of the License, or
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
18    along with this program; if not, write to the Free Software
19    Foundation, Inc., 59 Temple Place - Suite 330,
20    Boston, MA 02111-1307, USA.  */
21
22 #include "defs.h"
23
24 #include <stdarg.h>
25
26 #if defined (HAVE_STRING_H)
27 #include <string.h>
28 #endif
29
30 #include "gdb_assert.h"
31 #include "elf-bfd.h"
32 #include "elf/m32c.h"
33 #include "gdb/sim-m32c.h"
34 #include "dis-asm.h"
35 #include "gdbtypes.h"
36 #include "regcache.h"
37 #include "arch-utils.h"
38 #include "frame.h"
39 #include "frame-unwind.h"
40 #include "dwarf2-frame.h"
41 #include "dwarf2expr.h"
42 #include "symtab.h"
43 #include "gdbcore.h"
44 #include "value.h"
45 #include "reggroups.h"
46 #include "prologue-value.h"
47 #include "target.h"
48
49 \f
50 /* The m32c tdep structure.  */
51
52 static struct reggroup *m32c_dma_reggroup;
53
54 struct m32c_reg;
55
56 /* The type of a function that moves the value of REG between CACHE or
57    BUF --- in either direction.  */
58 typedef void (m32c_move_reg_t) (struct m32c_reg *reg,
59                                 struct regcache *cache,
60                                 void *buf);
61
62 struct m32c_reg
63 {
64   /* The name of this register.  */
65   const char *name;
66
67   /* Its type.  */
68   struct type *type;
69
70   /* The architecture this register belongs to.  */
71   struct gdbarch *arch;
72
73   /* Its GDB register number.  */
74   int num;
75
76   /* Its sim register number.  */
77   int sim_num;
78
79   /* Its DWARF register number, or -1 if it doesn't have one.  */
80   int dwarf_num;
81
82   /* Register group memberships.  */
83   unsigned int general_p : 1;
84   unsigned int dma_p : 1;
85   unsigned int system_p : 1;
86   unsigned int save_restore_p : 1;
87
88   /* Functions to read its value from a regcache, and write its value
89      to a regcache.  */
90   m32c_move_reg_t *read, *write;
91
92   /* Data for READ and WRITE functions.  The exact meaning depends on
93      the specific functions selected; see the comments for those
94      functions.  */
95   struct m32c_reg *rx, *ry;
96   int n;
97 };
98
99
100 /* An overestimate of the number of raw and pseudoregisters we will
101    have.  The exact answer depends on the variant of the architecture
102    at hand, but we can use this to declare statically allocated
103    arrays, and bump it up when needed.  */
104 #define M32C_MAX_NUM_REGS (75)
105
106 /* The largest assigned DWARF register number.  */
107 #define M32C_MAX_DWARF_REGNUM (40)
108
109
110 struct gdbarch_tdep
111 {
112   /* All the registers for this variant, indexed by GDB register
113      number, and the number of registers present.  */
114   struct m32c_reg regs[M32C_MAX_NUM_REGS];
115
116   /* The number of valid registers.  */
117   int num_regs;
118
119   /* Interesting registers.  These are pointers into REGS.  */
120   struct m32c_reg *pc, *flg;
121   struct m32c_reg *r0, *r1, *r2, *r3, *a0, *a1;
122   struct m32c_reg *r2r0, *r3r2r1r0, *r3r1r2r0;
123   struct m32c_reg *sb, *fb, *sp;
124
125   /* A table indexed by DWARF register numbers, pointing into
126      REGS.  */
127   struct m32c_reg *dwarf_regs[M32C_MAX_DWARF_REGNUM + 1];
128
129   /* Types for this architecture.  We can't use the builtin_type_foo
130      types, because they're not initialized when building a gdbarch
131      structure.  */
132   struct type *voyd, *ptr_voyd, *func_voyd;
133   struct type *uint8, *uint16;
134   struct type *int8, *int16, *int32, *int64;
135
136   /* The types for data address and code address registers.  */
137   struct type *data_addr_reg_type, *code_addr_reg_type;
138
139   /* The number of bytes a return address pushed by a 'jsr' instruction
140      occupies on the stack.  */
141   int ret_addr_bytes;
142
143   /* The number of bytes an address register occupies on the stack
144      when saved by an 'enter' or 'pushm' instruction.  */
145   int push_addr_bytes;
146 };
147
148 \f
149 /* Types.  */
150
151 static void
152 make_types (struct gdbarch *arch)
153 {
154   struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
155   unsigned long mach = gdbarch_bfd_arch_info (arch)->mach;
156   int data_addr_reg_bits, code_addr_reg_bits;
157   char type_name[50];
158
159 #if 0
160   /* This is used to clip CORE_ADDR values, so this value is
161      appropriate both on the m32c, where pointers are 32 bits long,
162      and on the m16c, where pointers are sixteen bits long, but there
163      may be code above the 64k boundary.  */
164   set_gdbarch_addr_bit (arch, 24);
165 #else
166   /* GCC uses 32 bits for addrs in the dwarf info, even though
167      only 16/24 bits are used.  Setting addr_bit to 24 causes
168      errors in reading the dwarf addresses.  */
169   set_gdbarch_addr_bit (arch, 32);
170 #endif
171
172   set_gdbarch_int_bit (arch, 16);
173   switch (mach)
174     {
175     case bfd_mach_m16c:
176       data_addr_reg_bits = 16;
177       code_addr_reg_bits = 24;
178       set_gdbarch_ptr_bit (arch, 16);
179       tdep->ret_addr_bytes = 3;
180       tdep->push_addr_bytes = 2;
181       break;
182
183     case bfd_mach_m32c:
184       data_addr_reg_bits = 24;
185       code_addr_reg_bits = 24;
186       set_gdbarch_ptr_bit (arch, 32);
187       tdep->ret_addr_bytes = 4;
188       tdep->push_addr_bytes = 4;
189       break;
190
191     default:
192       gdb_assert (0);
193     }
194
195   /* The builtin_type_mumble variables are sometimes uninitialized when
196      this is called, so we avoid using them.  */
197   tdep->voyd = init_type (TYPE_CODE_VOID, 1, 0, "void", NULL);
198   tdep->ptr_voyd = init_type (TYPE_CODE_PTR, gdbarch_ptr_bit (arch) / 8,
199                               TYPE_FLAG_UNSIGNED, NULL, NULL);
200   TYPE_TARGET_TYPE (tdep->ptr_voyd) = tdep->voyd;
201   tdep->func_voyd = lookup_function_type (tdep->voyd);
202
203   sprintf (type_name, "%s_data_addr_t",
204            gdbarch_bfd_arch_info (arch)->printable_name);
205   tdep->data_addr_reg_type
206     = init_type (TYPE_CODE_PTR, data_addr_reg_bits / 8,
207                  TYPE_FLAG_UNSIGNED, xstrdup (type_name), NULL);
208   TYPE_TARGET_TYPE (tdep->data_addr_reg_type) = tdep->voyd;
209
210   sprintf (type_name, "%s_code_addr_t",
211            gdbarch_bfd_arch_info (arch)->printable_name);
212   tdep->code_addr_reg_type
213     = init_type (TYPE_CODE_PTR, code_addr_reg_bits / 8,
214                  TYPE_FLAG_UNSIGNED, xstrdup (type_name), NULL);
215   TYPE_TARGET_TYPE (tdep->code_addr_reg_type) = tdep->func_voyd;
216
217   tdep->uint8  = init_type (TYPE_CODE_INT, 1, TYPE_FLAG_UNSIGNED,
218                             "uint8_t", NULL);
219   tdep->uint16 = init_type (TYPE_CODE_INT, 2, TYPE_FLAG_UNSIGNED,
220                             "uint16_t", NULL);
221   tdep->int8   = init_type (TYPE_CODE_INT, 1, 0, "int8_t", NULL);
222   tdep->int16  = init_type (TYPE_CODE_INT, 2, 0, "int16_t", NULL);
223   tdep->int32  = init_type (TYPE_CODE_INT, 4, 0, "int32_t", NULL);
224   tdep->int64  = init_type (TYPE_CODE_INT, 8, 0, "int64_t", NULL);
225 }
226
227
228 \f
229 /* Register set.  */
230
231 static const char *
232 m32c_register_name (int num)
233 {
234   return gdbarch_tdep (current_gdbarch)->regs[num].name;
235 }
236
237
238 static struct type *
239 m32c_register_type (struct gdbarch *arch, int reg_nr)
240 {
241   return gdbarch_tdep (arch)->regs[reg_nr].type;
242 }
243
244
245 static int
246 m32c_register_sim_regno (int reg_nr)
247 {
248   return gdbarch_tdep (current_gdbarch)->regs[reg_nr].sim_num;
249 }
250
251
252 static int
253 m32c_debug_info_reg_to_regnum (int reg_nr)
254 {
255   struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
256   if (0 <= reg_nr && reg_nr <= M32C_MAX_DWARF_REGNUM
257       && tdep->dwarf_regs[reg_nr])
258     return tdep->dwarf_regs[reg_nr]->num;
259   else
260     /* The DWARF CFI code expects to see -1 for invalid register
261        numbers.  */
262     return -1;
263 }
264
265
266 int
267 m32c_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
268                           struct reggroup *group)
269 {
270   struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
271   struct m32c_reg *reg = &tdep->regs[regnum];
272
273   /* The anonymous raw registers aren't in any groups.  */
274   if (! reg->name)
275     return 0;
276
277   if (group == all_reggroup)
278     return 1;
279
280   if (group == general_reggroup
281       && reg->general_p)
282     return 1;
283
284   if (group == m32c_dma_reggroup
285       && reg->dma_p)
286     return 1;
287
288   if (group == system_reggroup
289       && reg->system_p)
290     return 1;
291
292   /* Since the m32c DWARF register numbers refer to cooked registers, not
293      raw registers, and frame_pop depends on the save and restore groups
294      containing registers the DWARF CFI will actually mention, our save
295      and restore groups are cooked registers, not raw registers.  (This is
296      why we can't use the default reggroup function.)  */
297   if ((group == save_reggroup
298        || group == restore_reggroup)
299       && reg->save_restore_p)
300     return 1;
301
302   return 0;
303 }
304
305
306 /* Register move functions.  We declare them here using
307    m32c_move_reg_t to check the types.  */
308 static m32c_move_reg_t m32c_raw_read,      m32c_raw_write;
309 static m32c_move_reg_t m32c_banked_read,   m32c_banked_write;
310 static m32c_move_reg_t m32c_sb_read,       m32c_sb_write;
311 static m32c_move_reg_t m32c_part_read,     m32c_part_write;
312 static m32c_move_reg_t m32c_cat_read,      m32c_cat_write;
313 static m32c_move_reg_t m32c_r3r2r1r0_read, m32c_r3r2r1r0_write;
314
315
316 /* Copy the value of the raw register REG from CACHE to BUF.  */
317 static void
318 m32c_raw_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
319 {
320   regcache_raw_read (cache, reg->num, buf);
321 }
322
323
324 /* Copy the value of the raw register REG from BUF to CACHE.  */
325 static void
326 m32c_raw_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
327 {
328   regcache_raw_write (cache, reg->num, (const void *) buf);
329 }
330
331
332 /* Return the value of the 'flg' register in CACHE.  */
333 static int
334 m32c_read_flg (struct regcache *cache)
335 {
336   struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (cache));
337   ULONGEST flg;
338   regcache_raw_read_unsigned (cache, tdep->flg->num, &flg);
339   return flg & 0xffff;
340 }
341
342
343 /* Move the value of a banked register from CACHE to BUF.
344    If the value of the 'flg' register in CACHE has any of the bits
345    masked in REG->n set, then read REG->ry.  Otherwise, read
346    REG->rx.  */
347 static void
348 m32c_banked_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
349 {
350   struct m32c_reg *bank_reg
351     = ((m32c_read_flg (cache) & reg->n) ? reg->ry : reg->rx);
352   regcache_raw_read (cache, bank_reg->num, buf);
353 }
354
355
356 /* Move the value of a banked register from BUF to CACHE.
357    If the value of the 'flg' register in CACHE has any of the bits
358    masked in REG->n set, then write REG->ry.  Otherwise, write
359    REG->rx.  */
360 static void
361 m32c_banked_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
362 {
363   struct m32c_reg *bank_reg
364     = ((m32c_read_flg (cache) & reg->n) ? reg->ry : reg->rx);
365   regcache_raw_write (cache, bank_reg->num, (const void *) buf);
366 }
367
368
369 /* Move the value of SB from CACHE to BUF.  On bfd_mach_m32c, SB is a
370    banked register; on bfd_mach_m16c, it's not.  */
371 static void
372 m32c_sb_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
373 {
374   if (gdbarch_bfd_arch_info (reg->arch)->mach == bfd_mach_m16c)
375     m32c_raw_read (reg->rx, cache, buf);
376   else
377     m32c_banked_read (reg, cache, buf);
378 }
379
380
381 /* Move the value of SB from BUF to CACHE.  On bfd_mach_m32c, SB is a
382    banked register; on bfd_mach_m16c, it's not.  */
383 static void
384 m32c_sb_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
385 {
386   if (gdbarch_bfd_arch_info (reg->arch)->mach == bfd_mach_m16c)
387     m32c_raw_write (reg->rx, cache, buf);
388   else
389     m32c_banked_write (reg, cache, buf);
390 }
391
392
393 /* Assuming REG uses m32c_part_read and m32c_part_write, set *OFFSET_P
394    and *LEN_P to the offset and length, in bytes, of the part REG
395    occupies in its underlying register.  The offset is from the
396    lower-addressed end, regardless of the architecture's endianness.
397    (The M32C family is always little-endian, but let's keep those
398    assumptions out of here.)  */
399 static void
400 m32c_find_part (struct m32c_reg *reg, int *offset_p, int *len_p)
401 {
402   /* The length of the containing register, of which REG is one part.  */
403   int containing_len = TYPE_LENGTH (reg->rx->type);
404
405   /* The length of one "element" in our imaginary array.  */
406   int elt_len = TYPE_LENGTH (reg->type);
407
408   /* The offset of REG's "element" from the least significant end of
409      the containing register.  */
410   int elt_offset = reg->n * elt_len;
411
412   /* If we extend off the end, trim the length of the element.  */
413   if (elt_offset + elt_len > containing_len)
414     {
415       elt_len = containing_len - elt_offset;
416       /* We shouldn't be declaring partial registers that go off the
417          end of their containing registers.  */
418       gdb_assert (elt_len > 0);
419     }
420
421   /* Flip the offset around if we're big-endian.  */
422   if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
423     elt_offset = TYPE_LENGTH (reg->rx->type) - elt_offset - elt_len;
424
425   *offset_p = elt_offset;
426   *len_p = elt_len;
427 }
428
429
430 /* Move the value of a partial register (r0h, intbl, etc.) from CACHE
431    to BUF.  Treating the value of the register REG->rx as an array of
432    REG->type values, where higher indices refer to more significant
433    bits, read the value of the REG->n'th element.  */
434 static void
435 m32c_part_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
436 {
437   int offset, len;
438   memset (buf, 0, TYPE_LENGTH (reg->type));
439   m32c_find_part (reg, &offset, &len);
440   regcache_cooked_read_part (cache, reg->rx->num, offset, len, buf);
441 }
442
443
444 /* Move the value of a banked register from BUF to CACHE.
445    Treating the value of the register REG->rx as an array of REG->type
446    values, where higher indices refer to more significant bits, write
447    the value of the REG->n'th element.  */
448 static void
449 m32c_part_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
450 {
451   int offset, len;
452   m32c_find_part (reg, &offset, &len);
453   regcache_cooked_write_part (cache, reg->rx->num, offset, len, buf);
454 }
455
456
457 /* Move the value of REG from CACHE to BUF.  REG's value is the
458    concatenation of the values of the registers REG->rx and REG->ry,
459    with REG->rx contributing the more significant bits.  */
460 static void
461 m32c_cat_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
462 {
463   int high_bytes = TYPE_LENGTH (reg->rx->type);
464   int low_bytes  = TYPE_LENGTH (reg->ry->type);
465   /* For address arithmetic.  */
466   unsigned char *cbuf = buf;
467
468   gdb_assert (TYPE_LENGTH (reg->type) == high_bytes + low_bytes);
469
470   if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
471     {
472       regcache_cooked_read (cache, reg->rx->num, cbuf);
473       regcache_cooked_read (cache, reg->ry->num, cbuf + high_bytes);
474     }
475   else
476     {
477       regcache_cooked_read (cache, reg->rx->num, cbuf + low_bytes);
478       regcache_cooked_read (cache, reg->ry->num, cbuf);
479     }
480 }
481
482
483 /* Move the value of REG from CACHE to BUF.  REG's value is the
484    concatenation of the values of the registers REG->rx and REG->ry,
485    with REG->rx contributing the more significant bits.  */
486 static void
487 m32c_cat_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
488 {
489   int high_bytes = TYPE_LENGTH (reg->rx->type);
490   int low_bytes  = TYPE_LENGTH (reg->ry->type);
491   /* For address arithmetic.  */
492   unsigned char *cbuf = buf;
493
494   gdb_assert (TYPE_LENGTH (reg->type) == high_bytes + low_bytes);
495
496   if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
497     {
498       regcache_cooked_write (cache, reg->rx->num, cbuf);
499       regcache_cooked_write (cache, reg->ry->num, cbuf + high_bytes);
500     }
501   else
502     {
503       regcache_cooked_write (cache, reg->rx->num, cbuf + low_bytes);
504       regcache_cooked_write (cache, reg->ry->num, cbuf);
505     }
506 }
507
508
509 /* Copy the value of the raw register REG from CACHE to BUF.  REG is
510    the concatenation (from most significant to least) of r3, r2, r1,
511    and r0.  */
512 static void
513 m32c_r3r2r1r0_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
514 {
515   struct gdbarch_tdep *tdep = gdbarch_tdep (reg->arch);
516   int len = TYPE_LENGTH (tdep->r0->type);
517
518   /* For address arithmetic.  */
519   unsigned char *cbuf = buf;
520
521   if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
522     {
523       regcache_cooked_read (cache, tdep->r0->num, cbuf + len * 3);
524       regcache_cooked_read (cache, tdep->r1->num, cbuf + len * 2);
525       regcache_cooked_read (cache, tdep->r2->num, cbuf + len * 1);
526       regcache_cooked_read (cache, tdep->r3->num, cbuf);
527     }
528   else
529     {
530       regcache_cooked_read (cache, tdep->r0->num, cbuf);
531       regcache_cooked_read (cache, tdep->r1->num, cbuf + len * 1);
532       regcache_cooked_read (cache, tdep->r2->num, cbuf + len * 2);
533       regcache_cooked_read (cache, tdep->r3->num, cbuf + len * 3);
534     }
535 }
536
537
538 /* Copy the value of the raw register REG from BUF to CACHE.  REG is
539    the concatenation (from most significant to least) of r3, r2, r1,
540    and r0.  */
541 static void
542 m32c_r3r2r1r0_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
543 {
544   struct gdbarch_tdep *tdep = gdbarch_tdep (reg->arch);
545   int len = TYPE_LENGTH (tdep->r0->type);
546
547   /* For address arithmetic.  */
548   unsigned char *cbuf = buf;
549
550   if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
551     {
552       regcache_cooked_write (cache, tdep->r0->num, cbuf + len * 3);
553       regcache_cooked_write (cache, tdep->r1->num, cbuf + len * 2);
554       regcache_cooked_write (cache, tdep->r2->num, cbuf + len * 1);
555       regcache_cooked_write (cache, tdep->r3->num, cbuf);
556     }
557   else
558     {
559       regcache_cooked_write (cache, tdep->r0->num, cbuf);
560       regcache_cooked_write (cache, tdep->r1->num, cbuf + len * 1);
561       regcache_cooked_write (cache, tdep->r2->num, cbuf + len * 2);
562       regcache_cooked_write (cache, tdep->r3->num, cbuf + len * 3);
563     }
564 }
565
566
567 static void
568 m32c_pseudo_register_read (struct gdbarch *arch,
569                            struct regcache *cache,
570                            int cookednum,
571                            gdb_byte *buf)
572 {
573   struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
574   struct m32c_reg *reg;
575
576   gdb_assert (0 <= cookednum && cookednum < tdep->num_regs);
577   gdb_assert (arch == get_regcache_arch (cache));
578   gdb_assert (arch == tdep->regs[cookednum].arch);
579   reg = &tdep->regs[cookednum];
580
581   reg->read (reg, cache, buf);
582 }
583
584
585 static void
586 m32c_pseudo_register_write (struct gdbarch *arch,
587                             struct regcache *cache,
588                             int cookednum,
589                             const gdb_byte *buf)
590 {
591   struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
592   struct m32c_reg *reg;
593
594   gdb_assert (0 <= cookednum && cookednum < tdep->num_regs);
595   gdb_assert (arch == get_regcache_arch (cache));
596   gdb_assert (arch == tdep->regs[cookednum].arch);
597   reg = &tdep->regs[cookednum];
598
599   reg->write (reg, cache, (void *) buf);
600 }
601
602
603 /* Add a register with the given fields to the end of ARCH's table.
604    Return a pointer to the newly added register.  */
605 static struct m32c_reg *
606 add_reg (struct gdbarch *arch,
607          const char *name,
608          struct type *type,
609          int sim_num,
610          m32c_move_reg_t *read,
611          m32c_move_reg_t *write,
612          struct m32c_reg *rx,
613          struct m32c_reg *ry,
614          int n)
615 {
616   struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
617   struct m32c_reg *r = &tdep->regs[tdep->num_regs];
618
619   gdb_assert (tdep->num_regs < M32C_MAX_NUM_REGS);
620
621   r->name           = name;
622   r->type           = type;
623   r->arch           = arch;
624   r->num            = tdep->num_regs;
625   r->sim_num        = sim_num;
626   r->dwarf_num      = -1;
627   r->general_p      = 0;
628   r->dma_p          = 0;
629   r->system_p       = 0;
630   r->save_restore_p = 0;
631   r->read           = read;
632   r->write          = write;
633   r->rx             = rx;
634   r->ry             = ry;
635   r->n              = n;
636
637   tdep->num_regs++;
638
639   return r;
640 }
641
642
643 /* Record NUM as REG's DWARF register number.  */
644 static void
645 set_dwarf_regnum (struct m32c_reg *reg, int num)
646 {
647   gdb_assert (num < M32C_MAX_NUM_REGS);
648
649   /* Update the reg->DWARF mapping.  Only count the first number
650      assigned to this register.  */
651   if (reg->dwarf_num == -1)
652     reg->dwarf_num = num;
653
654   /* Update the DWARF->reg mapping.  */
655   gdbarch_tdep (reg->arch)->dwarf_regs[num] = reg;
656 }
657
658
659 /* Mark REG as a general-purpose register, and return it.  */
660 static struct m32c_reg *
661 mark_general (struct m32c_reg *reg)
662 {
663   reg->general_p = 1;
664   return reg;
665 }
666
667
668 /* Mark REG as a DMA register, and return it.  */
669 static struct m32c_reg *
670 mark_dma (struct m32c_reg *reg)
671 {
672   reg->dma_p = 1;
673   return reg;
674 }
675
676
677 /* Mark REG as a SYSTEM register, and return it.  */
678 static struct m32c_reg *
679 mark_system (struct m32c_reg *reg)
680 {
681   reg->system_p = 1;
682   return reg;
683 }
684
685
686 /* Mark REG as a save-restore register, and return it.  */
687 static struct m32c_reg *
688 mark_save_restore (struct m32c_reg *reg)
689 {
690   reg->save_restore_p = 1;
691   return reg;
692 }
693
694
695 #define FLAGBIT_B       0x0010
696 #define FLAGBIT_U       0x0080
697
698 /* Handy macros for declaring registers.  These all evaluate to
699    pointers to the register declared.  Macros that define two
700    registers evaluate to a pointer to the first.  */
701
702 /* A raw register named NAME, with type TYPE and sim number SIM_NUM.  */
703 #define R(name, type, sim_num)                                  \
704   (add_reg (arch, (name), (type), (sim_num),                    \
705             m32c_raw_read, m32c_raw_write, NULL, NULL, 0))
706
707 /* The simulator register number for a raw register named NAME.  */
708 #define SIM(name) (m32c_sim_reg_ ## name)
709
710 /* A raw unsigned 16-bit data register named NAME.
711    NAME should be an identifier, not a string.  */
712 #define R16U(name)                                              \
713   (R(#name, tdep->uint16, SIM (name)))
714
715 /* A raw data address register named NAME.
716    NAME should be an identifier, not a string.  */
717 #define RA(name)                                                \
718   (R(#name, tdep->data_addr_reg_type, SIM (name)))
719
720 /* A raw code address register named NAME.  NAME should
721    be an identifier, not a string.  */
722 #define RC(name)                                                \
723   (R(#name, tdep->code_addr_reg_type, SIM (name)))
724
725 /* A pair of raw registers named NAME0 and NAME1, with type TYPE.
726    NAME should be an identifier, not a string.  */
727 #define RP(name, type)                          \
728   (R(#name "0", (type), SIM (name ## 0)),       \
729    R(#name "1", (type), SIM (name ## 1)) - 1)
730
731 /* A raw banked general-purpose data register named NAME.
732    NAME should be an identifier, not a string.  */
733 #define RBD(name)                                               \
734   (R(NULL, tdep->int16, SIM (name ## _bank0)),          \
735    R(NULL, tdep->int16, SIM (name ## _bank1)) - 1)
736
737 /* A raw banked data address register named NAME.
738    NAME should be an identifier, not a string.  */
739 #define RBA(name)                                               \
740   (R(NULL, tdep->data_addr_reg_type, SIM (name ## _bank0)),     \
741    R(NULL, tdep->data_addr_reg_type, SIM (name ## _bank1)) - 1)
742
743 /* A cooked register named NAME referring to a raw banked register
744    from the bank selected by the current value of FLG.  RAW_PAIR
745    should be a pointer to the first register in the banked pair.
746    NAME must be an identifier, not a string.  */
747 #define CB(name, raw_pair)                              \
748   (add_reg (arch, #name, (raw_pair)->type, 0,           \
749             m32c_banked_read, m32c_banked_write,        \
750             (raw_pair), (raw_pair + 1), FLAGBIT_B))
751
752 /* A pair of registers named NAMEH and NAMEL, of type TYPE, that
753    access the top and bottom halves of the register pointed to by
754    NAME.  NAME should be an identifier.  */
755 #define CHL(name, type)                                                 \
756   (add_reg (arch, #name "h", (type), 0,                                 \
757             m32c_part_read, m32c_part_write, name, NULL, 1),            \
758    add_reg (arch, #name "l", (type), 0,                                 \
759             m32c_part_read, m32c_part_write, name, NULL, 0) - 1)
760
761 /* A register constructed by concatenating the two registers HIGH and
762    LOW, whose name is HIGHLOW and whose type is TYPE.  */
763 #define CCAT(high, low, type)                                   \
764   (add_reg (arch, #high #low, (type), 0,                        \
765             m32c_cat_read, m32c_cat_write, (high), (low), 0))
766
767 /* Abbreviations for marking register group membership.  */
768 #define G(reg)   (mark_general (reg))
769 #define S(reg)   (mark_system  (reg))
770 #define DMA(reg) (mark_dma     (reg))
771
772
773 /* Construct the register set for ARCH.  */
774 static void
775 make_regs (struct gdbarch *arch)
776 {
777   struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
778   int mach = gdbarch_bfd_arch_info (arch)->mach;
779
780   struct m32c_reg *raw_r0_pair = RBD (r0);
781   struct m32c_reg *raw_r1_pair = RBD (r1);
782   struct m32c_reg *raw_r2_pair = RBD (r2);
783   struct m32c_reg *raw_r3_pair = RBD (r3);
784   struct m32c_reg *raw_a0_pair = RBA (a0);
785   struct m32c_reg *raw_a1_pair = RBA (a1);
786   struct m32c_reg *raw_fb_pair = RBA (fb);
787
788   /* sb is banked on the bfd_mach_m32c, but not on bfd_mach_m16c.
789      We always declare both raw registers, and deal with the distinction
790      in the pseudoregister.  */
791   struct m32c_reg *raw_sb_pair = RBA (sb);
792
793   struct m32c_reg *usp         = S (RA (usp));
794   struct m32c_reg *isp         = S (RA (isp));
795   struct m32c_reg *intb        = S (RC (intb));
796   struct m32c_reg *pc          = G (RC (pc));
797   struct m32c_reg *flg         = G (R16U (flg));
798
799   if (mach == bfd_mach_m32c)
800     {
801       struct m32c_reg *svf     = S (R16U (svf));
802       struct m32c_reg *svp     = S (RC (svp));
803       struct m32c_reg *vct     = S (RC (vct));
804
805       struct m32c_reg *dmd01   = DMA (RP (dmd, tdep->uint8));
806       struct m32c_reg *dct01   = DMA (RP (dct, tdep->uint16));
807       struct m32c_reg *drc01   = DMA (RP (drc, tdep->uint16));
808       struct m32c_reg *dma01   = DMA (RP (dma, tdep->data_addr_reg_type));
809       struct m32c_reg *dsa01   = DMA (RP (dsa, tdep->data_addr_reg_type));
810       struct m32c_reg *dra01   = DMA (RP (dra, tdep->data_addr_reg_type));
811     }
812
813   int num_raw_regs = tdep->num_regs;
814
815   struct m32c_reg *r0          = G (CB (r0, raw_r0_pair));
816   struct m32c_reg *r1          = G (CB (r1, raw_r1_pair));
817   struct m32c_reg *r2          = G (CB (r2, raw_r2_pair));
818   struct m32c_reg *r3          = G (CB (r3, raw_r3_pair));
819   struct m32c_reg *a0          = G (CB (a0, raw_a0_pair));
820   struct m32c_reg *a1          = G (CB (a1, raw_a1_pair));
821   struct m32c_reg *fb          = G (CB (fb, raw_fb_pair));
822
823   /* sb is banked on the bfd_mach_m32c, but not on bfd_mach_m16c.
824      Specify custom read/write functions that do the right thing.  */
825   struct m32c_reg *sb
826     = G (add_reg (arch, "sb", raw_sb_pair->type, 0,
827                   m32c_sb_read, m32c_sb_write,
828                   raw_sb_pair, raw_sb_pair + 1, 0));
829
830   /* The current sp is either usp or isp, depending on the value of
831      the FLG register's U bit.  */
832   struct m32c_reg *sp
833     = G (add_reg (arch, "sp", usp->type, 0,
834                   m32c_banked_read, m32c_banked_write, isp, usp, FLAGBIT_U));
835
836   struct m32c_reg *r0hl        = CHL (r0, tdep->int8);
837   struct m32c_reg *r1hl        = CHL (r1, tdep->int8);
838   struct m32c_reg *r2hl        = CHL (r2, tdep->int8);
839   struct m32c_reg *r3hl        = CHL (r3, tdep->int8);
840   struct m32c_reg *intbhl      = CHL (intb, tdep->int16);
841
842   struct m32c_reg *r2r0        = CCAT (r2,   r0,   tdep->int32);
843   struct m32c_reg *r3r1        = CCAT (r3,   r1,   tdep->int32);
844   struct m32c_reg *r3r1r2r0    = CCAT (r3r1, r2r0, tdep->int64);
845
846   struct m32c_reg *r3r2r1r0
847     = add_reg (arch, "r3r2r1r0", tdep->int64, 0,
848                m32c_r3r2r1r0_read, m32c_r3r2r1r0_write, NULL, NULL, 0);
849
850   struct m32c_reg *a1a0;
851   if (mach == bfd_mach_m16c)
852     a1a0 = CCAT (a1, a0, tdep->int32);
853   else
854     a1a0 = NULL;
855
856   int num_cooked_regs = tdep->num_regs - num_raw_regs;
857
858   tdep->pc       = pc;
859   tdep->flg      = flg;
860   tdep->r0       = r0;
861   tdep->r1       = r1;
862   tdep->r2       = r2;
863   tdep->r3       = r3;
864   tdep->r2r0     = r2r0;
865   tdep->r3r2r1r0 = r3r2r1r0;
866   tdep->r3r1r2r0 = r3r1r2r0;
867   tdep->a0       = a0;
868   tdep->a1       = a1;
869   tdep->sb       = sb;
870   tdep->fb       = fb;
871   tdep->sp       = sp;
872
873   /* Set up the DWARF register table.  */
874   memset (tdep->dwarf_regs, 0, sizeof (tdep->dwarf_regs));
875   set_dwarf_regnum (r0hl + 1, 0x01);
876   set_dwarf_regnum (r0hl + 0, 0x02);
877   set_dwarf_regnum (r1hl + 1, 0x03);
878   set_dwarf_regnum (r1hl + 0, 0x04);
879   set_dwarf_regnum (r0,       0x05);
880   set_dwarf_regnum (r1,       0x06);
881   set_dwarf_regnum (r2,       0x07);
882   set_dwarf_regnum (r3,       0x08);
883   set_dwarf_regnum (a0,       0x09);
884   set_dwarf_regnum (a1,       0x0a);
885   set_dwarf_regnum (fb,       0x0b);
886   set_dwarf_regnum (sp,       0x0c);
887   set_dwarf_regnum (pc,       0x0d); /* GCC's invention */
888   set_dwarf_regnum (sb,       0x13);
889   set_dwarf_regnum (r2r0,     0x15);
890   set_dwarf_regnum (r3r1,     0x16);
891   if (a1a0)
892     set_dwarf_regnum (a1a0,   0x17);
893
894   /* Enumerate the save/restore register group.
895
896      The regcache_save and regcache_restore functions apply their read
897      function to each register in this group.
898
899      Since frame_pop supplies frame_unwind_register as its read
900      function, the registers meaningful to the Dwarf unwinder need to
901      be in this group.
902
903      On the other hand, when we make inferior calls, save_inferior_status
904      and restore_inferior_status use them to preserve the current register
905      values across the inferior call.  For this, you'd kind of like to
906      preserve all the raw registers, to protect the interrupted code from
907      any sort of bank switching the callee might have done.  But we handle
908      those cases so badly anyway --- for example, it matters whether we
909      restore FLG before or after we restore the general-purpose registers,
910      but there's no way to express that --- that it isn't worth worrying
911      about.
912
913      We omit control registers like inthl: if you call a function that
914      changes those, it's probably because you wanted that change to be
915      visible to the interrupted code.  */
916   mark_save_restore (r0);
917   mark_save_restore (r1);
918   mark_save_restore (r2);
919   mark_save_restore (r3);
920   mark_save_restore (a0);
921   mark_save_restore (a1);
922   mark_save_restore (sb);
923   mark_save_restore (fb);
924   mark_save_restore (sp);
925   mark_save_restore (pc);
926   mark_save_restore (flg);
927
928   set_gdbarch_num_regs (arch, num_raw_regs);
929   set_gdbarch_num_pseudo_regs (arch, num_cooked_regs);
930   set_gdbarch_pc_regnum (arch, pc->num);
931   set_gdbarch_sp_regnum (arch, sp->num);
932   set_gdbarch_register_name (arch, m32c_register_name);
933   set_gdbarch_register_type (arch, m32c_register_type);
934   set_gdbarch_pseudo_register_read (arch, m32c_pseudo_register_read);
935   set_gdbarch_pseudo_register_write (arch, m32c_pseudo_register_write);
936   set_gdbarch_register_sim_regno (arch, m32c_register_sim_regno);
937   set_gdbarch_stab_reg_to_regnum (arch, m32c_debug_info_reg_to_regnum);
938   set_gdbarch_dwarf_reg_to_regnum (arch, m32c_debug_info_reg_to_regnum);
939   set_gdbarch_dwarf2_reg_to_regnum (arch, m32c_debug_info_reg_to_regnum);
940   set_gdbarch_register_reggroup_p (arch, m32c_register_reggroup_p);
941
942   reggroup_add (arch, general_reggroup);
943   reggroup_add (arch, all_reggroup);
944   reggroup_add (arch, save_reggroup);
945   reggroup_add (arch, restore_reggroup);
946   reggroup_add (arch, system_reggroup);
947   reggroup_add (arch, m32c_dma_reggroup);
948 }
949
950
951 \f
952 /* Breakpoints.  */
953
954 static const unsigned char *
955 m32c_breakpoint_from_pc (CORE_ADDR *pc, int *len)
956 {
957   static unsigned char break_insn[] = { 0x00 }; /* brk */
958
959   *len = sizeof (break_insn);
960   return break_insn;
961 }
962
963
964 \f
965 /* Prologue analysis.  */
966
967 struct m32c_prologue
968 {
969   /* For consistency with the DWARF 2 .debug_frame info generated by
970      GCC, a frame's CFA is the address immediately after the saved
971      return address.  */
972
973   /* The architecture for which we generated this prologue info.  */
974   struct gdbarch *arch;
975
976   enum {
977     /* This function uses a frame pointer.  */
978     prologue_with_frame_ptr,
979
980     /* This function has no frame pointer.  */
981     prologue_sans_frame_ptr,
982
983     /* This function sets up the stack, so its frame is the first
984        frame on the stack.  */
985     prologue_first_frame
986
987   } kind;
988
989   /* If KIND is prologue_with_frame_ptr, this is the offset from the
990      CFA to where the frame pointer points.  This is always zero or
991      negative.  */
992   LONGEST frame_ptr_offset;
993
994   /* If KIND is prologue_sans_frame_ptr, the offset from the CFA to
995      the stack pointer --- always zero or negative.
996
997      Calling this a "size" is a bit misleading, but given that the
998      stack grows downwards, using offsets for everything keeps one
999      from going completely sign-crazy: you never change anything's
1000      sign for an ADD instruction; always change the second operand's
1001      sign for a SUB instruction; and everything takes care of
1002      itself.
1003
1004      Functions that use alloca don't have a constant frame size.  But
1005      they always have frame pointers, so we must use that to find the
1006      CFA (and perhaps to unwind the stack pointer).  */
1007   LONGEST frame_size;
1008
1009   /* The address of the first instruction at which the frame has been
1010      set up and the arguments are where the debug info says they are
1011      --- as best as we can tell.  */
1012   CORE_ADDR prologue_end;
1013
1014   /* reg_offset[R] is the offset from the CFA at which register R is
1015      saved, or 1 if register R has not been saved.  (Real values are
1016      always zero or negative.)  */
1017   LONGEST reg_offset[M32C_MAX_NUM_REGS];
1018 };
1019
1020
1021 /* The longest I've seen, anyway.  */
1022 #define M32C_MAX_INSN_LEN (9)
1023
1024 /* Processor state, for the prologue analyzer.  */
1025 struct m32c_pv_state
1026 {
1027   struct gdbarch *arch;
1028   pv_t r0, r1, r2, r3;
1029   pv_t a0, a1;
1030   pv_t sb, fb, sp;
1031   pv_t pc;
1032   struct pv_area *stack;
1033
1034   /* Bytes from the current PC, the address they were read from,
1035      and the address of the next unconsumed byte.  */
1036   gdb_byte insn[M32C_MAX_INSN_LEN];
1037   CORE_ADDR scan_pc, next_addr;
1038 };
1039
1040
1041 /* Push VALUE on STATE's stack, occupying SIZE bytes.  Return zero if
1042    all went well, or non-zero if simulating the action would trash our
1043    state.  */
1044 static int
1045 m32c_pv_push (struct m32c_pv_state *state, pv_t value, int size)
1046 {
1047   if (pv_area_store_would_trash (state->stack, state->sp))
1048     return 1;
1049
1050   state->sp = pv_add_constant (state->sp, -size);
1051   pv_area_store (state->stack, state->sp, size, value);
1052
1053   return 0;
1054 }
1055
1056
1057 /* A source or destination location for an m16c or m32c
1058    instruction.  */
1059 struct srcdest
1060 {
1061   /* If srcdest_reg, the location is a register pointed to by REG.
1062      If srcdest_partial_reg, the location is part of a register pointed
1063      to by REG.  We don't try to handle this too well.
1064      If srcdest_mem, the location is memory whose address is ADDR.  */
1065   enum { srcdest_reg, srcdest_partial_reg, srcdest_mem } kind;
1066   pv_t *reg, addr;
1067 };
1068
1069
1070 /* Return the SIZE-byte value at LOC in STATE.  */
1071 static pv_t
1072 m32c_srcdest_fetch (struct m32c_pv_state *state, struct srcdest loc, int size)
1073 {
1074   if (loc.kind == srcdest_mem)
1075     return pv_area_fetch (state->stack, loc.addr, size);
1076   else if (loc.kind == srcdest_partial_reg)
1077     return pv_unknown ();
1078   else
1079     return *loc.reg;
1080 }
1081
1082
1083 /* Write VALUE, a SIZE-byte value, to LOC in STATE.  Return zero if
1084    all went well, or non-zero if simulating the store would trash our
1085    state.  */
1086 static int
1087 m32c_srcdest_store (struct m32c_pv_state *state, struct srcdest loc,
1088                     pv_t value, int size)
1089 {
1090   if (loc.kind == srcdest_mem)
1091     {
1092       if (pv_area_store_would_trash (state->stack, loc.addr))
1093         return 1;
1094       pv_area_store (state->stack, loc.addr, size, value);
1095     }
1096   else if (loc.kind == srcdest_partial_reg)
1097     *loc.reg = pv_unknown ();
1098   else
1099     *loc.reg = value;
1100
1101   return 0;
1102 }
1103
1104
1105 static int
1106 m32c_sign_ext (int v, int bits)
1107 {
1108   int mask = 1 << (bits - 1);
1109   return (v ^ mask) - mask;
1110 }
1111
1112 static unsigned int
1113 m32c_next_byte (struct m32c_pv_state *st)
1114 {
1115   gdb_assert (st->next_addr - st->scan_pc < sizeof (st->insn));
1116   return st->insn[st->next_addr++ - st->scan_pc];
1117 }
1118
1119 static int
1120 m32c_udisp8 (struct m32c_pv_state *st)
1121 {
1122   return m32c_next_byte (st);
1123 }
1124
1125
1126 static int
1127 m32c_sdisp8 (struct m32c_pv_state *st)
1128 {
1129   return m32c_sign_ext (m32c_next_byte (st), 8);
1130 }
1131
1132
1133 static int
1134 m32c_udisp16 (struct m32c_pv_state *st)
1135 {
1136   int low  = m32c_next_byte (st);
1137   int high = m32c_next_byte (st);
1138
1139   return low + (high << 8);
1140 }
1141
1142
1143 static int
1144 m32c_sdisp16 (struct m32c_pv_state *st)
1145 {
1146   int low  = m32c_next_byte (st);
1147   int high = m32c_next_byte (st);
1148
1149   return m32c_sign_ext (low + (high << 8), 16);
1150 }
1151
1152
1153 static int
1154 m32c_udisp24 (struct m32c_pv_state *st)
1155 {
1156   int low  = m32c_next_byte (st);
1157   int mid  = m32c_next_byte (st);
1158   int high = m32c_next_byte (st);
1159
1160   return low + (mid << 8) + (high << 16);
1161 }
1162
1163
1164 /* Extract the 'source' field from an m32c MOV.size:G-format instruction.  */
1165 static int
1166 m32c_get_src23 (unsigned char *i)
1167 {
1168   return (((i[0] & 0x70) >> 2)
1169           | ((i[1] & 0x30) >> 4));
1170 }
1171
1172
1173 /* Extract the 'dest' field from an m32c MOV.size:G-format instruction.  */
1174 static int
1175 m32c_get_dest23 (unsigned char *i)
1176 {
1177   return (((i[0] & 0x0e) << 1)
1178           | ((i[1] & 0xc0) >> 6));
1179 }
1180
1181
1182 static struct srcdest
1183 m32c_decode_srcdest4 (struct m32c_pv_state *st,
1184                       int code, int size)
1185 {
1186   struct srcdest sd;
1187
1188   if (code < 6)
1189     sd.kind = (size == 2 ? srcdest_reg : srcdest_partial_reg);
1190   else
1191     sd.kind = srcdest_mem;
1192
1193   switch (code)
1194     {
1195     case 0x0: sd.reg = (size == 1 ? &st->r0 : &st->r0); break;
1196     case 0x1: sd.reg = (size == 1 ? &st->r0 : &st->r1); break;
1197     case 0x2: sd.reg = (size == 1 ? &st->r1 : &st->r2); break;
1198     case 0x3: sd.reg = (size == 1 ? &st->r1 : &st->r3); break;
1199
1200     case 0x4: sd.reg = &st->a0; break;
1201     case 0x5: sd.reg = &st->a1; break;
1202
1203     case 0x6: sd.addr = st->a0; break;
1204     case 0x7: sd.addr = st->a1; break;
1205
1206     case 0x8: sd.addr = pv_add_constant (st->a0, m32c_udisp8 (st)); break;
1207     case 0x9: sd.addr = pv_add_constant (st->a1, m32c_udisp8 (st)); break;
1208     case 0xa: sd.addr = pv_add_constant (st->sb, m32c_udisp8 (st)); break;
1209     case 0xb: sd.addr = pv_add_constant (st->fb, m32c_sdisp8 (st)); break;
1210
1211     case 0xc: sd.addr = pv_add_constant (st->a0, m32c_udisp16 (st)); break;
1212     case 0xd: sd.addr = pv_add_constant (st->a1, m32c_udisp16 (st)); break;
1213     case 0xe: sd.addr = pv_add_constant (st->sb, m32c_udisp16 (st)); break;
1214     case 0xf: sd.addr = pv_constant (m32c_udisp16 (st)); break;
1215
1216     default:
1217       gdb_assert (0);
1218     }
1219
1220   return sd;
1221 }
1222
1223
1224 static struct srcdest
1225 m32c_decode_sd23 (struct m32c_pv_state *st, int code, int size, int ind)
1226 {
1227   struct srcdest sd;
1228
1229   switch (code)
1230     {
1231     case 0x12:
1232     case 0x13:
1233     case 0x10:
1234     case 0x11:
1235       sd.kind = (size == 1) ? srcdest_partial_reg : srcdest_reg;
1236       break;
1237
1238     case 0x02:
1239     case 0x03:
1240       sd.kind = (size == 4) ? srcdest_reg : srcdest_partial_reg;
1241       break;
1242
1243     default:
1244       sd.kind = srcdest_mem;
1245       break;
1246
1247     }
1248
1249   switch (code)
1250     {
1251     case 0x12: sd.reg = &st->r0; break;
1252     case 0x13: sd.reg = &st->r1; break;
1253     case 0x10: sd.reg = ((size == 1) ? &st->r0 : &st->r2); break;
1254     case 0x11: sd.reg = ((size == 1) ? &st->r1 : &st->r3); break;
1255     case 0x02: sd.reg = &st->a0; break;
1256     case 0x03: sd.reg = &st->a1; break;
1257
1258     case 0x00: sd.addr = st->a0; break;
1259     case 0x01: sd.addr = st->a1; break;
1260     case 0x04: sd.addr = pv_add_constant (st->a0, m32c_udisp8 (st)); break;
1261     case 0x05: sd.addr = pv_add_constant (st->a1, m32c_udisp8 (st)); break;
1262     case 0x06: sd.addr = pv_add_constant (st->sb, m32c_udisp8 (st)); break;
1263     case 0x07: sd.addr = pv_add_constant (st->fb, m32c_sdisp8 (st)); break;
1264     case 0x08: sd.addr = pv_add_constant (st->a0, m32c_udisp16 (st)); break;
1265     case 0x09: sd.addr = pv_add_constant (st->a1, m32c_udisp16 (st)); break;
1266     case 0x0a: sd.addr = pv_add_constant (st->sb, m32c_udisp16 (st)); break;
1267     case 0x0b: sd.addr = pv_add_constant (st->fb, m32c_sdisp16 (st)); break;
1268     case 0x0c: sd.addr = pv_add_constant (st->a0, m32c_udisp24 (st)); break;
1269     case 0x0d: sd.addr = pv_add_constant (st->a1, m32c_udisp24 (st)); break;
1270     case 0x0f: sd.addr = pv_constant (m32c_udisp16 (st)); break;
1271     case 0x0e: sd.addr = pv_constant (m32c_udisp24 (st)); break;
1272     default:
1273       gdb_assert (0);
1274     }
1275
1276   if (ind)
1277     {
1278       sd.addr = m32c_srcdest_fetch (st, sd, 4);
1279       sd.kind = srcdest_mem;
1280     }
1281
1282   return sd;
1283 }
1284
1285
1286 /* The r16c and r32c machines have instructions with similar
1287    semantics, but completely different machine language encodings.  So
1288    we break out the semantics into their own functions, and leave
1289    machine-specific decoding in m32c_analyze_prologue.
1290
1291    The following functions all expect their arguments already decoded,
1292    and they all return zero if analysis should continue past this
1293    instruction, or non-zero if analysis should stop.  */
1294
1295
1296 /* Simulate an 'enter SIZE' instruction in STATE.  */
1297 static int
1298 m32c_pv_enter (struct m32c_pv_state *state, int size)
1299 {
1300   struct gdbarch_tdep *tdep = gdbarch_tdep (state->arch);
1301
1302   /* If simulating this store would require us to forget
1303      everything we know about the stack frame in the name of
1304      accuracy, it would be better to just quit now.  */
1305   if (pv_area_store_would_trash (state->stack, state->sp))
1306     return 1;
1307
1308   if (m32c_pv_push (state, state->fb, tdep->push_addr_bytes))
1309     return 1;
1310   state->fb = state->sp;
1311   state->sp = pv_add_constant (state->sp, -size);
1312
1313   return 0;
1314 }
1315
1316
1317 static int
1318 m32c_pv_pushm_one (struct m32c_pv_state *state, pv_t reg,
1319                    int bit, int src, int size)
1320 {
1321   if (bit & src)
1322     {
1323       if (m32c_pv_push (state, reg, size))
1324         return 1;
1325     }
1326
1327   return 0;
1328 }
1329
1330
1331 /* Simulate a 'pushm SRC' instruction in STATE.  */
1332 static int
1333 m32c_pv_pushm (struct m32c_pv_state *state, int src)
1334 {
1335   struct gdbarch_tdep *tdep = gdbarch_tdep (state->arch);
1336
1337   /* The bits in SRC indicating which registers to save are:
1338      r0 r1 r2 r3 a0 a1 sb fb */
1339   return
1340     (   m32c_pv_pushm_one (state, state->fb, 0x01, src, tdep->push_addr_bytes)
1341      || m32c_pv_pushm_one (state, state->sb, 0x02, src, tdep->push_addr_bytes)
1342      || m32c_pv_pushm_one (state, state->a1, 0x04, src, tdep->push_addr_bytes)
1343      || m32c_pv_pushm_one (state, state->a0, 0x08, src, tdep->push_addr_bytes)
1344      || m32c_pv_pushm_one (state, state->r3, 0x10, src, 2)
1345      || m32c_pv_pushm_one (state, state->r2, 0x20, src, 2)
1346      || m32c_pv_pushm_one (state, state->r1, 0x40, src, 2)
1347      || m32c_pv_pushm_one (state, state->r0, 0x80, src, 2));
1348 }
1349
1350 /* Return non-zero if VALUE is the first incoming argument register.  */
1351
1352 static int
1353 m32c_is_1st_arg_reg (struct m32c_pv_state *state, pv_t value)
1354 {
1355   struct gdbarch_tdep *tdep = gdbarch_tdep (state->arch);
1356   return (value.kind == pvk_register
1357           && (gdbarch_bfd_arch_info (state->arch)->mach == bfd_mach_m16c
1358               ? (value.reg == tdep->r1->num)
1359               : (value.reg == tdep->r0->num))
1360           && value.k == 0);
1361 }
1362
1363 /* Return non-zero if VALUE is an incoming argument register.  */
1364
1365 static int
1366 m32c_is_arg_reg (struct m32c_pv_state *state, pv_t value)
1367 {
1368   struct gdbarch_tdep *tdep = gdbarch_tdep (state->arch);
1369   return (value.kind == pvk_register
1370           && (gdbarch_bfd_arch_info (state->arch)->mach == bfd_mach_m16c
1371               ? (value.reg == tdep->r1->num || value.reg == tdep->r2->num)
1372               : (value.reg == tdep->r0->num))
1373           && value.k == 0);
1374 }
1375
1376 /* Return non-zero if a store of VALUE to LOC is probably spilling an
1377    argument register to its stack slot in STATE.  Such instructions
1378    should be included in the prologue, if possible.
1379
1380    The store is a spill if:
1381    - the value being stored is the original value of an argument register;
1382    - the value has not already been stored somewhere in STACK; and
1383    - LOC is a stack slot (e.g., a memory location whose address is
1384      relative to the original value of the SP).  */
1385
1386 static int
1387 m32c_is_arg_spill (struct m32c_pv_state *st, 
1388                    struct srcdest loc, 
1389                    pv_t value)
1390 {
1391   struct gdbarch_tdep *tdep = gdbarch_tdep (st->arch);
1392
1393   return (m32c_is_arg_reg (st, value)
1394           && loc.kind == srcdest_mem
1395           && pv_is_register (loc.addr, tdep->sp->num)
1396           && ! pv_area_find_reg (st->stack, st->arch, value.reg, 0));
1397 }
1398
1399 /* Return non-zero if a store of VALUE to LOC is probably 
1400    copying the struct return address into an address register
1401    for immediate use.  This is basically a "spill" into the
1402    address register, instead of onto the stack. 
1403
1404    The prerequisites are:
1405    - value being stored is original value of the FIRST arg register;
1406    - value has not already been stored on stack; and
1407    - LOC is an address register (a0 or a1).  */
1408
1409 static int
1410 m32c_is_struct_return (struct m32c_pv_state *st,
1411                        struct srcdest loc, 
1412                        pv_t value)
1413 {
1414   struct gdbarch_tdep *tdep = gdbarch_tdep (st->arch);
1415
1416   return (m32c_is_1st_arg_reg (st, value)
1417           && !pv_area_find_reg (st->stack, st->arch, value.reg, 0)
1418           && loc.kind == srcdest_reg
1419           && (pv_is_register (*loc.reg, tdep->a0->num)
1420               || pv_is_register (*loc.reg, tdep->a1->num)));
1421 }
1422
1423 /* Return non-zero if a 'pushm' saving the registers indicated by SRC
1424    was a register save:
1425    - all the named registers should have their original values, and
1426    - the stack pointer should be at a constant offset from the
1427      original stack pointer.  */
1428 static int
1429 m32c_pushm_is_reg_save (struct m32c_pv_state *st, int src)
1430 {
1431   struct gdbarch_tdep *tdep = gdbarch_tdep (st->arch);
1432   /* The bits in SRC indicating which registers to save are:
1433      r0 r1 r2 r3 a0 a1 sb fb */
1434   return
1435     (pv_is_register (st->sp, tdep->sp->num)
1436      && (! (src & 0x01) || pv_is_register_k (st->fb, tdep->fb->num, 0))
1437      && (! (src & 0x02) || pv_is_register_k (st->sb, tdep->sb->num, 0))
1438      && (! (src & 0x04) || pv_is_register_k (st->a1, tdep->a1->num, 0))
1439      && (! (src & 0x08) || pv_is_register_k (st->a0, tdep->a0->num, 0))
1440      && (! (src & 0x10) || pv_is_register_k (st->r3, tdep->r3->num, 0))
1441      && (! (src & 0x20) || pv_is_register_k (st->r2, tdep->r2->num, 0))
1442      && (! (src & 0x40) || pv_is_register_k (st->r1, tdep->r1->num, 0))
1443      && (! (src & 0x80) || pv_is_register_k (st->r0, tdep->r0->num, 0)));
1444 }
1445
1446
1447 /* Function for finding saved registers in a 'struct pv_area'; we pass
1448    this to pv_area_scan.
1449
1450    If VALUE is a saved register, ADDR says it was saved at a constant
1451    offset from the frame base, and SIZE indicates that the whole
1452    register was saved, record its offset in RESULT_UNTYPED.  */
1453 static void
1454 check_for_saved (void *prologue_untyped, pv_t addr, CORE_ADDR size, pv_t value)
1455 {
1456   struct m32c_prologue *prologue = (struct m32c_prologue *) prologue_untyped;
1457   struct gdbarch *arch = prologue->arch;
1458   struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
1459
1460   /* Is this the unchanged value of some register being saved on the
1461      stack?  */
1462   if (value.kind == pvk_register
1463       && value.k == 0
1464       && pv_is_register (addr, tdep->sp->num))
1465     {
1466       /* Some registers require special handling: they're saved as a
1467          larger value than the register itself.  */
1468       CORE_ADDR saved_size = register_size (arch, value.reg);
1469
1470       if (value.reg == tdep->pc->num)
1471         saved_size = tdep->ret_addr_bytes;
1472       else if (gdbarch_register_type (arch, value.reg)
1473                == tdep->data_addr_reg_type)
1474         saved_size = tdep->push_addr_bytes;
1475
1476       if (size == saved_size)
1477         {
1478           /* Find which end of the saved value corresponds to our
1479              register.  */
1480           if (gdbarch_byte_order (arch) == BFD_ENDIAN_BIG)
1481             prologue->reg_offset[value.reg]
1482               = (addr.k + saved_size - register_size (arch, value.reg));
1483           else
1484             prologue->reg_offset[value.reg] = addr.k;
1485         }
1486     }
1487 }
1488
1489
1490 /* Analyze the function prologue for ARCH at START, going no further
1491    than LIMIT, and place a description of what we found in
1492    PROLOGUE.  */
1493 void
1494 m32c_analyze_prologue (struct gdbarch *arch,
1495                        CORE_ADDR start, CORE_ADDR limit,
1496                        struct m32c_prologue *prologue)
1497 {
1498   struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
1499   unsigned long mach = gdbarch_bfd_arch_info (arch)->mach;
1500   CORE_ADDR after_last_frame_related_insn;
1501   struct cleanup *back_to;
1502   struct m32c_pv_state st;
1503
1504   st.arch = arch;
1505   st.r0 = pv_register (tdep->r0->num, 0);
1506   st.r1 = pv_register (tdep->r1->num, 0);
1507   st.r2 = pv_register (tdep->r2->num, 0);
1508   st.r3 = pv_register (tdep->r3->num, 0);
1509   st.a0 = pv_register (tdep->a0->num, 0);
1510   st.a1 = pv_register (tdep->a1->num, 0);
1511   st.sb = pv_register (tdep->sb->num, 0);
1512   st.fb = pv_register (tdep->fb->num, 0);
1513   st.sp = pv_register (tdep->sp->num, 0);
1514   st.pc = pv_register (tdep->pc->num, 0);
1515   st.stack = make_pv_area (tdep->sp->num);
1516   back_to = make_cleanup_free_pv_area (st.stack);
1517
1518   /* Record that the call instruction has saved the return address on
1519      the stack.  */
1520   m32c_pv_push (&st, st.pc, tdep->ret_addr_bytes);
1521
1522   memset (prologue, 0, sizeof (*prologue));
1523   prologue->arch = arch;
1524   {
1525     int i;
1526     for (i = 0; i < M32C_MAX_NUM_REGS; i++)
1527       prologue->reg_offset[i] = 1;
1528   }
1529
1530   st.scan_pc = after_last_frame_related_insn = start;
1531
1532   while (st.scan_pc < limit)
1533     {
1534       pv_t pre_insn_fb = st.fb;
1535       pv_t pre_insn_sp = st.sp;
1536
1537       /* In theory we could get in trouble by trying to read ahead
1538          here, when we only know we're expecting one byte.  In
1539          practice I doubt anyone will care, and it makes the rest of
1540          the code easier.  */
1541       if (target_read_memory (st.scan_pc, st.insn, sizeof (st.insn)))
1542         /* If we can't fetch the instruction from memory, stop here
1543            and hope for the best.  */
1544         break;
1545       st.next_addr = st.scan_pc;
1546
1547       /* The assembly instructions are written as they appear in the
1548          section of the processor manuals that describe the
1549          instruction encodings.
1550
1551          When a single assembly language instruction has several
1552          different machine-language encodings, the manual
1553          distinguishes them by a number in parens, before the
1554          mnemonic.  Those numbers are included, as well.
1555
1556          The srcdest decoding instructions have the same names as the
1557          analogous functions in the simulator.  */
1558       if (mach == bfd_mach_m16c)
1559         {
1560           /* (1) ENTER #imm8 */
1561           if (st.insn[0] == 0x7c && st.insn[1] == 0xf2)
1562             {
1563               if (m32c_pv_enter (&st, st.insn[2]))
1564                 break;
1565               st.next_addr += 3;
1566             }
1567           /* (1) PUSHM src */
1568           else if (st.insn[0] == 0xec)
1569             {
1570               int src = st.insn[1];
1571               if (m32c_pv_pushm (&st, src))
1572                 break;
1573               st.next_addr += 2;
1574
1575               if (m32c_pushm_is_reg_save (&st, src))
1576                 after_last_frame_related_insn = st.next_addr;
1577             }
1578
1579           /* (6) MOV.size:G src, dest */
1580           else if ((st.insn[0] & 0xfe) == 0x72)
1581             {
1582               int size = (st.insn[0] & 0x01) ? 2 : 1;
1583
1584               st.next_addr += 2;
1585
1586               struct srcdest src
1587                 = m32c_decode_srcdest4 (&st, (st.insn[1] >> 4) & 0xf, size);
1588               struct srcdest dest
1589                 = m32c_decode_srcdest4 (&st, st.insn[1] & 0xf, size);
1590               pv_t src_value = m32c_srcdest_fetch (&st, src, size);
1591
1592               if (m32c_is_arg_spill (&st, dest, src_value))
1593                 after_last_frame_related_insn = st.next_addr;
1594               else if (m32c_is_struct_return (&st, dest, src_value))
1595                 after_last_frame_related_insn = st.next_addr;
1596
1597               if (m32c_srcdest_store (&st, dest, src_value, size))
1598                 break;
1599             }
1600
1601           /* (1) LDC #IMM16, sp */
1602           else if (st.insn[0] == 0xeb
1603                    && st.insn[1] == 0x50)
1604             {
1605               st.next_addr += 2;
1606               st.sp = pv_constant (m32c_udisp16 (&st));
1607             }
1608
1609           else
1610             /* We've hit some instruction we don't know how to simulate.
1611                Strictly speaking, we should set every value we're
1612                tracking to "unknown".  But we'll be optimistic, assume
1613                that we have enough information already, and stop
1614                analysis here.  */
1615             break;
1616         }
1617       else
1618         {
1619           int src_indirect = 0;
1620           int dest_indirect = 0;
1621           int i = 0;
1622
1623           gdb_assert (mach == bfd_mach_m32c);
1624
1625           /* Check for prefix bytes indicating indirect addressing.  */
1626           if (st.insn[0] == 0x41)
1627             {
1628               src_indirect = 1;
1629               i++;
1630             }
1631           else if (st.insn[0] == 0x09)
1632             {
1633               dest_indirect = 1;
1634               i++;
1635             }
1636           else if (st.insn[0] == 0x49)
1637             {
1638               src_indirect = dest_indirect = 1;
1639               i++;
1640             }
1641
1642           /* (1) ENTER #imm8 */
1643           if (st.insn[i] == 0xec)
1644             {
1645               if (m32c_pv_enter (&st, st.insn[i + 1]))
1646                 break;
1647               st.next_addr += 2;
1648             }
1649
1650           /* (1) PUSHM src */
1651           else if (st.insn[i] == 0x8f)
1652             {
1653               int src = st.insn[i + 1];
1654               if (m32c_pv_pushm (&st, src))
1655                 break;
1656               st.next_addr += 2;
1657
1658               if (m32c_pushm_is_reg_save (&st, src))
1659                 after_last_frame_related_insn = st.next_addr;
1660             }
1661
1662           /* (7) MOV.size:G src, dest */
1663           else if ((st.insn[i] & 0x80) == 0x80
1664                    && (st.insn[i + 1] & 0x0f) == 0x0b
1665                    && m32c_get_src23 (&st.insn[i]) < 20
1666                    && m32c_get_dest23 (&st.insn[i]) < 20)
1667             {
1668               int bw = st.insn[i] & 0x01;
1669               int size = bw ? 2 : 1;
1670
1671               st.next_addr += 2;
1672
1673               struct srcdest src
1674                 = m32c_decode_sd23 (&st, m32c_get_src23 (&st.insn[i]),
1675                                     size, src_indirect);
1676               struct srcdest dest
1677                 = m32c_decode_sd23 (&st, m32c_get_dest23 (&st.insn[i]),
1678                                     size, dest_indirect);
1679               pv_t src_value = m32c_srcdest_fetch (&st, src, size);
1680
1681               if (m32c_is_arg_spill (&st, dest, src_value))
1682                 after_last_frame_related_insn = st.next_addr;
1683
1684               if (m32c_srcdest_store (&st, dest, src_value, size))
1685                 break;
1686             }
1687           /* (2) LDC #IMM24, sp */
1688           else if (st.insn[i] == 0xd5
1689                    && st.insn[i + 1] == 0x29)
1690             {
1691               st.next_addr += 2;
1692               st.sp = pv_constant (m32c_udisp24 (&st));
1693             }
1694           else
1695             /* We've hit some instruction we don't know how to simulate.
1696                Strictly speaking, we should set every value we're
1697                tracking to "unknown".  But we'll be optimistic, assume
1698                that we have enough information already, and stop
1699                analysis here.  */
1700             break;
1701         }
1702
1703       /* If this instruction changed the FB or decreased the SP (i.e.,
1704          allocated more stack space), then this may be a good place to
1705          declare the prologue finished.  However, there are some
1706          exceptions:
1707
1708          - If the instruction just changed the FB back to its original
1709            value, then that's probably a restore instruction.  The
1710            prologue should definitely end before that.
1711
1712          - If the instruction increased the value of the SP (that is,
1713            shrunk the frame), then it's probably part of a frame
1714            teardown sequence, and the prologue should end before
1715            that.  */
1716
1717       if (! pv_is_identical (st.fb, pre_insn_fb))
1718         {
1719           if (! pv_is_register_k (st.fb, tdep->fb->num, 0))
1720             after_last_frame_related_insn = st.next_addr;
1721         }
1722       else if (! pv_is_identical (st.sp, pre_insn_sp))
1723         {
1724           /* The comparison of the constants looks odd, there, because
1725              .k is unsigned.  All it really means is that the SP is
1726              lower than it was before the instruction.  */
1727           if (   pv_is_register (pre_insn_sp, tdep->sp->num)
1728               && pv_is_register (st.sp,       tdep->sp->num)
1729               && ((pre_insn_sp.k - st.sp.k) < (st.sp.k - pre_insn_sp.k)))
1730             after_last_frame_related_insn = st.next_addr;
1731         }
1732
1733       st.scan_pc = st.next_addr;
1734     }
1735
1736   /* Did we load a constant value into the stack pointer?  */
1737   if (pv_is_constant (st.sp))
1738     prologue->kind = prologue_first_frame;
1739
1740   /* Alternatively, did we initialize the frame pointer?  Remember
1741      that the CFA is the address after the return address.  */
1742   if (pv_is_register (st.fb, tdep->sp->num))
1743     {
1744       prologue->kind = prologue_with_frame_ptr;
1745       prologue->frame_ptr_offset = st.fb.k;
1746     }
1747
1748   /* Is the frame size a known constant?  Remember that frame_size is
1749      actually the offset from the CFA to the SP (i.e., a negative
1750      value).  */
1751   else if (pv_is_register (st.sp, tdep->sp->num))
1752     {
1753       prologue->kind = prologue_sans_frame_ptr;
1754       prologue->frame_size = st.sp.k;
1755     }
1756
1757   /* We haven't been able to make sense of this function's frame.  Treat
1758      it as the first frame.  */
1759   else
1760     prologue->kind = prologue_first_frame;
1761
1762   /* Record where all the registers were saved.  */
1763   pv_area_scan (st.stack, check_for_saved, (void *) prologue);
1764
1765   prologue->prologue_end = after_last_frame_related_insn;
1766
1767   do_cleanups (back_to);
1768 }
1769
1770
1771 static CORE_ADDR
1772 m32c_skip_prologue (CORE_ADDR ip)
1773 {
1774   char *name;
1775   CORE_ADDR func_addr, func_end, sal_end;
1776   struct m32c_prologue p;
1777
1778   /* Try to find the extent of the function that contains IP.  */
1779   if (! find_pc_partial_function (ip, &name, &func_addr, &func_end))
1780     return ip;
1781
1782   /* Find end by prologue analysis.  */
1783   m32c_analyze_prologue (current_gdbarch, ip, func_end, &p);
1784   /* Find end by line info.  */
1785   sal_end = skip_prologue_using_sal (ip);
1786   /* Return whichever is lower.  */
1787   if (sal_end != 0 && sal_end != ip && sal_end < p.prologue_end)
1788     return sal_end;
1789   else
1790     return p.prologue_end;
1791 }
1792
1793
1794 \f
1795 /* Stack unwinding.  */
1796
1797 static struct m32c_prologue *
1798 m32c_analyze_frame_prologue (struct frame_info *next_frame,
1799                              void **this_prologue_cache)
1800 {
1801   if (! *this_prologue_cache)
1802     {
1803       CORE_ADDR func_start = frame_func_unwind (next_frame);
1804       CORE_ADDR stop_addr = frame_pc_unwind (next_frame);
1805
1806       /* If we couldn't find any function containing the PC, then
1807          just initialize the prologue cache, but don't do anything.  */
1808       if (! func_start)
1809         stop_addr = func_start;
1810
1811       *this_prologue_cache = FRAME_OBSTACK_ZALLOC (struct m32c_prologue);
1812       m32c_analyze_prologue (get_frame_arch (next_frame),
1813                              func_start, stop_addr, *this_prologue_cache);
1814     }
1815
1816   return *this_prologue_cache;
1817 }
1818
1819
1820 static CORE_ADDR
1821 m32c_frame_base (struct frame_info *next_frame,
1822                 void **this_prologue_cache)
1823 {
1824   struct m32c_prologue *p
1825     = m32c_analyze_frame_prologue (next_frame, this_prologue_cache);
1826   struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (next_frame));
1827
1828   /* In functions that use alloca, the distance between the stack
1829      pointer and the frame base varies dynamically, so we can't use
1830      the SP plus static information like prologue analysis to find the
1831      frame base.  However, such functions must have a frame pointer,
1832      to be able to restore the SP on exit.  So whenever we do have a
1833      frame pointer, use that to find the base.  */
1834   switch (p->kind)
1835     {
1836     case prologue_with_frame_ptr:
1837       {
1838         CORE_ADDR fb
1839           = frame_unwind_register_unsigned (next_frame, tdep->fb->num);
1840         return fb - p->frame_ptr_offset;
1841       }
1842
1843     case prologue_sans_frame_ptr:
1844       {
1845         CORE_ADDR sp
1846           = frame_unwind_register_unsigned (next_frame, tdep->sp->num);
1847         return sp - p->frame_size;
1848       }
1849
1850     case prologue_first_frame:
1851       return 0;
1852
1853     default:
1854       gdb_assert (0);
1855     }
1856 }
1857
1858
1859 static void
1860 m32c_this_id (struct frame_info *next_frame,
1861               void **this_prologue_cache,
1862               struct frame_id *this_id)
1863 {
1864   CORE_ADDR base = m32c_frame_base (next_frame, this_prologue_cache);
1865
1866   if (base)
1867     *this_id = frame_id_build (base, frame_func_unwind (next_frame));
1868   /* Otherwise, leave it unset, and that will terminate the backtrace.  */
1869 }
1870
1871
1872 static void
1873 m32c_prev_register (struct frame_info *next_frame,
1874                     void **this_prologue_cache,
1875                     int regnum, int *optimizedp,
1876                     enum lval_type *lvalp, CORE_ADDR *addrp,
1877                     int *realnump, gdb_byte *bufferp)
1878 {
1879   struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (next_frame));
1880   struct m32c_prologue *p
1881     = m32c_analyze_frame_prologue (next_frame, this_prologue_cache);
1882   CORE_ADDR frame_base = m32c_frame_base (next_frame, this_prologue_cache);
1883   int reg_size = register_size (get_frame_arch (next_frame), regnum);
1884
1885   if (regnum == tdep->sp->num)
1886     {
1887       *optimizedp = 0;
1888       *lvalp = not_lval;
1889       *addrp = 0;
1890       *realnump = -1;
1891       if (bufferp)
1892         store_unsigned_integer (bufferp, reg_size, frame_base);
1893     }
1894
1895   /* If prologue analysis says we saved this register somewhere,
1896      return a description of the stack slot holding it.  */
1897   else if (p->reg_offset[regnum] != 1)
1898     {
1899       *optimizedp = 0;
1900       *lvalp = lval_memory;
1901       *addrp = frame_base + p->reg_offset[regnum];
1902       *realnump = -1;
1903       if (bufferp)
1904         get_frame_memory (next_frame, *addrp, bufferp, reg_size);
1905     }
1906
1907   /* Otherwise, presume we haven't changed the value of this
1908      register, and get it from the next frame.  */
1909   else
1910     frame_register_unwind (next_frame, regnum,
1911                            optimizedp, lvalp, addrp, realnump, bufferp);
1912 }
1913
1914
1915 static const struct frame_unwind m32c_unwind = {
1916   NORMAL_FRAME,
1917   m32c_this_id,
1918   m32c_prev_register
1919 };
1920
1921
1922 static const struct frame_unwind *
1923 m32c_frame_sniffer (struct frame_info *next_frame)
1924 {
1925   return &m32c_unwind;
1926 }
1927
1928
1929 static CORE_ADDR
1930 m32c_unwind_pc (struct gdbarch *arch, struct frame_info *next_frame)
1931 {
1932   struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
1933   return frame_unwind_register_unsigned (next_frame, tdep->pc->num);
1934 }
1935
1936
1937 static CORE_ADDR
1938 m32c_unwind_sp (struct gdbarch *arch, struct frame_info *next_frame)
1939 {
1940   struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
1941   return frame_unwind_register_unsigned (next_frame, tdep->sp->num);
1942 }
1943
1944 \f
1945 /* Inferior calls.  */
1946
1947 /* The calling conventions, according to GCC:
1948
1949    r8c, m16c
1950    ---------
1951    First arg may be passed in r1l or r1 if it (1) fits (QImode or
1952    HImode), (2) is named, and (3) is an integer or pointer type (no
1953    structs, floats, etc).  Otherwise, it's passed on the stack.
1954
1955    Second arg may be passed in r2, same restrictions (but not QImode),
1956    even if the first arg is passed on the stack.
1957
1958    Third and further args are passed on the stack.  No padding is
1959    used, stack "alignment" is 8 bits.
1960
1961    m32cm, m32c
1962    -----------
1963
1964    First arg may be passed in r0l or r0, same restrictions as above.
1965
1966    Second and further args are passed on the stack.  Padding is used
1967    after QImode parameters (i.e. lower-addressed byte is the value,
1968    higher-addressed byte is the padding), stack "alignment" is 16
1969    bits.  */
1970
1971
1972 /* Return true if TYPE is a type that can be passed in registers.  (We
1973    ignore the size, and pay attention only to the type code;
1974    acceptable sizes depends on which register is being considered to
1975    hold it.)  */
1976 static int
1977 m32c_reg_arg_type (struct type *type)
1978 {
1979   enum type_code code = TYPE_CODE (type);
1980
1981   return (code == TYPE_CODE_INT
1982           || code == TYPE_CODE_ENUM
1983           || code == TYPE_CODE_PTR
1984           || code == TYPE_CODE_REF
1985           || code == TYPE_CODE_BOOL
1986           || code == TYPE_CODE_CHAR);
1987 }
1988
1989
1990 static CORE_ADDR
1991 m32c_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
1992                       struct regcache *regcache, CORE_ADDR bp_addr, int nargs,
1993                       struct value **args, CORE_ADDR sp, int struct_return,
1994                       CORE_ADDR struct_addr)
1995 {
1996   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1997   unsigned long mach = gdbarch_bfd_arch_info (gdbarch)->mach;
1998   CORE_ADDR cfa;
1999   int i;
2000
2001   /* The number of arguments given in this function's prototype, or
2002      zero if it has a non-prototyped function type.  The m32c ABI
2003      passes arguments mentioned in the prototype differently from
2004      those in the ellipsis of a varargs function, or from those passed
2005      to a non-prototyped function.  */
2006   int num_prototyped_args = 0;
2007
2008   {
2009     struct type *func_type = value_type (function);
2010
2011     gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC ||
2012                 TYPE_CODE (func_type) == TYPE_CODE_METHOD);
2013
2014 #if 0
2015     /* The ABI description in gcc/config/m32c/m32c.abi says that
2016        we need to handle prototyped and non-prototyped functions
2017        separately, but the code in GCC doesn't actually do so.  */
2018     if (TYPE_PROTOTYPED (func_type))
2019 #endif
2020       num_prototyped_args = TYPE_NFIELDS (func_type);
2021   }
2022
2023   /* First, if the function returns an aggregate by value, push a
2024      pointer to a buffer for it.  This doesn't affect the way
2025      subsequent arguments are allocated to registers.  */
2026   if (struct_return)
2027     {
2028       int ptr_len = TYPE_LENGTH (tdep->ptr_voyd);
2029       sp -= ptr_len;
2030       write_memory_unsigned_integer (sp, ptr_len, struct_addr);
2031     }
2032
2033   /* Push the arguments.  */
2034   for (i = nargs - 1; i >= 0; i--)
2035     {
2036       struct value *arg = args[i];
2037       const gdb_byte *arg_bits = value_contents (arg);
2038       struct type *arg_type = value_type (arg);
2039       ULONGEST arg_size = TYPE_LENGTH (arg_type);
2040
2041       /* Can it go in r1 or r1l (for m16c) or r0 or r0l (for m32c)?  */
2042       if (i == 0
2043           && arg_size <= 2
2044           && i < num_prototyped_args
2045           && m32c_reg_arg_type (arg_type))
2046         {
2047           /* Extract and re-store as an integer as a terse way to make
2048              sure it ends up in the least significant end of r1.  (GDB
2049              should avoid assuming endianness, even on uni-endian
2050              processors.)  */
2051           ULONGEST u = extract_unsigned_integer (arg_bits, arg_size);
2052           struct m32c_reg *reg = (mach == bfd_mach_m16c) ? tdep->r1 : tdep->r0;
2053           regcache_cooked_write_unsigned (regcache, reg->num, u);
2054         }
2055
2056       /* Can it go in r2?  */
2057       else if (mach == bfd_mach_m16c
2058                && i == 1
2059                && arg_size == 2
2060                && i < num_prototyped_args
2061                && m32c_reg_arg_type (arg_type))
2062         regcache_cooked_write (regcache, tdep->r2->num, arg_bits);
2063
2064       /* Everything else goes on the stack.  */
2065       else
2066         {
2067           sp -= arg_size;
2068
2069           /* Align the stack.  */
2070           if (mach == bfd_mach_m32c)
2071             sp &= ~1;
2072
2073           write_memory (sp, arg_bits, arg_size);
2074         }
2075     }
2076
2077   /* This is the CFA we use to identify the dummy frame.  */
2078   cfa = sp;
2079
2080   /* Push the return address.  */
2081   sp -= tdep->ret_addr_bytes;
2082   write_memory_unsigned_integer (sp, tdep->ret_addr_bytes, bp_addr);
2083
2084   /* Update the stack pointer.  */
2085   regcache_cooked_write_unsigned (regcache, tdep->sp->num, sp);
2086
2087   /* We need to borrow an odd trick from the i386 target here.
2088
2089      The value we return from this function gets used as the stack
2090      address (the CFA) for the dummy frame's ID.  The obvious thing is
2091      to return the new TOS.  However, that points at the return
2092      address, saved on the stack, which is inconsistent with the CFA's
2093      described by GCC's DWARF 2 .debug_frame information: DWARF 2
2094      .debug_frame info uses the address immediately after the saved
2095      return address.  So you end up with a dummy frame whose CFA
2096      points at the return address, but the frame for the function
2097      being called has a CFA pointing after the return address: the
2098      younger CFA is *greater than* the older CFA.  The sanity checks
2099      in frame.c don't like that.
2100
2101      So we try to be consistent with the CFA's used by DWARF 2.
2102      Having a dummy frame and a real frame with the *same* CFA is
2103      tolerable.  */
2104   return cfa;
2105 }
2106
2107
2108 static struct frame_id
2109 m32c_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame)
2110 {
2111   /* This needs to return a frame ID whose PC is the return address
2112      passed to m32c_push_dummy_call, and whose stack_addr is the SP
2113      m32c_push_dummy_call returned.
2114
2115      m32c_unwind_sp gives us the CFA, which is the value the SP had
2116      before the return address was pushed.  */
2117   return frame_id_build (m32c_unwind_sp (gdbarch, next_frame),
2118                          frame_pc_unwind (next_frame));
2119 }
2120
2121
2122 \f
2123 /* Return values.  */
2124
2125 /* Return value conventions, according to GCC:
2126
2127    r8c, m16c
2128    ---------
2129
2130    QImode in r0l
2131    HImode in r0
2132    SImode in r2r0
2133    near pointer in r0
2134    far pointer in r2r0
2135
2136    Aggregate values (regardless of size) are returned by pushing a
2137    pointer to a temporary area on the stack after the args are pushed.
2138    The function fills in this area with the value.  Note that this
2139    pointer on the stack does not affect how register arguments, if any,
2140    are configured.
2141
2142    m32cm, m32c
2143    -----------
2144    Same.  */
2145
2146 /* Return non-zero if values of type TYPE are returned by storing them
2147    in a buffer whose address is passed on the stack, ahead of the
2148    other arguments.  */
2149 static int
2150 m32c_return_by_passed_buf (struct type *type)
2151 {
2152   enum type_code code = TYPE_CODE (type);
2153
2154   return (code == TYPE_CODE_STRUCT
2155           || code == TYPE_CODE_UNION);
2156 }
2157
2158 static enum return_value_convention
2159 m32c_return_value (struct gdbarch *gdbarch,
2160                    struct type *valtype,
2161                    struct regcache *regcache,
2162                    gdb_byte *readbuf,
2163                    const gdb_byte *writebuf)
2164 {
2165   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
2166   enum return_value_convention conv;
2167   ULONGEST valtype_len = TYPE_LENGTH (valtype);
2168
2169   if (m32c_return_by_passed_buf (valtype))
2170     conv = RETURN_VALUE_STRUCT_CONVENTION;
2171   else
2172     conv = RETURN_VALUE_REGISTER_CONVENTION;
2173
2174   if (readbuf)
2175     {
2176       /* We should never be called to find values being returned by
2177          RETURN_VALUE_STRUCT_CONVENTION.  Those can't be located,
2178          unless we made the call ourselves.  */
2179       gdb_assert (conv == RETURN_VALUE_REGISTER_CONVENTION);
2180
2181       gdb_assert (valtype_len <= 8);
2182
2183       /* Anything that fits in r0 is returned there.  */
2184       if (valtype_len <= TYPE_LENGTH (tdep->r0->type))
2185         {
2186           ULONGEST u;
2187           regcache_cooked_read_unsigned (regcache, tdep->r0->num, &u);
2188           store_unsigned_integer (readbuf, valtype_len, u);
2189         }
2190       else
2191         {
2192           /* Everything else is passed in mem0, using as many bytes as
2193              needed.  This is not what the Renesas tools do, but it's
2194              what GCC does at the moment.  */
2195           struct minimal_symbol *mem0
2196             = lookup_minimal_symbol ("mem0", NULL, NULL);
2197
2198           if (! mem0)
2199             error ("The return value is stored in memory at 'mem0', "
2200                    "but GDB cannot find\n"
2201                    "its address.");
2202           read_memory (SYMBOL_VALUE_ADDRESS (mem0), readbuf, valtype_len);
2203         }
2204     }
2205
2206   if (writebuf)
2207     {
2208       /* We should never be called to store values to be returned
2209          using RETURN_VALUE_STRUCT_CONVENTION.  We have no way of
2210          finding the buffer, unless we made the call ourselves.  */
2211       gdb_assert (conv == RETURN_VALUE_REGISTER_CONVENTION);
2212
2213       gdb_assert (valtype_len <= 8);
2214
2215       /* Anything that fits in r0 is returned there.  */
2216       if (valtype_len <= TYPE_LENGTH (tdep->r0->type))
2217         {
2218           ULONGEST u = extract_unsigned_integer (writebuf, valtype_len);
2219           regcache_cooked_write_unsigned (regcache, tdep->r0->num, u);
2220         }
2221       else
2222         {
2223           /* Everything else is passed in mem0, using as many bytes as
2224              needed.  This is not what the Renesas tools do, but it's
2225              what GCC does at the moment.  */
2226           struct minimal_symbol *mem0
2227             = lookup_minimal_symbol ("mem0", NULL, NULL);
2228
2229           if (! mem0)
2230             error ("The return value is stored in memory at 'mem0', "
2231                    "but GDB cannot find\n"
2232                    " its address.");
2233           write_memory (SYMBOL_VALUE_ADDRESS (mem0),
2234                         (char *) writebuf, valtype_len);
2235         }
2236     }
2237
2238   return conv;
2239 }
2240
2241
2242 \f
2243 /* Trampolines.  */
2244
2245 /* The m16c and m32c use a trampoline function for indirect function
2246    calls.  An indirect call looks like this:
2247
2248              ... push arguments ...
2249              ... push target function address ...
2250              jsr.a m32c_jsri16
2251
2252    The code for m32c_jsri16 looks like this:
2253
2254      m32c_jsri16:
2255
2256              # Save return address.
2257              pop.w      m32c_jsri_ret
2258              pop.b      m32c_jsri_ret+2
2259
2260              # Store target function address.
2261              pop.w      m32c_jsri_addr
2262
2263              # Re-push return address.
2264              push.b     m32c_jsri_ret+2
2265              push.w     m32c_jsri_ret
2266
2267              # Call the target function.
2268              jmpi.a     m32c_jsri_addr
2269
2270    Without further information, GDB will treat calls to m32c_jsri16
2271    like calls to any other function.  Since m32c_jsri16 doesn't have
2272    debugging information, that normally means that GDB sets a step-
2273    resume breakpoint and lets the program continue --- which is not
2274    what the user wanted.  (Giving the trampoline debugging info
2275    doesn't help: the user expects the program to stop in the function
2276    their program is calling, not in some trampoline code they've never
2277    seen before.)
2278
2279    The SKIP_TRAMPOLINE_CODE gdbarch method tells GDB how to step
2280    through such trampoline functions transparently to the user.  When
2281    given the address of a trampoline function's first instruction,
2282    SKIP_TRAMPOLINE_CODE should return the address of the first
2283    instruction of the function really being called.  If GDB decides it
2284    wants to step into that function, it will set a breakpoint there
2285    and silently continue to it.
2286
2287    We recognize the trampoline by name, and extract the target address
2288    directly from the stack.  This isn't great, but recognizing by its
2289    code sequence seems more fragile.  */
2290
2291 static CORE_ADDR
2292 m32c_skip_trampoline_code (CORE_ADDR stop_pc)
2293 {
2294   struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
2295
2296   /* It would be nicer to simply look up the addresses of known
2297      trampolines once, and then compare stop_pc with them.  However,
2298      we'd need to ensure that that cached address got invalidated when
2299      someone loaded a new executable, and I'm not quite sure of the
2300      best way to do that.  find_pc_partial_function does do some
2301      caching, so we'll see how this goes.  */
2302   char *name;
2303   CORE_ADDR start, end;
2304
2305   if (find_pc_partial_function (stop_pc, &name, &start, &end))
2306     {
2307       /* Are we stopped at the beginning of the trampoline function?  */
2308       if (strcmp (name, "m32c_jsri16") == 0
2309           && stop_pc == start)
2310         {
2311           /* Get the stack pointer.  The return address is at the top,
2312              and the target function's address is just below that.  We
2313              know it's a two-byte address, since the trampoline is
2314              m32c_jsri*16*.  */
2315           CORE_ADDR sp = get_frame_sp (get_current_frame ());
2316           CORE_ADDR target
2317             = read_memory_unsigned_integer (sp + tdep->ret_addr_bytes, 2);
2318
2319           /* What we have now is the address of a jump instruction.
2320              What we need is the destination of that jump.
2321              The opcode is 1 byte, and the destination is the next 3 bytes.
2322           */
2323           target = read_memory_unsigned_integer (target + 1, 3);
2324           return target;
2325         }
2326     }
2327
2328   return 0;
2329 }
2330
2331
2332 /* Address/pointer conversions.  */
2333
2334 /* On the m16c, there is a 24-bit address space, but only a very few
2335    instructions can generate addresses larger than 0xffff: jumps,
2336    jumps to subroutines, and the lde/std (load/store extended)
2337    instructions.
2338
2339    Since GCC can only support one size of pointer, we can't have
2340    distinct 'near' and 'far' pointer types; we have to pick one size
2341    for everything.  If we wanted to use 24-bit pointers, then GCC
2342    would have to use lde and ste for all memory references, which
2343    would be terrible for performance and code size.  So the GNU
2344    toolchain uses 16-bit pointers for everything, and gives up the
2345    ability to have pointers point outside the first 64k of memory.
2346
2347    However, as a special hack, we let the linker place functions at
2348    addresses above 0xffff, as long as it also places a trampoline in
2349    the low 64k for every function whose address is taken.  Each
2350    trampoline consists of a single jmp.a instruction that jumps to the
2351    function's real entry point.  Pointers to functions can be 16 bits
2352    long, even though the functions themselves are at higher addresses:
2353    the pointers refer to the trampolines, not the functions.
2354
2355    This complicates things for GDB, however: given the address of a
2356    function (from debug info or linker symbols, say) which could be
2357    anywhere in the 24-bit address space, how can we find an
2358    appropriate 16-bit value to use as a pointer to it?
2359
2360    If the linker has not generated a trampoline for the function,
2361    we're out of luck.  Well, I guess we could malloc some space and
2362    write a jmp.a instruction to it, but I'm not going to get into that
2363    at the moment.
2364
2365    If the linker has generated a trampoline for the function, then it
2366    also emitted a symbol for the trampoline: if the function's linker
2367    symbol is named NAME, then the function's trampoline's linker
2368    symbol is named NAME.plt.
2369
2370    So, given a code address:
2371    - We try to find a linker symbol at that address.
2372    - If we find such a symbol named NAME, we look for a linker symbol
2373      named NAME.plt.
2374    - If we find such a symbol, we assume it is a trampoline, and use
2375      its address as the pointer value.
2376
2377    And, given a function pointer:
2378    - We try to find a linker symbol at that address named NAME.plt.
2379    - If we find such a symbol, we look for a linker symbol named NAME.
2380    - If we find that, we provide that as the function's address.
2381    - If any of the above steps fail, we return the original address
2382      unchanged; it might really be a function in the low 64k.
2383
2384    See?  You *knew* there was a reason you wanted to be a computer
2385    programmer!  :)  */
2386
2387 static void
2388 m32c_m16c_address_to_pointer (struct type *type, gdb_byte *buf, CORE_ADDR addr)
2389 {
2390   gdb_assert (TYPE_CODE (type) == TYPE_CODE_PTR ||
2391               TYPE_CODE (type) == TYPE_CODE_REF);
2392
2393   enum type_code target_code = TYPE_CODE (TYPE_TARGET_TYPE (type));
2394
2395   if (target_code == TYPE_CODE_FUNC || target_code == TYPE_CODE_METHOD)
2396     {
2397       /* Try to find a linker symbol at this address.  */
2398       struct minimal_symbol *func_msym = lookup_minimal_symbol_by_pc (addr);
2399
2400       if (! func_msym)
2401         error ("Cannot convert code address %s to function pointer:\n"
2402                "couldn't find a symbol at that address, to find trampoline.",
2403                paddr_nz (addr));
2404
2405       char *func_name = SYMBOL_LINKAGE_NAME (func_msym);
2406       char *tramp_name = xmalloc (strlen (func_name) + 5);
2407       strcpy (tramp_name, func_name);
2408       strcat (tramp_name, ".plt");
2409
2410       /* Try to find a linker symbol for the trampoline.  */
2411       struct minimal_symbol *tramp_msym
2412         = lookup_minimal_symbol (tramp_name, NULL, NULL);
2413
2414       /* We've either got another copy of the name now, or don't need
2415          the name any more.  */
2416       xfree (tramp_name);
2417
2418       if (! tramp_msym)
2419         error ("Cannot convert code address %s to function pointer:\n"
2420                "couldn't find trampoline named '%s.plt'.",
2421                paddr_nz (addr), func_name);
2422
2423       /* The trampoline's address is our pointer.  */
2424       addr = SYMBOL_VALUE_ADDRESS (tramp_msym);
2425     }
2426
2427   store_unsigned_integer (buf, TYPE_LENGTH (type), addr);
2428 }
2429
2430
2431 static CORE_ADDR
2432 m32c_m16c_pointer_to_address (struct type *type, const gdb_byte *buf)
2433 {
2434   gdb_assert (TYPE_CODE (type) == TYPE_CODE_PTR ||
2435               TYPE_CODE (type) == TYPE_CODE_REF);
2436
2437   CORE_ADDR ptr = extract_unsigned_integer (buf, TYPE_LENGTH (type));
2438
2439   enum type_code target_code = TYPE_CODE (TYPE_TARGET_TYPE (type));
2440
2441   if (target_code == TYPE_CODE_FUNC || target_code == TYPE_CODE_METHOD)
2442     {
2443       /* See if there is a minimal symbol at that address whose name is
2444          "NAME.plt".  */
2445       struct minimal_symbol *ptr_msym = lookup_minimal_symbol_by_pc (ptr);
2446
2447       if (ptr_msym)
2448         {
2449           char *ptr_msym_name = SYMBOL_LINKAGE_NAME (ptr_msym);
2450           int len = strlen (ptr_msym_name);
2451
2452           if (len > 4
2453               && strcmp (ptr_msym_name + len - 4, ".plt") == 0)
2454             {
2455               /* We have a .plt symbol; try to find the symbol for the
2456                  corresponding function.
2457
2458                  Since the trampoline contains a jump instruction, we
2459                  could also just extract the jump's target address.  I
2460                  don't see much advantage one way or the other.  */
2461               char *func_name = xmalloc (len - 4 + 1);
2462               memcpy (func_name, ptr_msym_name, len - 4);
2463               func_name[len - 4] = '\0';
2464               struct minimal_symbol *func_msym
2465                 = lookup_minimal_symbol (func_name, NULL, NULL);
2466
2467               /* If we do have such a symbol, return its value as the
2468                  function's true address.  */
2469               if (func_msym)
2470                 ptr = SYMBOL_VALUE_ADDRESS (func_msym);
2471             }
2472         }
2473     }
2474
2475   return ptr;
2476 }
2477
2478
2479 \f
2480 /* Initialization.  */
2481
2482 static struct gdbarch *
2483 m32c_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
2484 {
2485   struct gdbarch *arch;
2486   struct gdbarch_tdep *tdep;
2487   unsigned long mach = info.bfd_arch_info->mach;
2488
2489   /* Find a candidate among the list of architectures we've created
2490      already.  */
2491   for (arches = gdbarch_list_lookup_by_info (arches, &info);
2492        arches != NULL;
2493        arches = gdbarch_list_lookup_by_info (arches->next, &info))
2494     return arches->gdbarch;
2495
2496   tdep = xcalloc (1, sizeof (*tdep));
2497   arch = gdbarch_alloc (&info, tdep);
2498
2499   /* Essential types.  */
2500   make_types (arch);
2501
2502   /* Address/pointer conversions.  */
2503   if (mach == bfd_mach_m16c)
2504     {
2505       set_gdbarch_address_to_pointer (arch, m32c_m16c_address_to_pointer);
2506       set_gdbarch_pointer_to_address (arch, m32c_m16c_pointer_to_address);
2507     }
2508
2509   /* Register set.  */
2510   make_regs (arch);
2511
2512   /* Disassembly.  */
2513   set_gdbarch_print_insn (arch, print_insn_m32c);
2514
2515   /* Breakpoints.  */
2516   set_gdbarch_breakpoint_from_pc (arch, m32c_breakpoint_from_pc);
2517
2518   /* Prologue analysis and unwinding.  */
2519   set_gdbarch_inner_than (arch, core_addr_lessthan);
2520   set_gdbarch_skip_prologue (arch, m32c_skip_prologue);
2521   set_gdbarch_unwind_pc (arch, m32c_unwind_pc);
2522   set_gdbarch_unwind_sp (arch, m32c_unwind_sp);
2523 #if 0
2524   /* I'm dropping the dwarf2 sniffer because it has a few problems.
2525      They may be in the dwarf2 cfi code in GDB, or they may be in
2526      the debug info emitted by the upstream toolchain.  I don't 
2527      know which, but I do know that the prologue analyzer works better.
2528      MVS 04/13/06
2529   */
2530   frame_unwind_append_sniffer (arch, dwarf2_frame_sniffer);
2531 #endif
2532   frame_unwind_append_sniffer (arch, m32c_frame_sniffer);
2533
2534   /* Inferior calls.  */
2535   set_gdbarch_push_dummy_call (arch, m32c_push_dummy_call);
2536   set_gdbarch_return_value (arch, m32c_return_value);
2537   set_gdbarch_unwind_dummy_id (arch, m32c_unwind_dummy_id);
2538
2539   /* Trampolines.  */
2540   set_gdbarch_skip_trampoline_code (arch, m32c_skip_trampoline_code);
2541
2542   return arch;
2543 }
2544
2545
2546 void
2547 _initialize_m32c_tdep (void)
2548 {
2549   register_gdbarch_init (bfd_arch_m32c, m32c_gdbarch_init);
2550
2551   m32c_dma_reggroup = reggroup_new ("dma", USER_REGGROUP);
2552 }