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