1 /* Renesas M32C target-dependent code for GDB, the GNU debugger.
3 Copyright 2004, 2005 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
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.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. */
26 #if defined (HAVE_STRING_H)
30 #include "gdb_assert.h"
33 #include "gdb/sim-m32c.h"
37 #include "arch-utils.h"
39 #include "frame-unwind.h"
40 #include "dwarf2-frame.h"
41 #include "dwarf2expr.h"
45 #include "reggroups.h"
46 #include "prologue-value.h"
50 /* The m32c tdep structure. */
52 static struct reggroup *m32c_dma_reggroup;
56 /* The type of a function that moves the value of REG between CACHE or
57 BUF --- in either direction. */
58 typedef void (m32c_move_reg_t) (struct m32c_reg *reg,
59 struct regcache *cache,
64 /* The name of this register. */
70 /* The architecture this register belongs to. */
73 /* Its GDB register number. */
76 /* Its sim register number. */
79 /* Its DWARF register number, or -1 if it doesn't have one. */
82 /* Register group memberships. */
83 unsigned int general_p : 1;
84 unsigned int dma_p : 1;
85 unsigned int system_p : 1;
86 unsigned int save_restore_p : 1;
88 /* Functions to read its value from a regcache, and write its value
90 m32c_move_reg_t *read, *write;
92 /* Data for READ and WRITE functions. The exact meaning depends on
93 the specific functions selected; see the comments for those
95 struct m32c_reg *rx, *ry;
100 /* An overestimate of the number of raw and pseudoregisters we will
101 have. The exact answer depends on the variant of the architecture
102 at hand, but we can use this to declare statically allocated
103 arrays, and bump it up when needed. */
104 #define M32C_MAX_NUM_REGS (75)
106 /* The largest assigned DWARF register number. */
107 #define M32C_MAX_DWARF_REGNUM (40)
112 /* All the registers for this variant, indexed by GDB register
113 number, and the number of registers present. */
114 struct m32c_reg regs[M32C_MAX_NUM_REGS];
116 /* The number of valid registers. */
119 /* Interesting registers. These are pointers into REGS. */
120 struct m32c_reg *pc, *flg;
121 struct m32c_reg *r0, *r1, *r2, *r3, *a0, *a1;
122 struct m32c_reg *r2r0, *r3r2r1r0, *r3r1r2r0;
123 struct m32c_reg *sb, *fb, *sp;
125 /* A table indexed by DWARF register numbers, pointing into
127 struct m32c_reg *dwarf_regs[M32C_MAX_DWARF_REGNUM + 1];
129 /* Types for this architecture. We can't use the builtin_type_foo
130 types, because they're not initialized when building a gdbarch
132 struct type *voyd, *ptr_voyd, *func_voyd;
133 struct type *uint8, *uint16;
134 struct type *int8, *int16, *int32, *int64;
136 /* The types for data address and code address registers. */
137 struct type *data_addr_reg_type, *code_addr_reg_type;
139 /* The number of bytes a return address pushed by a 'jsr' instruction
140 occupies on the stack. */
143 /* The number of bytes an address register occupies on the stack
144 when saved by an 'enter' or 'pushm' instruction. */
152 make_types (struct gdbarch *arch)
154 struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
155 unsigned long mach = gdbarch_bfd_arch_info (arch)->mach;
156 int data_addr_reg_bits, code_addr_reg_bits;
160 /* This is used to clip CORE_ADDR values, so this value is
161 appropriate both on the m32c, where pointers are 32 bits long,
162 and on the m16c, where pointers are sixteen bits long, but there
163 may be code above the 64k boundary. */
164 set_gdbarch_addr_bit (arch, 24);
166 /* GCC uses 32 bits for addrs in the dwarf info, even though
167 only 16/24 bits are used. Setting addr_bit to 24 causes
168 errors in reading the dwarf addresses. */
169 set_gdbarch_addr_bit (arch, 32);
172 set_gdbarch_int_bit (arch, 16);
176 data_addr_reg_bits = 16;
177 code_addr_reg_bits = 24;
178 set_gdbarch_ptr_bit (arch, 16);
179 tdep->ret_addr_bytes = 3;
180 tdep->push_addr_bytes = 2;
184 data_addr_reg_bits = 24;
185 code_addr_reg_bits = 24;
186 set_gdbarch_ptr_bit (arch, 32);
187 tdep->ret_addr_bytes = 4;
188 tdep->push_addr_bytes = 4;
195 /* The builtin_type_mumble variables are sometimes uninitialized when
196 this is called, so we avoid using them. */
197 tdep->voyd = init_type (TYPE_CODE_VOID, 1, 0, "void", NULL);
198 tdep->ptr_voyd = init_type (TYPE_CODE_PTR, gdbarch_ptr_bit (arch) / 8,
199 TYPE_FLAG_UNSIGNED, NULL, NULL);
200 TYPE_TARGET_TYPE (tdep->ptr_voyd) = tdep->voyd;
201 tdep->func_voyd = lookup_function_type (tdep->voyd);
203 sprintf (type_name, "%s_data_addr_t",
204 gdbarch_bfd_arch_info (arch)->printable_name);
205 tdep->data_addr_reg_type
206 = init_type (TYPE_CODE_PTR, data_addr_reg_bits / 8,
207 TYPE_FLAG_UNSIGNED, xstrdup (type_name), NULL);
208 TYPE_TARGET_TYPE (tdep->data_addr_reg_type) = tdep->voyd;
210 sprintf (type_name, "%s_code_addr_t",
211 gdbarch_bfd_arch_info (arch)->printable_name);
212 tdep->code_addr_reg_type
213 = init_type (TYPE_CODE_PTR, code_addr_reg_bits / 8,
214 TYPE_FLAG_UNSIGNED, xstrdup (type_name), NULL);
215 TYPE_TARGET_TYPE (tdep->code_addr_reg_type) = tdep->func_voyd;
217 tdep->uint8 = init_type (TYPE_CODE_INT, 1, TYPE_FLAG_UNSIGNED,
219 tdep->uint16 = init_type (TYPE_CODE_INT, 2, TYPE_FLAG_UNSIGNED,
221 tdep->int8 = init_type (TYPE_CODE_INT, 1, 0, "int8_t", NULL);
222 tdep->int16 = init_type (TYPE_CODE_INT, 2, 0, "int16_t", NULL);
223 tdep->int32 = init_type (TYPE_CODE_INT, 4, 0, "int32_t", NULL);
224 tdep->int64 = init_type (TYPE_CODE_INT, 8, 0, "int64_t", NULL);
232 m32c_register_name (int num)
234 return gdbarch_tdep (current_gdbarch)->regs[num].name;
239 m32c_register_type (struct gdbarch *arch, int reg_nr)
241 return gdbarch_tdep (arch)->regs[reg_nr].type;
246 m32c_register_sim_regno (int reg_nr)
248 return gdbarch_tdep (current_gdbarch)->regs[reg_nr].sim_num;
253 m32c_debug_info_reg_to_regnum (int reg_nr)
255 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
256 if (0 <= reg_nr && reg_nr <= M32C_MAX_DWARF_REGNUM
257 && tdep->dwarf_regs[reg_nr])
258 return tdep->dwarf_regs[reg_nr]->num;
260 /* The DWARF CFI code expects to see -1 for invalid register
267 m32c_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
268 struct reggroup *group)
270 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
271 struct m32c_reg *reg = &tdep->regs[regnum];
273 /* The anonymous raw registers aren't in any groups. */
277 if (group == all_reggroup)
280 if (group == general_reggroup
284 if (group == m32c_dma_reggroup
288 if (group == system_reggroup
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)
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;
316 /* Copy the value of the raw register REG from CACHE to BUF. */
318 m32c_raw_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
320 regcache_raw_read (cache, reg->num, buf);
324 /* Copy the value of the raw register REG from BUF to CACHE. */
326 m32c_raw_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
328 regcache_raw_write (cache, reg->num, (const void *) buf);
332 /* Return the value of the 'flg' register in CACHE. */
334 m32c_read_flg (struct regcache *cache)
336 struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (cache));
338 regcache_raw_read_unsigned (cache, tdep->flg->num, &flg);
343 /* Move the value of a banked register from CACHE to BUF.
344 If the value of the 'flg' register in CACHE has any of the bits
345 masked in REG->n set, then read REG->ry. Otherwise, read
348 m32c_banked_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
350 struct m32c_reg *bank_reg
351 = ((m32c_read_flg (cache) & reg->n) ? reg->ry : reg->rx);
352 regcache_raw_read (cache, bank_reg->num, buf);
356 /* Move the value of a banked register from BUF to CACHE.
357 If the value of the 'flg' register in CACHE has any of the bits
358 masked in REG->n set, then write REG->ry. Otherwise, write
361 m32c_banked_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
363 struct m32c_reg *bank_reg
364 = ((m32c_read_flg (cache) & reg->n) ? reg->ry : reg->rx);
365 regcache_raw_write (cache, bank_reg->num, (const void *) buf);
369 /* Move the value of SB from CACHE to BUF. On bfd_mach_m32c, SB is a
370 banked register; on bfd_mach_m16c, it's not. */
372 m32c_sb_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
374 if (gdbarch_bfd_arch_info (reg->arch)->mach == bfd_mach_m16c)
375 m32c_raw_read (reg->rx, cache, buf);
377 m32c_banked_read (reg, cache, buf);
381 /* Move the value of SB from BUF to CACHE. On bfd_mach_m32c, SB is a
382 banked register; on bfd_mach_m16c, it's not. */
384 m32c_sb_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
386 if (gdbarch_bfd_arch_info (reg->arch)->mach == bfd_mach_m16c)
387 m32c_raw_write (reg->rx, cache, buf);
389 m32c_banked_write (reg, cache, buf);
393 /* Assuming REG uses m32c_part_read and m32c_part_write, set *OFFSET_P
394 and *LEN_P to the offset and length, in bytes, of the part REG
395 occupies in its underlying register. The offset is from the
396 lower-addressed end, regardless of the architecture's endianness.
397 (The M32C family is always little-endian, but let's keep those
398 assumptions out of here.) */
400 m32c_find_part (struct m32c_reg *reg, int *offset_p, int *len_p)
402 /* The length of the containing register, of which REG is one part. */
403 int containing_len = TYPE_LENGTH (reg->rx->type);
405 /* The length of one "element" in our imaginary array. */
406 int elt_len = TYPE_LENGTH (reg->type);
408 /* The offset of REG's "element" from the least significant end of
409 the containing register. */
410 int elt_offset = reg->n * elt_len;
412 /* If we extend off the end, trim the length of the element. */
413 if (elt_offset + elt_len > containing_len)
415 elt_len = containing_len - elt_offset;
416 /* We shouldn't be declaring partial registers that go off the
417 end of their containing registers. */
418 gdb_assert (elt_len > 0);
421 /* Flip the offset around if we're big-endian. */
422 if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
423 elt_offset = TYPE_LENGTH (reg->rx->type) - elt_offset - elt_len;
425 *offset_p = elt_offset;
430 /* Move the value of a partial register (r0h, intbl, etc.) from CACHE
431 to BUF. Treating the value of the register REG->rx as an array of
432 REG->type values, where higher indices refer to more significant
433 bits, read the value of the REG->n'th element. */
435 m32c_part_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
438 memset (buf, 0, TYPE_LENGTH (reg->type));
439 m32c_find_part (reg, &offset, &len);
440 regcache_cooked_read_part (cache, reg->rx->num, offset, len, buf);
444 /* Move the value of a banked register from BUF to CACHE.
445 Treating the value of the register REG->rx as an array of REG->type
446 values, where higher indices refer to more significant bits, write
447 the value of the REG->n'th element. */
449 m32c_part_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
452 m32c_find_part (reg, &offset, &len);
453 regcache_cooked_write_part (cache, reg->rx->num, offset, len, buf);
457 /* Move the value of REG from CACHE to BUF. REG's value is the
458 concatenation of the values of the registers REG->rx and REG->ry,
459 with REG->rx contributing the more significant bits. */
461 m32c_cat_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
463 int high_bytes = TYPE_LENGTH (reg->rx->type);
464 int low_bytes = TYPE_LENGTH (reg->ry->type);
465 /* For address arithmetic. */
466 unsigned char *cbuf = buf;
468 gdb_assert (TYPE_LENGTH (reg->type) == high_bytes + low_bytes);
470 if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
472 regcache_cooked_read (cache, reg->rx->num, cbuf);
473 regcache_cooked_read (cache, reg->ry->num, cbuf + high_bytes);
477 regcache_cooked_read (cache, reg->rx->num, cbuf + low_bytes);
478 regcache_cooked_read (cache, reg->ry->num, cbuf);
483 /* Move the value of REG from CACHE to BUF. REG's value is the
484 concatenation of the values of the registers REG->rx and REG->ry,
485 with REG->rx contributing the more significant bits. */
487 m32c_cat_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
489 int high_bytes = TYPE_LENGTH (reg->rx->type);
490 int low_bytes = TYPE_LENGTH (reg->ry->type);
491 /* For address arithmetic. */
492 unsigned char *cbuf = buf;
494 gdb_assert (TYPE_LENGTH (reg->type) == high_bytes + low_bytes);
496 if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
498 regcache_cooked_write (cache, reg->rx->num, cbuf);
499 regcache_cooked_write (cache, reg->ry->num, cbuf + high_bytes);
503 regcache_cooked_write (cache, reg->rx->num, cbuf + low_bytes);
504 regcache_cooked_write (cache, reg->ry->num, cbuf);
509 /* Copy the value of the raw register REG from CACHE to BUF. REG is
510 the concatenation (from most significant to least) of r3, r2, r1,
513 m32c_r3r2r1r0_read (struct m32c_reg *reg, struct regcache *cache, void *buf)
515 struct gdbarch_tdep *tdep = gdbarch_tdep (reg->arch);
516 int len = TYPE_LENGTH (tdep->r0->type);
518 /* For address arithmetic. */
519 unsigned char *cbuf = buf;
521 if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
523 regcache_cooked_read (cache, tdep->r0->num, cbuf + len * 3);
524 regcache_cooked_read (cache, tdep->r1->num, cbuf + len * 2);
525 regcache_cooked_read (cache, tdep->r2->num, cbuf + len * 1);
526 regcache_cooked_read (cache, tdep->r3->num, cbuf);
530 regcache_cooked_read (cache, tdep->r0->num, cbuf);
531 regcache_cooked_read (cache, tdep->r1->num, cbuf + len * 1);
532 regcache_cooked_read (cache, tdep->r2->num, cbuf + len * 2);
533 regcache_cooked_read (cache, tdep->r3->num, cbuf + len * 3);
538 /* Copy the value of the raw register REG from BUF to CACHE. REG is
539 the concatenation (from most significant to least) of r3, r2, r1,
542 m32c_r3r2r1r0_write (struct m32c_reg *reg, struct regcache *cache, void *buf)
544 struct gdbarch_tdep *tdep = gdbarch_tdep (reg->arch);
545 int len = TYPE_LENGTH (tdep->r0->type);
547 /* For address arithmetic. */
548 unsigned char *cbuf = buf;
550 if (gdbarch_byte_order (reg->arch) == BFD_ENDIAN_BIG)
552 regcache_cooked_write (cache, tdep->r0->num, cbuf + len * 3);
553 regcache_cooked_write (cache, tdep->r1->num, cbuf + len * 2);
554 regcache_cooked_write (cache, tdep->r2->num, cbuf + len * 1);
555 regcache_cooked_write (cache, tdep->r3->num, cbuf);
559 regcache_cooked_write (cache, tdep->r0->num, cbuf);
560 regcache_cooked_write (cache, tdep->r1->num, cbuf + len * 1);
561 regcache_cooked_write (cache, tdep->r2->num, cbuf + len * 2);
562 regcache_cooked_write (cache, tdep->r3->num, cbuf + len * 3);
568 m32c_pseudo_register_read (struct gdbarch *arch,
569 struct regcache *cache,
573 struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
574 struct m32c_reg *reg;
576 gdb_assert (0 <= cookednum && cookednum < tdep->num_regs);
577 gdb_assert (arch == get_regcache_arch (cache));
578 gdb_assert (arch == tdep->regs[cookednum].arch);
579 reg = &tdep->regs[cookednum];
581 reg->read (reg, cache, buf);
586 m32c_pseudo_register_write (struct gdbarch *arch,
587 struct regcache *cache,
591 struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
592 struct m32c_reg *reg;
594 gdb_assert (0 <= cookednum && cookednum < tdep->num_regs);
595 gdb_assert (arch == get_regcache_arch (cache));
596 gdb_assert (arch == tdep->regs[cookednum].arch);
597 reg = &tdep->regs[cookednum];
599 reg->write (reg, cache, (void *) buf);
603 /* Add a register with the given fields to the end of ARCH's table.
604 Return a pointer to the newly added register. */
605 static struct m32c_reg *
606 add_reg (struct gdbarch *arch,
610 m32c_move_reg_t *read,
611 m32c_move_reg_t *write,
616 struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
617 struct m32c_reg *r = &tdep->regs[tdep->num_regs];
619 gdb_assert (tdep->num_regs < M32C_MAX_NUM_REGS);
624 r->num = tdep->num_regs;
625 r->sim_num = sim_num;
630 r->save_restore_p = 0;
643 /* Record NUM as REG's DWARF register number. */
645 set_dwarf_regnum (struct m32c_reg *reg, int num)
647 gdb_assert (num < M32C_MAX_NUM_REGS);
649 /* Update the reg->DWARF mapping. Only count the first number
650 assigned to this register. */
651 if (reg->dwarf_num == -1)
652 reg->dwarf_num = num;
654 /* Update the DWARF->reg mapping. */
655 gdbarch_tdep (reg->arch)->dwarf_regs[num] = reg;
659 /* Mark REG as a general-purpose register, and return it. */
660 static struct m32c_reg *
661 mark_general (struct m32c_reg *reg)
668 /* Mark REG as a DMA register, and return it. */
669 static struct m32c_reg *
670 mark_dma (struct m32c_reg *reg)
677 /* Mark REG as a SYSTEM register, and return it. */
678 static struct m32c_reg *
679 mark_system (struct m32c_reg *reg)
686 /* Mark REG as a save-restore register, and return it. */
687 static struct m32c_reg *
688 mark_save_restore (struct m32c_reg *reg)
690 reg->save_restore_p = 1;
695 #define FLAGBIT_B 0x0010
696 #define FLAGBIT_U 0x0080
698 /* Handy macros for declaring registers. These all evaluate to
699 pointers to the register declared. Macros that define two
700 registers evaluate to a pointer to the first. */
702 /* A raw register named NAME, with type TYPE and sim number SIM_NUM. */
703 #define R(name, type, sim_num) \
704 (add_reg (arch, (name), (type), (sim_num), \
705 m32c_raw_read, m32c_raw_write, NULL, NULL, 0))
707 /* The simulator register number for a raw register named NAME. */
708 #define SIM(name) (m32c_sim_reg_ ## name)
710 /* A raw unsigned 16-bit data register named NAME.
711 NAME should be an identifier, not a string. */
713 (R(#name, tdep->uint16, SIM (name)))
715 /* A raw data address register named NAME.
716 NAME should be an identifier, not a string. */
718 (R(#name, tdep->data_addr_reg_type, SIM (name)))
720 /* A raw code address register named NAME. NAME should
721 be an identifier, not a string. */
723 (R(#name, tdep->code_addr_reg_type, SIM (name)))
725 /* A pair of raw registers named NAME0 and NAME1, with type TYPE.
726 NAME should be an identifier, not a string. */
727 #define RP(name, type) \
728 (R(#name "0", (type), SIM (name ## 0)), \
729 R(#name "1", (type), SIM (name ## 1)) - 1)
731 /* A raw banked general-purpose data register named NAME.
732 NAME should be an identifier, not a string. */
734 (R(NULL, tdep->int16, SIM (name ## _bank0)), \
735 R(NULL, tdep->int16, SIM (name ## _bank1)) - 1)
737 /* A raw banked data address register named NAME.
738 NAME should be an identifier, not a string. */
740 (R(NULL, tdep->data_addr_reg_type, SIM (name ## _bank0)), \
741 R(NULL, tdep->data_addr_reg_type, SIM (name ## _bank1)) - 1)
743 /* A cooked register named NAME referring to a raw banked register
744 from the bank selected by the current value of FLG. RAW_PAIR
745 should be a pointer to the first register in the banked pair.
746 NAME must be an identifier, not a string. */
747 #define CB(name, raw_pair) \
748 (add_reg (arch, #name, (raw_pair)->type, 0, \
749 m32c_banked_read, m32c_banked_write, \
750 (raw_pair), (raw_pair + 1), FLAGBIT_B))
752 /* A pair of registers named NAMEH and NAMEL, of type TYPE, that
753 access the top and bottom halves of the register pointed to by
754 NAME. NAME should be an identifier. */
755 #define CHL(name, type) \
756 (add_reg (arch, #name "h", (type), 0, \
757 m32c_part_read, m32c_part_write, name, NULL, 1), \
758 add_reg (arch, #name "l", (type), 0, \
759 m32c_part_read, m32c_part_write, name, NULL, 0) - 1)
761 /* A register constructed by concatenating the two registers HIGH and
762 LOW, whose name is HIGHLOW and whose type is TYPE. */
763 #define CCAT(high, low, type) \
764 (add_reg (arch, #high #low, (type), 0, \
765 m32c_cat_read, m32c_cat_write, (high), (low), 0))
767 /* Abbreviations for marking register group membership. */
768 #define G(reg) (mark_general (reg))
769 #define S(reg) (mark_system (reg))
770 #define DMA(reg) (mark_dma (reg))
773 /* Construct the register set for ARCH. */
775 make_regs (struct gdbarch *arch)
777 struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
778 int mach = gdbarch_bfd_arch_info (arch)->mach;
780 struct m32c_reg *raw_r0_pair = RBD (r0);
781 struct m32c_reg *raw_r1_pair = RBD (r1);
782 struct m32c_reg *raw_r2_pair = RBD (r2);
783 struct m32c_reg *raw_r3_pair = RBD (r3);
784 struct m32c_reg *raw_a0_pair = RBA (a0);
785 struct m32c_reg *raw_a1_pair = RBA (a1);
786 struct m32c_reg *raw_fb_pair = RBA (fb);
788 /* sb is banked on the bfd_mach_m32c, but not on bfd_mach_m16c.
789 We always declare both raw registers, and deal with the distinction
790 in the pseudoregister. */
791 struct m32c_reg *raw_sb_pair = RBA (sb);
793 struct m32c_reg *usp = S (RA (usp));
794 struct m32c_reg *isp = S (RA (isp));
795 struct m32c_reg *intb = S (RC (intb));
796 struct m32c_reg *pc = G (RC (pc));
797 struct m32c_reg *flg = G (R16U (flg));
799 if (mach == bfd_mach_m32c)
801 struct m32c_reg *svf = S (R16U (svf));
802 struct m32c_reg *svp = S (RC (svp));
803 struct m32c_reg *vct = S (RC (vct));
805 struct m32c_reg *dmd01 = DMA (RP (dmd, tdep->uint8));
806 struct m32c_reg *dct01 = DMA (RP (dct, tdep->uint16));
807 struct m32c_reg *drc01 = DMA (RP (drc, tdep->uint16));
808 struct m32c_reg *dma01 = DMA (RP (dma, tdep->data_addr_reg_type));
809 struct m32c_reg *dsa01 = DMA (RP (dsa, tdep->data_addr_reg_type));
810 struct m32c_reg *dra01 = DMA (RP (dra, tdep->data_addr_reg_type));
813 int num_raw_regs = tdep->num_regs;
815 struct m32c_reg *r0 = G (CB (r0, raw_r0_pair));
816 struct m32c_reg *r1 = G (CB (r1, raw_r1_pair));
817 struct m32c_reg *r2 = G (CB (r2, raw_r2_pair));
818 struct m32c_reg *r3 = G (CB (r3, raw_r3_pair));
819 struct m32c_reg *a0 = G (CB (a0, raw_a0_pair));
820 struct m32c_reg *a1 = G (CB (a1, raw_a1_pair));
821 struct m32c_reg *fb = G (CB (fb, raw_fb_pair));
823 /* sb is banked on the bfd_mach_m32c, but not on bfd_mach_m16c.
824 Specify custom read/write functions that do the right thing. */
826 = G (add_reg (arch, "sb", raw_sb_pair->type, 0,
827 m32c_sb_read, m32c_sb_write,
828 raw_sb_pair, raw_sb_pair + 1, 0));
830 /* The current sp is either usp or isp, depending on the value of
831 the FLG register's U bit. */
833 = G (add_reg (arch, "sp", usp->type, 0,
834 m32c_banked_read, m32c_banked_write, isp, usp, FLAGBIT_U));
836 struct m32c_reg *r0hl = CHL (r0, tdep->int8);
837 struct m32c_reg *r1hl = CHL (r1, tdep->int8);
838 struct m32c_reg *r2hl = CHL (r2, tdep->int8);
839 struct m32c_reg *r3hl = CHL (r3, tdep->int8);
840 struct m32c_reg *intbhl = CHL (intb, tdep->int16);
842 struct m32c_reg *r2r0 = CCAT (r2, r0, tdep->int32);
843 struct m32c_reg *r3r1 = CCAT (r3, r1, tdep->int32);
844 struct m32c_reg *r3r1r2r0 = CCAT (r3r1, r2r0, tdep->int64);
846 struct m32c_reg *r3r2r1r0
847 = add_reg (arch, "r3r2r1r0", tdep->int64, 0,
848 m32c_r3r2r1r0_read, m32c_r3r2r1r0_write, NULL, NULL, 0);
850 struct m32c_reg *a1a0;
851 if (mach == bfd_mach_m16c)
852 a1a0 = CCAT (a1, a0, tdep->int32);
856 int num_cooked_regs = tdep->num_regs - num_raw_regs;
865 tdep->r3r2r1r0 = r3r2r1r0;
866 tdep->r3r1r2r0 = r3r1r2r0;
873 /* Set up the DWARF register table. */
874 memset (tdep->dwarf_regs, 0, sizeof (tdep->dwarf_regs));
875 set_dwarf_regnum (r0hl + 1, 0x01);
876 set_dwarf_regnum (r0hl + 0, 0x02);
877 set_dwarf_regnum (r1hl + 1, 0x03);
878 set_dwarf_regnum (r1hl + 0, 0x04);
879 set_dwarf_regnum (r0, 0x05);
880 set_dwarf_regnum (r1, 0x06);
881 set_dwarf_regnum (r2, 0x07);
882 set_dwarf_regnum (r3, 0x08);
883 set_dwarf_regnum (a0, 0x09);
884 set_dwarf_regnum (a1, 0x0a);
885 set_dwarf_regnum (fb, 0x0b);
886 set_dwarf_regnum (sp, 0x0c);
887 set_dwarf_regnum (pc, 0x0d); /* GCC's invention */
888 set_dwarf_regnum (sb, 0x13);
889 set_dwarf_regnum (r2r0, 0x15);
890 set_dwarf_regnum (r3r1, 0x16);
892 set_dwarf_regnum (a1a0, 0x17);
894 /* Enumerate the save/restore register group.
896 The regcache_save and regcache_restore functions apply their read
897 function to each register in this group.
899 Since frame_pop supplies frame_unwind_register as its read
900 function, the registers meaningful to the Dwarf unwinder need to
903 On the other hand, when we make inferior calls, save_inferior_status
904 and restore_inferior_status use them to preserve the current register
905 values across the inferior call. For this, you'd kind of like to
906 preserve all the raw registers, to protect the interrupted code from
907 any sort of bank switching the callee might have done. But we handle
908 those cases so badly anyway --- for example, it matters whether we
909 restore FLG before or after we restore the general-purpose registers,
910 but there's no way to express that --- that it isn't worth worrying
913 We omit control registers like inthl: if you call a function that
914 changes those, it's probably because you wanted that change to be
915 visible to the interrupted code. */
916 mark_save_restore (r0);
917 mark_save_restore (r1);
918 mark_save_restore (r2);
919 mark_save_restore (r3);
920 mark_save_restore (a0);
921 mark_save_restore (a1);
922 mark_save_restore (sb);
923 mark_save_restore (fb);
924 mark_save_restore (sp);
925 mark_save_restore (pc);
926 mark_save_restore (flg);
928 set_gdbarch_num_regs (arch, num_raw_regs);
929 set_gdbarch_num_pseudo_regs (arch, num_cooked_regs);
930 set_gdbarch_pc_regnum (arch, pc->num);
931 set_gdbarch_sp_regnum (arch, sp->num);
932 set_gdbarch_register_name (arch, m32c_register_name);
933 set_gdbarch_register_type (arch, m32c_register_type);
934 set_gdbarch_pseudo_register_read (arch, m32c_pseudo_register_read);
935 set_gdbarch_pseudo_register_write (arch, m32c_pseudo_register_write);
936 set_gdbarch_register_sim_regno (arch, m32c_register_sim_regno);
937 set_gdbarch_stab_reg_to_regnum (arch, m32c_debug_info_reg_to_regnum);
938 set_gdbarch_dwarf_reg_to_regnum (arch, m32c_debug_info_reg_to_regnum);
939 set_gdbarch_dwarf2_reg_to_regnum (arch, m32c_debug_info_reg_to_regnum);
940 set_gdbarch_register_reggroup_p (arch, m32c_register_reggroup_p);
942 reggroup_add (arch, general_reggroup);
943 reggroup_add (arch, all_reggroup);
944 reggroup_add (arch, save_reggroup);
945 reggroup_add (arch, restore_reggroup);
946 reggroup_add (arch, system_reggroup);
947 reggroup_add (arch, m32c_dma_reggroup);
954 static const unsigned char *
955 m32c_breakpoint_from_pc (CORE_ADDR *pc, int *len)
957 static unsigned char break_insn[] = { 0x00 }; /* brk */
959 *len = sizeof (break_insn);
965 /* Prologue analysis. */
969 /* For consistency with the DWARF 2 .debug_frame info generated by
970 GCC, a frame's CFA is the address immediately after the saved
973 /* The architecture for which we generated this prologue info. */
974 struct gdbarch *arch;
977 /* This function uses a frame pointer. */
978 prologue_with_frame_ptr,
980 /* This function has no frame pointer. */
981 prologue_sans_frame_ptr,
983 /* This function sets up the stack, so its frame is the first
984 frame on the stack. */
989 /* If KIND is prologue_with_frame_ptr, this is the offset from the
990 CFA to where the frame pointer points. This is always zero or
992 LONGEST frame_ptr_offset;
994 /* If KIND is prologue_sans_frame_ptr, the offset from the CFA to
995 the stack pointer --- always zero or negative.
997 Calling this a "size" is a bit misleading, but given that the
998 stack grows downwards, using offsets for everything keeps one
999 from going completely sign-crazy: you never change anything's
1000 sign for an ADD instruction; always change the second operand's
1001 sign for a SUB instruction; and everything takes care of
1004 Functions that use alloca don't have a constant frame size. But
1005 they always have frame pointers, so we must use that to find the
1006 CFA (and perhaps to unwind the stack pointer). */
1009 /* The address of the first instruction at which the frame has been
1010 set up and the arguments are where the debug info says they are
1011 --- as best as we can tell. */
1012 CORE_ADDR prologue_end;
1014 /* reg_offset[R] is the offset from the CFA at which register R is
1015 saved, or 1 if register R has not been saved. (Real values are
1016 always zero or negative.) */
1017 LONGEST reg_offset[M32C_MAX_NUM_REGS];
1021 /* The longest I've seen, anyway. */
1022 #define M32C_MAX_INSN_LEN (9)
1024 /* Processor state, for the prologue analyzer. */
1025 struct m32c_pv_state
1027 struct gdbarch *arch;
1028 pv_t r0, r1, r2, r3;
1032 struct pv_area *stack;
1034 /* Bytes from the current PC, the address they were read from,
1035 and the address of the next unconsumed byte. */
1036 gdb_byte insn[M32C_MAX_INSN_LEN];
1037 CORE_ADDR scan_pc, next_addr;
1041 /* Push VALUE on STATE's stack, occupying SIZE bytes. Return zero if
1042 all went well, or non-zero if simulating the action would trash our
1045 m32c_pv_push (struct m32c_pv_state *state, pv_t value, int size)
1047 if (pv_area_store_would_trash (state->stack, state->sp))
1050 state->sp = pv_add_constant (state->sp, -size);
1051 pv_area_store (state->stack, state->sp, size, value);
1057 /* A source or destination location for an m16c or m32c
1061 /* If srcdest_reg, the location is a register pointed to by REG.
1062 If srcdest_partial_reg, the location is part of a register pointed
1063 to by REG. We don't try to handle this too well.
1064 If srcdest_mem, the location is memory whose address is ADDR. */
1065 enum { srcdest_reg, srcdest_partial_reg, srcdest_mem } kind;
1070 /* Return the SIZE-byte value at LOC in STATE. */
1072 m32c_srcdest_fetch (struct m32c_pv_state *state, struct srcdest loc, int size)
1074 if (loc.kind == srcdest_mem)
1075 return pv_area_fetch (state->stack, loc.addr, size);
1076 else if (loc.kind == srcdest_partial_reg)
1077 return pv_unknown ();
1083 /* Write VALUE, a SIZE-byte value, to LOC in STATE. Return zero if
1084 all went well, or non-zero if simulating the store would trash our
1087 m32c_srcdest_store (struct m32c_pv_state *state, struct srcdest loc,
1088 pv_t value, int size)
1090 if (loc.kind == srcdest_mem)
1092 if (pv_area_store_would_trash (state->stack, loc.addr))
1094 pv_area_store (state->stack, loc.addr, size, value);
1096 else if (loc.kind == srcdest_partial_reg)
1097 *loc.reg = pv_unknown ();
1106 m32c_sign_ext (int v, int bits)
1108 int mask = 1 << (bits - 1);
1109 return (v ^ mask) - mask;
1113 m32c_next_byte (struct m32c_pv_state *st)
1115 gdb_assert (st->next_addr - st->scan_pc < sizeof (st->insn));
1116 return st->insn[st->next_addr++ - st->scan_pc];
1120 m32c_udisp8 (struct m32c_pv_state *st)
1122 return m32c_next_byte (st);
1127 m32c_sdisp8 (struct m32c_pv_state *st)
1129 return m32c_sign_ext (m32c_next_byte (st), 8);
1134 m32c_udisp16 (struct m32c_pv_state *st)
1136 int low = m32c_next_byte (st);
1137 int high = m32c_next_byte (st);
1139 return low + (high << 8);
1144 m32c_sdisp16 (struct m32c_pv_state *st)
1146 int low = m32c_next_byte (st);
1147 int high = m32c_next_byte (st);
1149 return m32c_sign_ext (low + (high << 8), 16);
1154 m32c_udisp24 (struct m32c_pv_state *st)
1156 int low = m32c_next_byte (st);
1157 int mid = m32c_next_byte (st);
1158 int high = m32c_next_byte (st);
1160 return low + (mid << 8) + (high << 16);
1164 /* Extract the 'source' field from an m32c MOV.size:G-format instruction. */
1166 m32c_get_src23 (unsigned char *i)
1168 return (((i[0] & 0x70) >> 2)
1169 | ((i[1] & 0x30) >> 4));
1173 /* Extract the 'dest' field from an m32c MOV.size:G-format instruction. */
1175 m32c_get_dest23 (unsigned char *i)
1177 return (((i[0] & 0x0e) << 1)
1178 | ((i[1] & 0xc0) >> 6));
1182 static struct srcdest
1183 m32c_decode_srcdest4 (struct m32c_pv_state *st,
1189 sd.kind = (size == 2 ? srcdest_reg : srcdest_partial_reg);
1191 sd.kind = srcdest_mem;
1195 case 0x0: sd.reg = (size == 1 ? &st->r0 : &st->r0); break;
1196 case 0x1: sd.reg = (size == 1 ? &st->r0 : &st->r1); break;
1197 case 0x2: sd.reg = (size == 1 ? &st->r1 : &st->r2); break;
1198 case 0x3: sd.reg = (size == 1 ? &st->r1 : &st->r3); break;
1200 case 0x4: sd.reg = &st->a0; break;
1201 case 0x5: sd.reg = &st->a1; break;
1203 case 0x6: sd.addr = st->a0; break;
1204 case 0x7: sd.addr = st->a1; break;
1206 case 0x8: sd.addr = pv_add_constant (st->a0, m32c_udisp8 (st)); break;
1207 case 0x9: sd.addr = pv_add_constant (st->a1, m32c_udisp8 (st)); break;
1208 case 0xa: sd.addr = pv_add_constant (st->sb, m32c_udisp8 (st)); break;
1209 case 0xb: sd.addr = pv_add_constant (st->fb, m32c_sdisp8 (st)); break;
1211 case 0xc: sd.addr = pv_add_constant (st->a0, m32c_udisp16 (st)); break;
1212 case 0xd: sd.addr = pv_add_constant (st->a1, m32c_udisp16 (st)); break;
1213 case 0xe: sd.addr = pv_add_constant (st->sb, m32c_udisp16 (st)); break;
1214 case 0xf: sd.addr = pv_constant (m32c_udisp16 (st)); break;
1224 static struct srcdest
1225 m32c_decode_sd23 (struct m32c_pv_state *st, int code, int size, int ind)
1235 sd.kind = (size == 1) ? srcdest_partial_reg : srcdest_reg;
1240 sd.kind = (size == 4) ? srcdest_reg : srcdest_partial_reg;
1244 sd.kind = srcdest_mem;
1251 case 0x12: sd.reg = &st->r0; break;
1252 case 0x13: sd.reg = &st->r1; break;
1253 case 0x10: sd.reg = ((size == 1) ? &st->r0 : &st->r2); break;
1254 case 0x11: sd.reg = ((size == 1) ? &st->r1 : &st->r3); break;
1255 case 0x02: sd.reg = &st->a0; break;
1256 case 0x03: sd.reg = &st->a1; break;
1258 case 0x00: sd.addr = st->a0; break;
1259 case 0x01: sd.addr = st->a1; break;
1260 case 0x04: sd.addr = pv_add_constant (st->a0, m32c_udisp8 (st)); break;
1261 case 0x05: sd.addr = pv_add_constant (st->a1, m32c_udisp8 (st)); break;
1262 case 0x06: sd.addr = pv_add_constant (st->sb, m32c_udisp8 (st)); break;
1263 case 0x07: sd.addr = pv_add_constant (st->fb, m32c_sdisp8 (st)); break;
1264 case 0x08: sd.addr = pv_add_constant (st->a0, m32c_udisp16 (st)); break;
1265 case 0x09: sd.addr = pv_add_constant (st->a1, m32c_udisp16 (st)); break;
1266 case 0x0a: sd.addr = pv_add_constant (st->sb, m32c_udisp16 (st)); break;
1267 case 0x0b: sd.addr = pv_add_constant (st->fb, m32c_sdisp16 (st)); break;
1268 case 0x0c: sd.addr = pv_add_constant (st->a0, m32c_udisp24 (st)); break;
1269 case 0x0d: sd.addr = pv_add_constant (st->a1, m32c_udisp24 (st)); break;
1270 case 0x0f: sd.addr = pv_constant (m32c_udisp16 (st)); break;
1271 case 0x0e: sd.addr = pv_constant (m32c_udisp24 (st)); break;
1278 sd.addr = m32c_srcdest_fetch (st, sd, 4);
1279 sd.kind = srcdest_mem;
1286 /* The r16c and r32c machines have instructions with similar
1287 semantics, but completely different machine language encodings. So
1288 we break out the semantics into their own functions, and leave
1289 machine-specific decoding in m32c_analyze_prologue.
1291 The following functions all expect their arguments already decoded,
1292 and they all return zero if analysis should continue past this
1293 instruction, or non-zero if analysis should stop. */
1296 /* Simulate an 'enter SIZE' instruction in STATE. */
1298 m32c_pv_enter (struct m32c_pv_state *state, int size)
1300 struct gdbarch_tdep *tdep = gdbarch_tdep (state->arch);
1302 /* If simulating this store would require us to forget
1303 everything we know about the stack frame in the name of
1304 accuracy, it would be better to just quit now. */
1305 if (pv_area_store_would_trash (state->stack, state->sp))
1308 if (m32c_pv_push (state, state->fb, tdep->push_addr_bytes))
1310 state->fb = state->sp;
1311 state->sp = pv_add_constant (state->sp, -size);
1318 m32c_pv_pushm_one (struct m32c_pv_state *state, pv_t reg,
1319 int bit, int src, int size)
1323 if (m32c_pv_push (state, reg, size))
1331 /* Simulate a 'pushm SRC' instruction in STATE. */
1333 m32c_pv_pushm (struct m32c_pv_state *state, int src)
1335 struct gdbarch_tdep *tdep = gdbarch_tdep (state->arch);
1337 /* The bits in SRC indicating which registers to save are:
1338 r0 r1 r2 r3 a0 a1 sb fb */
1340 ( m32c_pv_pushm_one (state, state->fb, 0x01, src, tdep->push_addr_bytes)
1341 || m32c_pv_pushm_one (state, state->sb, 0x02, src, tdep->push_addr_bytes)
1342 || m32c_pv_pushm_one (state, state->a1, 0x04, src, tdep->push_addr_bytes)
1343 || m32c_pv_pushm_one (state, state->a0, 0x08, src, tdep->push_addr_bytes)
1344 || m32c_pv_pushm_one (state, state->r3, 0x10, src, 2)
1345 || m32c_pv_pushm_one (state, state->r2, 0x20, src, 2)
1346 || m32c_pv_pushm_one (state, state->r1, 0x40, src, 2)
1347 || m32c_pv_pushm_one (state, state->r0, 0x80, src, 2));
1350 /* Return non-zero if VALUE is the first incoming argument register. */
1353 m32c_is_1st_arg_reg (struct m32c_pv_state *state, pv_t value)
1355 struct gdbarch_tdep *tdep = gdbarch_tdep (state->arch);
1356 return (value.kind == pvk_register
1357 && (gdbarch_bfd_arch_info (state->arch)->mach == bfd_mach_m16c
1358 ? (value.reg == tdep->r1->num)
1359 : (value.reg == tdep->r0->num))
1363 /* Return non-zero if VALUE is an incoming argument register. */
1366 m32c_is_arg_reg (struct m32c_pv_state *state, pv_t value)
1368 struct gdbarch_tdep *tdep = gdbarch_tdep (state->arch);
1369 return (value.kind == pvk_register
1370 && (gdbarch_bfd_arch_info (state->arch)->mach == bfd_mach_m16c
1371 ? (value.reg == tdep->r1->num || value.reg == tdep->r2->num)
1372 : (value.reg == tdep->r0->num))
1376 /* Return non-zero if a store of VALUE to LOC is probably spilling an
1377 argument register to its stack slot in STATE. Such instructions
1378 should be included in the prologue, if possible.
1380 The store is a spill if:
1381 - the value being stored is the original value of an argument register;
1382 - the value has not already been stored somewhere in STACK; and
1383 - LOC is a stack slot (e.g., a memory location whose address is
1384 relative to the original value of the SP). */
1387 m32c_is_arg_spill (struct m32c_pv_state *st,
1391 struct gdbarch_tdep *tdep = gdbarch_tdep (st->arch);
1393 return (m32c_is_arg_reg (st, value)
1394 && loc.kind == srcdest_mem
1395 && pv_is_register (loc.addr, tdep->sp->num)
1396 && ! pv_area_find_reg (st->stack, st->arch, value.reg, 0));
1399 /* Return non-zero if a store of VALUE to LOC is probably
1400 copying the struct return address into an address register
1401 for immediate use. This is basically a "spill" into the
1402 address register, instead of onto the stack.
1404 The prerequisites are:
1405 - value being stored is original value of the FIRST arg register;
1406 - value has not already been stored on stack; and
1407 - LOC is an address register (a0 or a1). */
1410 m32c_is_struct_return (struct m32c_pv_state *st,
1414 struct gdbarch_tdep *tdep = gdbarch_tdep (st->arch);
1416 return (m32c_is_1st_arg_reg (st, value)
1417 && !pv_area_find_reg (st->stack, st->arch, value.reg, 0)
1418 && loc.kind == srcdest_reg
1419 && (pv_is_register (*loc.reg, tdep->a0->num)
1420 || pv_is_register (*loc.reg, tdep->a1->num)));
1423 /* Return non-zero if a 'pushm' saving the registers indicated by SRC
1424 was a register save:
1425 - all the named registers should have their original values, and
1426 - the stack pointer should be at a constant offset from the
1427 original stack pointer. */
1429 m32c_pushm_is_reg_save (struct m32c_pv_state *st, int src)
1431 struct gdbarch_tdep *tdep = gdbarch_tdep (st->arch);
1432 /* The bits in SRC indicating which registers to save are:
1433 r0 r1 r2 r3 a0 a1 sb fb */
1435 (pv_is_register (st->sp, tdep->sp->num)
1436 && (! (src & 0x01) || pv_is_register_k (st->fb, tdep->fb->num, 0))
1437 && (! (src & 0x02) || pv_is_register_k (st->sb, tdep->sb->num, 0))
1438 && (! (src & 0x04) || pv_is_register_k (st->a1, tdep->a1->num, 0))
1439 && (! (src & 0x08) || pv_is_register_k (st->a0, tdep->a0->num, 0))
1440 && (! (src & 0x10) || pv_is_register_k (st->r3, tdep->r3->num, 0))
1441 && (! (src & 0x20) || pv_is_register_k (st->r2, tdep->r2->num, 0))
1442 && (! (src & 0x40) || pv_is_register_k (st->r1, tdep->r1->num, 0))
1443 && (! (src & 0x80) || pv_is_register_k (st->r0, tdep->r0->num, 0)));
1447 /* Function for finding saved registers in a 'struct pv_area'; we pass
1448 this to pv_area_scan.
1450 If VALUE is a saved register, ADDR says it was saved at a constant
1451 offset from the frame base, and SIZE indicates that the whole
1452 register was saved, record its offset in RESULT_UNTYPED. */
1454 check_for_saved (void *prologue_untyped, pv_t addr, CORE_ADDR size, pv_t value)
1456 struct m32c_prologue *prologue = (struct m32c_prologue *) prologue_untyped;
1457 struct gdbarch *arch = prologue->arch;
1458 struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
1460 /* Is this the unchanged value of some register being saved on the
1462 if (value.kind == pvk_register
1464 && pv_is_register (addr, tdep->sp->num))
1466 /* Some registers require special handling: they're saved as a
1467 larger value than the register itself. */
1468 CORE_ADDR saved_size = register_size (arch, value.reg);
1470 if (value.reg == tdep->pc->num)
1471 saved_size = tdep->ret_addr_bytes;
1472 else if (gdbarch_register_type (arch, value.reg)
1473 == tdep->data_addr_reg_type)
1474 saved_size = tdep->push_addr_bytes;
1476 if (size == saved_size)
1478 /* Find which end of the saved value corresponds to our
1480 if (gdbarch_byte_order (arch) == BFD_ENDIAN_BIG)
1481 prologue->reg_offset[value.reg]
1482 = (addr.k + saved_size - register_size (arch, value.reg));
1484 prologue->reg_offset[value.reg] = addr.k;
1490 /* Analyze the function prologue for ARCH at START, going no further
1491 than LIMIT, and place a description of what we found in
1494 m32c_analyze_prologue (struct gdbarch *arch,
1495 CORE_ADDR start, CORE_ADDR limit,
1496 struct m32c_prologue *prologue)
1498 struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
1499 unsigned long mach = gdbarch_bfd_arch_info (arch)->mach;
1500 CORE_ADDR after_last_frame_related_insn;
1501 struct cleanup *back_to;
1502 struct m32c_pv_state st;
1505 st.r0 = pv_register (tdep->r0->num, 0);
1506 st.r1 = pv_register (tdep->r1->num, 0);
1507 st.r2 = pv_register (tdep->r2->num, 0);
1508 st.r3 = pv_register (tdep->r3->num, 0);
1509 st.a0 = pv_register (tdep->a0->num, 0);
1510 st.a1 = pv_register (tdep->a1->num, 0);
1511 st.sb = pv_register (tdep->sb->num, 0);
1512 st.fb = pv_register (tdep->fb->num, 0);
1513 st.sp = pv_register (tdep->sp->num, 0);
1514 st.pc = pv_register (tdep->pc->num, 0);
1515 st.stack = make_pv_area (tdep->sp->num);
1516 back_to = make_cleanup_free_pv_area (st.stack);
1518 /* Record that the call instruction has saved the return address on
1520 m32c_pv_push (&st, st.pc, tdep->ret_addr_bytes);
1522 memset (prologue, 0, sizeof (*prologue));
1523 prologue->arch = arch;
1526 for (i = 0; i < M32C_MAX_NUM_REGS; i++)
1527 prologue->reg_offset[i] = 1;
1530 st.scan_pc = after_last_frame_related_insn = start;
1532 while (st.scan_pc < limit)
1534 pv_t pre_insn_fb = st.fb;
1535 pv_t pre_insn_sp = st.sp;
1537 /* In theory we could get in trouble by trying to read ahead
1538 here, when we only know we're expecting one byte. In
1539 practice I doubt anyone will care, and it makes the rest of
1541 if (target_read_memory (st.scan_pc, st.insn, sizeof (st.insn)))
1542 /* If we can't fetch the instruction from memory, stop here
1543 and hope for the best. */
1545 st.next_addr = st.scan_pc;
1547 /* The assembly instructions are written as they appear in the
1548 section of the processor manuals that describe the
1549 instruction encodings.
1551 When a single assembly language instruction has several
1552 different machine-language encodings, the manual
1553 distinguishes them by a number in parens, before the
1554 mnemonic. Those numbers are included, as well.
1556 The srcdest decoding instructions have the same names as the
1557 analogous functions in the simulator. */
1558 if (mach == bfd_mach_m16c)
1560 /* (1) ENTER #imm8 */
1561 if (st.insn[0] == 0x7c && st.insn[1] == 0xf2)
1563 if (m32c_pv_enter (&st, st.insn[2]))
1568 else if (st.insn[0] == 0xec)
1570 int src = st.insn[1];
1571 if (m32c_pv_pushm (&st, src))
1575 if (m32c_pushm_is_reg_save (&st, src))
1576 after_last_frame_related_insn = st.next_addr;
1579 /* (6) MOV.size:G src, dest */
1580 else if ((st.insn[0] & 0xfe) == 0x72)
1582 int size = (st.insn[0] & 0x01) ? 2 : 1;
1587 = m32c_decode_srcdest4 (&st, (st.insn[1] >> 4) & 0xf, size);
1589 = m32c_decode_srcdest4 (&st, st.insn[1] & 0xf, size);
1590 pv_t src_value = m32c_srcdest_fetch (&st, src, size);
1592 if (m32c_is_arg_spill (&st, dest, src_value))
1593 after_last_frame_related_insn = st.next_addr;
1594 else if (m32c_is_struct_return (&st, dest, src_value))
1595 after_last_frame_related_insn = st.next_addr;
1597 if (m32c_srcdest_store (&st, dest, src_value, size))
1601 /* (1) LDC #IMM16, sp */
1602 else if (st.insn[0] == 0xeb
1603 && st.insn[1] == 0x50)
1606 st.sp = pv_constant (m32c_udisp16 (&st));
1610 /* We've hit some instruction we don't know how to simulate.
1611 Strictly speaking, we should set every value we're
1612 tracking to "unknown". But we'll be optimistic, assume
1613 that we have enough information already, and stop
1619 int src_indirect = 0;
1620 int dest_indirect = 0;
1623 gdb_assert (mach == bfd_mach_m32c);
1625 /* Check for prefix bytes indicating indirect addressing. */
1626 if (st.insn[0] == 0x41)
1631 else if (st.insn[0] == 0x09)
1636 else if (st.insn[0] == 0x49)
1638 src_indirect = dest_indirect = 1;
1642 /* (1) ENTER #imm8 */
1643 if (st.insn[i] == 0xec)
1645 if (m32c_pv_enter (&st, st.insn[i + 1]))
1651 else if (st.insn[i] == 0x8f)
1653 int src = st.insn[i + 1];
1654 if (m32c_pv_pushm (&st, src))
1658 if (m32c_pushm_is_reg_save (&st, src))
1659 after_last_frame_related_insn = st.next_addr;
1662 /* (7) MOV.size:G src, dest */
1663 else if ((st.insn[i] & 0x80) == 0x80
1664 && (st.insn[i + 1] & 0x0f) == 0x0b
1665 && m32c_get_src23 (&st.insn[i]) < 20
1666 && m32c_get_dest23 (&st.insn[i]) < 20)
1668 int bw = st.insn[i] & 0x01;
1669 int size = bw ? 2 : 1;
1674 = m32c_decode_sd23 (&st, m32c_get_src23 (&st.insn[i]),
1675 size, src_indirect);
1677 = m32c_decode_sd23 (&st, m32c_get_dest23 (&st.insn[i]),
1678 size, dest_indirect);
1679 pv_t src_value = m32c_srcdest_fetch (&st, src, size);
1681 if (m32c_is_arg_spill (&st, dest, src_value))
1682 after_last_frame_related_insn = st.next_addr;
1684 if (m32c_srcdest_store (&st, dest, src_value, size))
1687 /* (2) LDC #IMM24, sp */
1688 else if (st.insn[i] == 0xd5
1689 && st.insn[i + 1] == 0x29)
1692 st.sp = pv_constant (m32c_udisp24 (&st));
1695 /* We've hit some instruction we don't know how to simulate.
1696 Strictly speaking, we should set every value we're
1697 tracking to "unknown". But we'll be optimistic, assume
1698 that we have enough information already, and stop
1703 /* If this instruction changed the FB or decreased the SP (i.e.,
1704 allocated more stack space), then this may be a good place to
1705 declare the prologue finished. However, there are some
1708 - If the instruction just changed the FB back to its original
1709 value, then that's probably a restore instruction. The
1710 prologue should definitely end before that.
1712 - If the instruction increased the value of the SP (that is,
1713 shrunk the frame), then it's probably part of a frame
1714 teardown sequence, and the prologue should end before
1717 if (! pv_is_identical (st.fb, pre_insn_fb))
1719 if (! pv_is_register_k (st.fb, tdep->fb->num, 0))
1720 after_last_frame_related_insn = st.next_addr;
1722 else if (! pv_is_identical (st.sp, pre_insn_sp))
1724 /* The comparison of the constants looks odd, there, because
1725 .k is unsigned. All it really means is that the SP is
1726 lower than it was before the instruction. */
1727 if ( pv_is_register (pre_insn_sp, tdep->sp->num)
1728 && pv_is_register (st.sp, tdep->sp->num)
1729 && ((pre_insn_sp.k - st.sp.k) < (st.sp.k - pre_insn_sp.k)))
1730 after_last_frame_related_insn = st.next_addr;
1733 st.scan_pc = st.next_addr;
1736 /* Did we load a constant value into the stack pointer? */
1737 if (pv_is_constant (st.sp))
1738 prologue->kind = prologue_first_frame;
1740 /* Alternatively, did we initialize the frame pointer? Remember
1741 that the CFA is the address after the return address. */
1742 if (pv_is_register (st.fb, tdep->sp->num))
1744 prologue->kind = prologue_with_frame_ptr;
1745 prologue->frame_ptr_offset = st.fb.k;
1748 /* Is the frame size a known constant? Remember that frame_size is
1749 actually the offset from the CFA to the SP (i.e., a negative
1751 else if (pv_is_register (st.sp, tdep->sp->num))
1753 prologue->kind = prologue_sans_frame_ptr;
1754 prologue->frame_size = st.sp.k;
1757 /* We haven't been able to make sense of this function's frame. Treat
1758 it as the first frame. */
1760 prologue->kind = prologue_first_frame;
1762 /* Record where all the registers were saved. */
1763 pv_area_scan (st.stack, check_for_saved, (void *) prologue);
1765 prologue->prologue_end = after_last_frame_related_insn;
1767 do_cleanups (back_to);
1772 m32c_skip_prologue (CORE_ADDR ip)
1775 CORE_ADDR func_addr, func_end, sal_end;
1776 struct m32c_prologue p;
1778 /* Try to find the extent of the function that contains IP. */
1779 if (! find_pc_partial_function (ip, &name, &func_addr, &func_end))
1782 /* Find end by prologue analysis. */
1783 m32c_analyze_prologue (current_gdbarch, ip, func_end, &p);
1784 /* Find end by line info. */
1785 sal_end = skip_prologue_using_sal (ip);
1786 /* Return whichever is lower. */
1787 if (sal_end != 0 && sal_end != ip && sal_end < p.prologue_end)
1790 return p.prologue_end;
1795 /* Stack unwinding. */
1797 static struct m32c_prologue *
1798 m32c_analyze_frame_prologue (struct frame_info *next_frame,
1799 void **this_prologue_cache)
1801 if (! *this_prologue_cache)
1803 CORE_ADDR func_start = frame_func_unwind (next_frame);
1804 CORE_ADDR stop_addr = frame_pc_unwind (next_frame);
1806 /* If we couldn't find any function containing the PC, then
1807 just initialize the prologue cache, but don't do anything. */
1809 stop_addr = func_start;
1811 *this_prologue_cache = FRAME_OBSTACK_ZALLOC (struct m32c_prologue);
1812 m32c_analyze_prologue (get_frame_arch (next_frame),
1813 func_start, stop_addr, *this_prologue_cache);
1816 return *this_prologue_cache;
1821 m32c_frame_base (struct frame_info *next_frame,
1822 void **this_prologue_cache)
1824 struct m32c_prologue *p
1825 = m32c_analyze_frame_prologue (next_frame, this_prologue_cache);
1826 struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (next_frame));
1828 /* In functions that use alloca, the distance between the stack
1829 pointer and the frame base varies dynamically, so we can't use
1830 the SP plus static information like prologue analysis to find the
1831 frame base. However, such functions must have a frame pointer,
1832 to be able to restore the SP on exit. So whenever we do have a
1833 frame pointer, use that to find the base. */
1836 case prologue_with_frame_ptr:
1839 = frame_unwind_register_unsigned (next_frame, tdep->fb->num);
1840 return fb - p->frame_ptr_offset;
1843 case prologue_sans_frame_ptr:
1846 = frame_unwind_register_unsigned (next_frame, tdep->sp->num);
1847 return sp - p->frame_size;
1850 case prologue_first_frame:
1860 m32c_this_id (struct frame_info *next_frame,
1861 void **this_prologue_cache,
1862 struct frame_id *this_id)
1864 CORE_ADDR base = m32c_frame_base (next_frame, this_prologue_cache);
1867 *this_id = frame_id_build (base, frame_func_unwind (next_frame));
1868 /* Otherwise, leave it unset, and that will terminate the backtrace. */
1873 m32c_prev_register (struct frame_info *next_frame,
1874 void **this_prologue_cache,
1875 int regnum, int *optimizedp,
1876 enum lval_type *lvalp, CORE_ADDR *addrp,
1877 int *realnump, gdb_byte *bufferp)
1879 struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (next_frame));
1880 struct m32c_prologue *p
1881 = m32c_analyze_frame_prologue (next_frame, this_prologue_cache);
1882 CORE_ADDR frame_base = m32c_frame_base (next_frame, this_prologue_cache);
1883 int reg_size = register_size (get_frame_arch (next_frame), regnum);
1885 if (regnum == tdep->sp->num)
1892 store_unsigned_integer (bufferp, reg_size, frame_base);
1895 /* If prologue analysis says we saved this register somewhere,
1896 return a description of the stack slot holding it. */
1897 else if (p->reg_offset[regnum] != 1)
1900 *lvalp = lval_memory;
1901 *addrp = frame_base + p->reg_offset[regnum];
1904 get_frame_memory (next_frame, *addrp, bufferp, reg_size);
1907 /* Otherwise, presume we haven't changed the value of this
1908 register, and get it from the next frame. */
1910 frame_register_unwind (next_frame, regnum,
1911 optimizedp, lvalp, addrp, realnump, bufferp);
1915 static const struct frame_unwind m32c_unwind = {
1922 static const struct frame_unwind *
1923 m32c_frame_sniffer (struct frame_info *next_frame)
1925 return &m32c_unwind;
1930 m32c_unwind_pc (struct gdbarch *arch, struct frame_info *next_frame)
1932 struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
1933 return frame_unwind_register_unsigned (next_frame, tdep->pc->num);
1938 m32c_unwind_sp (struct gdbarch *arch, struct frame_info *next_frame)
1940 struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
1941 return frame_unwind_register_unsigned (next_frame, tdep->sp->num);
1945 /* Inferior calls. */
1947 /* The calling conventions, according to GCC:
1951 First arg may be passed in r1l or r1 if it (1) fits (QImode or
1952 HImode), (2) is named, and (3) is an integer or pointer type (no
1953 structs, floats, etc). Otherwise, it's passed on the stack.
1955 Second arg may be passed in r2, same restrictions (but not QImode),
1956 even if the first arg is passed on the stack.
1958 Third and further args are passed on the stack. No padding is
1959 used, stack "alignment" is 8 bits.
1964 First arg may be passed in r0l or r0, same restrictions as above.
1966 Second and further args are passed on the stack. Padding is used
1967 after QImode parameters (i.e. lower-addressed byte is the value,
1968 higher-addressed byte is the padding), stack "alignment" is 16
1972 /* Return true if TYPE is a type that can be passed in registers. (We
1973 ignore the size, and pay attention only to the type code;
1974 acceptable sizes depends on which register is being considered to
1977 m32c_reg_arg_type (struct type *type)
1979 enum type_code code = TYPE_CODE (type);
1981 return (code == TYPE_CODE_INT
1982 || code == TYPE_CODE_ENUM
1983 || code == TYPE_CODE_PTR
1984 || code == TYPE_CODE_REF
1985 || code == TYPE_CODE_BOOL
1986 || code == TYPE_CODE_CHAR);
1991 m32c_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
1992 struct regcache *regcache, CORE_ADDR bp_addr, int nargs,
1993 struct value **args, CORE_ADDR sp, int struct_return,
1994 CORE_ADDR struct_addr)
1996 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1997 unsigned long mach = gdbarch_bfd_arch_info (gdbarch)->mach;
2001 /* The number of arguments given in this function's prototype, or
2002 zero if it has a non-prototyped function type. The m32c ABI
2003 passes arguments mentioned in the prototype differently from
2004 those in the ellipsis of a varargs function, or from those passed
2005 to a non-prototyped function. */
2006 int num_prototyped_args = 0;
2009 struct type *func_type = value_type (function);
2011 gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC ||
2012 TYPE_CODE (func_type) == TYPE_CODE_METHOD);
2015 /* The ABI description in gcc/config/m32c/m32c.abi says that
2016 we need to handle prototyped and non-prototyped functions
2017 separately, but the code in GCC doesn't actually do so. */
2018 if (TYPE_PROTOTYPED (func_type))
2020 num_prototyped_args = TYPE_NFIELDS (func_type);
2023 /* First, if the function returns an aggregate by value, push a
2024 pointer to a buffer for it. This doesn't affect the way
2025 subsequent arguments are allocated to registers. */
2028 int ptr_len = TYPE_LENGTH (tdep->ptr_voyd);
2030 write_memory_unsigned_integer (sp, ptr_len, struct_addr);
2033 /* Push the arguments. */
2034 for (i = nargs - 1; i >= 0; i--)
2036 struct value *arg = args[i];
2037 const gdb_byte *arg_bits = value_contents (arg);
2038 struct type *arg_type = value_type (arg);
2039 ULONGEST arg_size = TYPE_LENGTH (arg_type);
2041 /* Can it go in r1 or r1l (for m16c) or r0 or r0l (for m32c)? */
2044 && i < num_prototyped_args
2045 && m32c_reg_arg_type (arg_type))
2047 /* Extract and re-store as an integer as a terse way to make
2048 sure it ends up in the least significant end of r1. (GDB
2049 should avoid assuming endianness, even on uni-endian
2051 ULONGEST u = extract_unsigned_integer (arg_bits, arg_size);
2052 struct m32c_reg *reg = (mach == bfd_mach_m16c) ? tdep->r1 : tdep->r0;
2053 regcache_cooked_write_unsigned (regcache, reg->num, u);
2056 /* Can it go in r2? */
2057 else if (mach == bfd_mach_m16c
2060 && i < num_prototyped_args
2061 && m32c_reg_arg_type (arg_type))
2062 regcache_cooked_write (regcache, tdep->r2->num, arg_bits);
2064 /* Everything else goes on the stack. */
2069 /* Align the stack. */
2070 if (mach == bfd_mach_m32c)
2073 write_memory (sp, arg_bits, arg_size);
2077 /* This is the CFA we use to identify the dummy frame. */
2080 /* Push the return address. */
2081 sp -= tdep->ret_addr_bytes;
2082 write_memory_unsigned_integer (sp, tdep->ret_addr_bytes, bp_addr);
2084 /* Update the stack pointer. */
2085 regcache_cooked_write_unsigned (regcache, tdep->sp->num, sp);
2087 /* We need to borrow an odd trick from the i386 target here.
2089 The value we return from this function gets used as the stack
2090 address (the CFA) for the dummy frame's ID. The obvious thing is
2091 to return the new TOS. However, that points at the return
2092 address, saved on the stack, which is inconsistent with the CFA's
2093 described by GCC's DWARF 2 .debug_frame information: DWARF 2
2094 .debug_frame info uses the address immediately after the saved
2095 return address. So you end up with a dummy frame whose CFA
2096 points at the return address, but the frame for the function
2097 being called has a CFA pointing after the return address: the
2098 younger CFA is *greater than* the older CFA. The sanity checks
2099 in frame.c don't like that.
2101 So we try to be consistent with the CFA's used by DWARF 2.
2102 Having a dummy frame and a real frame with the *same* CFA is
2108 static struct frame_id
2109 m32c_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame)
2111 /* This needs to return a frame ID whose PC is the return address
2112 passed to m32c_push_dummy_call, and whose stack_addr is the SP
2113 m32c_push_dummy_call returned.
2115 m32c_unwind_sp gives us the CFA, which is the value the SP had
2116 before the return address was pushed. */
2117 return frame_id_build (m32c_unwind_sp (gdbarch, next_frame),
2118 frame_pc_unwind (next_frame));
2123 /* Return values. */
2125 /* Return value conventions, according to GCC:
2136 Aggregate values (regardless of size) are returned by pushing a
2137 pointer to a temporary area on the stack after the args are pushed.
2138 The function fills in this area with the value. Note that this
2139 pointer on the stack does not affect how register arguments, if any,
2146 /* Return non-zero if values of type TYPE are returned by storing them
2147 in a buffer whose address is passed on the stack, ahead of the
2150 m32c_return_by_passed_buf (struct type *type)
2152 enum type_code code = TYPE_CODE (type);
2154 return (code == TYPE_CODE_STRUCT
2155 || code == TYPE_CODE_UNION);
2158 static enum return_value_convention
2159 m32c_return_value (struct gdbarch *gdbarch,
2160 struct type *valtype,
2161 struct regcache *regcache,
2163 const gdb_byte *writebuf)
2165 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
2166 enum return_value_convention conv;
2167 ULONGEST valtype_len = TYPE_LENGTH (valtype);
2169 if (m32c_return_by_passed_buf (valtype))
2170 conv = RETURN_VALUE_STRUCT_CONVENTION;
2172 conv = RETURN_VALUE_REGISTER_CONVENTION;
2176 /* We should never be called to find values being returned by
2177 RETURN_VALUE_STRUCT_CONVENTION. Those can't be located,
2178 unless we made the call ourselves. */
2179 gdb_assert (conv == RETURN_VALUE_REGISTER_CONVENTION);
2181 gdb_assert (valtype_len <= 8);
2183 /* Anything that fits in r0 is returned there. */
2184 if (valtype_len <= TYPE_LENGTH (tdep->r0->type))
2187 regcache_cooked_read_unsigned (regcache, tdep->r0->num, &u);
2188 store_unsigned_integer (readbuf, valtype_len, u);
2192 /* Everything else is passed in mem0, using as many bytes as
2193 needed. This is not what the Renesas tools do, but it's
2194 what GCC does at the moment. */
2195 struct minimal_symbol *mem0
2196 = lookup_minimal_symbol ("mem0", NULL, NULL);
2199 error ("The return value is stored in memory at 'mem0', "
2200 "but GDB cannot find\n"
2202 read_memory (SYMBOL_VALUE_ADDRESS (mem0), readbuf, valtype_len);
2208 /* We should never be called to store values to be returned
2209 using RETURN_VALUE_STRUCT_CONVENTION. We have no way of
2210 finding the buffer, unless we made the call ourselves. */
2211 gdb_assert (conv == RETURN_VALUE_REGISTER_CONVENTION);
2213 gdb_assert (valtype_len <= 8);
2215 /* Anything that fits in r0 is returned there. */
2216 if (valtype_len <= TYPE_LENGTH (tdep->r0->type))
2218 ULONGEST u = extract_unsigned_integer (writebuf, valtype_len);
2219 regcache_cooked_write_unsigned (regcache, tdep->r0->num, u);
2223 /* Everything else is passed in mem0, using as many bytes as
2224 needed. This is not what the Renesas tools do, but it's
2225 what GCC does at the moment. */
2226 struct minimal_symbol *mem0
2227 = lookup_minimal_symbol ("mem0", NULL, NULL);
2230 error ("The return value is stored in memory at 'mem0', "
2231 "but GDB cannot find\n"
2233 write_memory (SYMBOL_VALUE_ADDRESS (mem0),
2234 (char *) writebuf, valtype_len);
2245 /* The m16c and m32c use a trampoline function for indirect function
2246 calls. An indirect call looks like this:
2248 ... push arguments ...
2249 ... push target function address ...
2252 The code for m32c_jsri16 looks like this:
2256 # Save return address.
2258 pop.b m32c_jsri_ret+2
2260 # Store target function address.
2261 pop.w m32c_jsri_addr
2263 # Re-push return address.
2264 push.b m32c_jsri_ret+2
2265 push.w m32c_jsri_ret
2267 # Call the target function.
2268 jmpi.a m32c_jsri_addr
2270 Without further information, GDB will treat calls to m32c_jsri16
2271 like calls to any other function. Since m32c_jsri16 doesn't have
2272 debugging information, that normally means that GDB sets a step-
2273 resume breakpoint and lets the program continue --- which is not
2274 what the user wanted. (Giving the trampoline debugging info
2275 doesn't help: the user expects the program to stop in the function
2276 their program is calling, not in some trampoline code they've never
2279 The SKIP_TRAMPOLINE_CODE gdbarch method tells GDB how to step
2280 through such trampoline functions transparently to the user. When
2281 given the address of a trampoline function's first instruction,
2282 SKIP_TRAMPOLINE_CODE should return the address of the first
2283 instruction of the function really being called. If GDB decides it
2284 wants to step into that function, it will set a breakpoint there
2285 and silently continue to it.
2287 We recognize the trampoline by name, and extract the target address
2288 directly from the stack. This isn't great, but recognizing by its
2289 code sequence seems more fragile. */
2292 m32c_skip_trampoline_code (CORE_ADDR stop_pc)
2294 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
2296 /* It would be nicer to simply look up the addresses of known
2297 trampolines once, and then compare stop_pc with them. However,
2298 we'd need to ensure that that cached address got invalidated when
2299 someone loaded a new executable, and I'm not quite sure of the
2300 best way to do that. find_pc_partial_function does do some
2301 caching, so we'll see how this goes. */
2303 CORE_ADDR start, end;
2305 if (find_pc_partial_function (stop_pc, &name, &start, &end))
2307 /* Are we stopped at the beginning of the trampoline function? */
2308 if (strcmp (name, "m32c_jsri16") == 0
2309 && stop_pc == start)
2311 /* Get the stack pointer. The return address is at the top,
2312 and the target function's address is just below that. We
2313 know it's a two-byte address, since the trampoline is
2315 CORE_ADDR sp = get_frame_sp (get_current_frame ());
2317 = read_memory_unsigned_integer (sp + tdep->ret_addr_bytes, 2);
2319 /* What we have now is the address of a jump instruction.
2320 What we need is the destination of that jump.
2321 The opcode is 1 byte, and the destination is the next 3 bytes.
2323 target = read_memory_unsigned_integer (target + 1, 3);
2332 /* Address/pointer conversions. */
2334 /* On the m16c, there is a 24-bit address space, but only a very few
2335 instructions can generate addresses larger than 0xffff: jumps,
2336 jumps to subroutines, and the lde/std (load/store extended)
2339 Since GCC can only support one size of pointer, we can't have
2340 distinct 'near' and 'far' pointer types; we have to pick one size
2341 for everything. If we wanted to use 24-bit pointers, then GCC
2342 would have to use lde and ste for all memory references, which
2343 would be terrible for performance and code size. So the GNU
2344 toolchain uses 16-bit pointers for everything, and gives up the
2345 ability to have pointers point outside the first 64k of memory.
2347 However, as a special hack, we let the linker place functions at
2348 addresses above 0xffff, as long as it also places a trampoline in
2349 the low 64k for every function whose address is taken. Each
2350 trampoline consists of a single jmp.a instruction that jumps to the
2351 function's real entry point. Pointers to functions can be 16 bits
2352 long, even though the functions themselves are at higher addresses:
2353 the pointers refer to the trampolines, not the functions.
2355 This complicates things for GDB, however: given the address of a
2356 function (from debug info or linker symbols, say) which could be
2357 anywhere in the 24-bit address space, how can we find an
2358 appropriate 16-bit value to use as a pointer to it?
2360 If the linker has not generated a trampoline for the function,
2361 we're out of luck. Well, I guess we could malloc some space and
2362 write a jmp.a instruction to it, but I'm not going to get into that
2365 If the linker has generated a trampoline for the function, then it
2366 also emitted a symbol for the trampoline: if the function's linker
2367 symbol is named NAME, then the function's trampoline's linker
2368 symbol is named NAME.plt.
2370 So, given a code address:
2371 - We try to find a linker symbol at that address.
2372 - If we find such a symbol named NAME, we look for a linker symbol
2374 - If we find such a symbol, we assume it is a trampoline, and use
2375 its address as the pointer value.
2377 And, given a function pointer:
2378 - We try to find a linker symbol at that address named NAME.plt.
2379 - If we find such a symbol, we look for a linker symbol named NAME.
2380 - If we find that, we provide that as the function's address.
2381 - If any of the above steps fail, we return the original address
2382 unchanged; it might really be a function in the low 64k.
2384 See? You *knew* there was a reason you wanted to be a computer
2388 m32c_m16c_address_to_pointer (struct type *type, gdb_byte *buf, CORE_ADDR addr)
2390 gdb_assert (TYPE_CODE (type) == TYPE_CODE_PTR ||
2391 TYPE_CODE (type) == TYPE_CODE_REF);
2393 enum type_code target_code = TYPE_CODE (TYPE_TARGET_TYPE (type));
2395 if (target_code == TYPE_CODE_FUNC || target_code == TYPE_CODE_METHOD)
2397 /* Try to find a linker symbol at this address. */
2398 struct minimal_symbol *func_msym = lookup_minimal_symbol_by_pc (addr);
2401 error ("Cannot convert code address %s to function pointer:\n"
2402 "couldn't find a symbol at that address, to find trampoline.",
2405 char *func_name = SYMBOL_LINKAGE_NAME (func_msym);
2406 char *tramp_name = xmalloc (strlen (func_name) + 5);
2407 strcpy (tramp_name, func_name);
2408 strcat (tramp_name, ".plt");
2410 /* Try to find a linker symbol for the trampoline. */
2411 struct minimal_symbol *tramp_msym
2412 = lookup_minimal_symbol (tramp_name, NULL, NULL);
2414 /* We've either got another copy of the name now, or don't need
2415 the name any more. */
2419 error ("Cannot convert code address %s to function pointer:\n"
2420 "couldn't find trampoline named '%s.plt'.",
2421 paddr_nz (addr), func_name);
2423 /* The trampoline's address is our pointer. */
2424 addr = SYMBOL_VALUE_ADDRESS (tramp_msym);
2427 store_unsigned_integer (buf, TYPE_LENGTH (type), addr);
2432 m32c_m16c_pointer_to_address (struct type *type, const gdb_byte *buf)
2434 gdb_assert (TYPE_CODE (type) == TYPE_CODE_PTR ||
2435 TYPE_CODE (type) == TYPE_CODE_REF);
2437 CORE_ADDR ptr = extract_unsigned_integer (buf, TYPE_LENGTH (type));
2439 enum type_code target_code = TYPE_CODE (TYPE_TARGET_TYPE (type));
2441 if (target_code == TYPE_CODE_FUNC || target_code == TYPE_CODE_METHOD)
2443 /* See if there is a minimal symbol at that address whose name is
2445 struct minimal_symbol *ptr_msym = lookup_minimal_symbol_by_pc (ptr);
2449 char *ptr_msym_name = SYMBOL_LINKAGE_NAME (ptr_msym);
2450 int len = strlen (ptr_msym_name);
2453 && strcmp (ptr_msym_name + len - 4, ".plt") == 0)
2455 /* We have a .plt symbol; try to find the symbol for the
2456 corresponding function.
2458 Since the trampoline contains a jump instruction, we
2459 could also just extract the jump's target address. I
2460 don't see much advantage one way or the other. */
2461 char *func_name = xmalloc (len - 4 + 1);
2462 memcpy (func_name, ptr_msym_name, len - 4);
2463 func_name[len - 4] = '\0';
2464 struct minimal_symbol *func_msym
2465 = lookup_minimal_symbol (func_name, NULL, NULL);
2467 /* If we do have such a symbol, return its value as the
2468 function's true address. */
2470 ptr = SYMBOL_VALUE_ADDRESS (func_msym);
2480 /* Initialization. */
2482 static struct gdbarch *
2483 m32c_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
2485 struct gdbarch *arch;
2486 struct gdbarch_tdep *tdep;
2487 unsigned long mach = info.bfd_arch_info->mach;
2489 /* Find a candidate among the list of architectures we've created
2491 for (arches = gdbarch_list_lookup_by_info (arches, &info);
2493 arches = gdbarch_list_lookup_by_info (arches->next, &info))
2494 return arches->gdbarch;
2496 tdep = xcalloc (1, sizeof (*tdep));
2497 arch = gdbarch_alloc (&info, tdep);
2499 /* Essential types. */
2502 /* Address/pointer conversions. */
2503 if (mach == bfd_mach_m16c)
2505 set_gdbarch_address_to_pointer (arch, m32c_m16c_address_to_pointer);
2506 set_gdbarch_pointer_to_address (arch, m32c_m16c_pointer_to_address);
2513 set_gdbarch_print_insn (arch, print_insn_m32c);
2516 set_gdbarch_breakpoint_from_pc (arch, m32c_breakpoint_from_pc);
2518 /* Prologue analysis and unwinding. */
2519 set_gdbarch_inner_than (arch, core_addr_lessthan);
2520 set_gdbarch_skip_prologue (arch, m32c_skip_prologue);
2521 set_gdbarch_unwind_pc (arch, m32c_unwind_pc);
2522 set_gdbarch_unwind_sp (arch, m32c_unwind_sp);
2524 /* I'm dropping the dwarf2 sniffer because it has a few problems.
2525 They may be in the dwarf2 cfi code in GDB, or they may be in
2526 the debug info emitted by the upstream toolchain. I don't
2527 know which, but I do know that the prologue analyzer works better.
2530 frame_unwind_append_sniffer (arch, dwarf2_frame_sniffer);
2532 frame_unwind_append_sniffer (arch, m32c_frame_sniffer);
2534 /* Inferior calls. */
2535 set_gdbarch_push_dummy_call (arch, m32c_push_dummy_call);
2536 set_gdbarch_return_value (arch, m32c_return_value);
2537 set_gdbarch_unwind_dummy_id (arch, m32c_unwind_dummy_id);
2540 set_gdbarch_skip_trampoline_code (arch, m32c_skip_trampoline_code);
2547 _initialize_m32c_tdep (void)
2549 register_gdbarch_init (bfd_arch_m32c, m32c_gdbarch_init);
2551 m32c_dma_reggroup = reggroup_new ("dma", USER_REGGROUP);