1 /* Renesas M32C target-dependent code for GDB, the GNU debugger.
2 
3    Copyright (C) 2004-2013 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 
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 
147 /* Types.  */
148 
149 static void
make_types(struct gdbarch * arch)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   xsnprintf (type_name, sizeof (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   xsnprintf (type_name, sizeof (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 
229 /* Register set.  */
230 
231 static const char *
m32c_register_name(struct gdbarch * gdbarch,int num)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 *
m32c_register_type(struct gdbarch * arch,int reg_nr)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
m32c_register_sim_regno(struct gdbarch * gdbarch,int reg_nr)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
m32c_debug_info_reg_to_regnum(struct gdbarch * gdbarch,int reg_nr)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
m32c_register_reggroup_p(struct gdbarch * gdbarch,int regnum,struct reggroup * group)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
m32c_raw_read(struct m32c_reg * reg,struct regcache * cache,void * buf)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
m32c_raw_write(struct m32c_reg * reg,struct regcache * cache,void * buf)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
m32c_read_flg(struct regcache * cache)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 *
m32c_banked_register(struct m32c_reg * reg,struct regcache * cache)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
m32c_banked_read(struct m32c_reg * reg,struct regcache * cache,void * buf)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
m32c_banked_write(struct m32c_reg * reg,struct regcache * cache,void * buf)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
m32c_sb_read(struct m32c_reg * reg,struct regcache * cache,void * buf)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
m32c_sb_write(struct m32c_reg * reg,struct regcache * cache,void * buf)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
m32c_find_part(struct m32c_reg * reg,int * offset_p,int * len_p)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
m32c_part_read(struct m32c_reg * reg,struct regcache * cache,void * buf)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
m32c_part_write(struct m32c_reg * reg,struct regcache * cache,void * buf)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
m32c_cat_read(struct m32c_reg * reg,struct regcache * cache,void * buf)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
m32c_cat_write(struct m32c_reg * reg,struct regcache * cache,void * buf)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
m32c_r3r2r1r0_read(struct m32c_reg * reg,struct regcache * cache,void * buf)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
m32c_r3r2r1r0_write(struct m32c_reg * reg,struct regcache * cache,void * buf)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
m32c_pseudo_register_read(struct gdbarch * arch,struct regcache * cache,int cookednum,gdb_byte * buf)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
m32c_pseudo_register_write(struct gdbarch * arch,struct regcache * cache,int cookednum,const gdb_byte * buf)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 *
add_reg(struct gdbarch * arch,const char * name,struct type * type,int sim_num,m32c_move_reg_t * read,m32c_move_reg_t * write,struct m32c_reg * rx,struct m32c_reg * ry,int n)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
set_dwarf_regnum(struct m32c_reg * reg,int num)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 *
mark_general(struct m32c_reg * 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 *
mark_dma(struct m32c_reg * 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 *
mark_system(struct m32c_reg * 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 *
mark_save_restore(struct m32c_reg * 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
make_regs(struct gdbarch * arch)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 
1005 /* Breakpoints.  */
1006 
1007 static const unsigned char *
m32c_breakpoint_from_pc(struct gdbarch * gdbarch,CORE_ADDR * pc,int * len)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 
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
m32c_pv_push(struct m32c_pv_state * state,pv_t value,int size)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
m32c_srcdest_fetch(struct m32c_pv_state * state,struct srcdest loc,int size)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
m32c_srcdest_store(struct m32c_pv_state * state,struct srcdest loc,pv_t value,int size)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
m32c_sign_ext(int v,int bits)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
m32c_next_byte(struct m32c_pv_state * st)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
m32c_udisp8(struct m32c_pv_state * st)1173 m32c_udisp8 (struct m32c_pv_state *st)
1174 {
1175   return m32c_next_byte (st);
1176 }
1177 
1178 
1179 static int
m32c_sdisp8(struct m32c_pv_state * st)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
m32c_udisp16(struct m32c_pv_state * st)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
m32c_sdisp16(struct m32c_pv_state * st)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
m32c_udisp24(struct m32c_pv_state * st)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
m32c_get_src23(unsigned char * i)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
m32c_get_dest23(unsigned char * i)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
m32c_decode_srcdest4(struct m32c_pv_state * st,int code,int size)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
m32c_decode_sd23(struct m32c_pv_state * st,int code,int size,int ind)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
m32c_pv_enter(struct m32c_pv_state * state,int size)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
m32c_pv_pushm_one(struct m32c_pv_state * state,pv_t reg,int bit,int src,int size)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
m32c_pv_pushm(struct m32c_pv_state * state,int src)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
m32c_is_1st_arg_reg(struct m32c_pv_state * state,pv_t value)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
m32c_is_arg_reg(struct m32c_pv_state * state,pv_t value)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
m32c_is_arg_spill(struct m32c_pv_state * st,struct srcdest loc,pv_t value)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
m32c_is_struct_return(struct m32c_pv_state * st,struct srcdest loc,pv_t value)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
m32c_pushm_is_reg_save(struct m32c_pv_state * st,int src)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
check_for_saved(void * prologue_untyped,pv_t addr,CORE_ADDR size,pv_t value)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
m32c_analyze_prologue(struct gdbarch * arch,CORE_ADDR start,CORE_ADDR limit,struct m32c_prologue * prologue)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
m32c_skip_prologue(struct gdbarch * gdbarch,CORE_ADDR ip)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 
1858 /* Stack unwinding.  */
1859 
1860 static struct m32c_prologue *
m32c_analyze_frame_prologue(struct frame_info * this_frame,void ** this_prologue_cache)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
m32c_frame_base(struct frame_info * this_frame,void ** this_prologue_cache)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
m32c_this_id(struct frame_info * this_frame,void ** this_prologue_cache,struct frame_id * this_id)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 *
m32c_prev_register(struct frame_info * this_frame,void ** this_prologue_cache,int regnum)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
m32c_unwind_pc(struct gdbarch * arch,struct frame_info * next_frame)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
m32c_unwind_sp(struct gdbarch * arch,struct frame_info * next_frame)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 
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
m32c_reg_arg_type(struct type * type)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
m32c_push_dummy_call(struct gdbarch * gdbarch,struct value * function,struct regcache * regcache,CORE_ADDR bp_addr,int nargs,struct value ** args,CORE_ADDR sp,int struct_return,CORE_ADDR struct_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
m32c_dummy_id(struct gdbarch * gdbarch,struct frame_info * this_frame)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 
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
m32c_return_by_passed_buf(struct type * type)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
m32c_return_value(struct gdbarch * gdbarch,struct value * function,struct type * valtype,struct regcache * regcache,gdb_byte * readbuf,const gdb_byte * writebuf)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 
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
m32c_skip_trampoline_code(struct frame_info * frame,CORE_ADDR stop_pc)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
m32c_m16c_address_to_pointer(struct gdbarch * gdbarch,struct type * type,gdb_byte * buf,CORE_ADDR addr)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
m32c_m16c_pointer_to_address(struct gdbarch * gdbarch,struct type * type,const gdb_byte * buf)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
m32c_virtual_frame_pointer(struct gdbarch * gdbarch,CORE_ADDR pc,int * frame_regnum,LONGEST * frame_offset)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 
2623 /* Initialization.  */
2624 
2625 static struct gdbarch *
m32c_gdbarch_init(struct gdbarch_info info,struct gdbarch_list * arches)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
_initialize_m32c_tdep(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 }
2709