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