1 /* Target-dependent code for the Matsushita MN10300 for GDB, the GNU debugger.
3 Copyright (C) 1996-2017 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 3 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, see <http://www.gnu.org/licenses/>. */
21 #include "arch-utils.h"
25 #include "gdbcore.h" /* For write_memory_unsigned_integer. */
28 #include "frame-unwind.h"
29 #include "frame-base.h"
31 #include "dwarf2-frame.h"
34 #include "prologue-value.h"
37 #include "mn10300-tdep.h"
40 /* The am33-2 has 64 registers. */
41 #define MN10300_MAX_NUM_REGS 64
43 /* Big enough to hold the size of the largest register in bytes. */
44 #define MN10300_MAX_REGISTER_SIZE 64
46 /* This structure holds the results of a prologue analysis. */
47 struct mn10300_prologue
49 /* The architecture for which we generated this prologue info. */
50 struct gdbarch *gdbarch;
52 /* The offset from the frame base to the stack pointer --- always
55 Calling this a "size" is a bit misleading, but given that the
56 stack grows downwards, using offsets for everything keeps one
57 from going completely sign-crazy: you never change anything's
58 sign for an ADD instruction; always change the second operand's
59 sign for a SUB instruction; and everything takes care of
63 /* Non-zero if this function has initialized the frame pointer from
64 the stack pointer, zero otherwise. */
67 /* If has_frame_ptr is non-zero, this is the offset from the frame
68 base to where the frame pointer points. This is always zero or
72 /* The address of the first instruction at which the frame has been
73 set up and the arguments are where the debug info says they are
74 --- as best as we can tell. */
75 CORE_ADDR prologue_end;
77 /* reg_offset[R] is the offset from the CFA at which register R is
78 saved, or 1 if register R has not been saved. (Real values are
79 always zero or negative.) */
80 int reg_offset[MN10300_MAX_NUM_REGS];
84 /* Compute the alignment required by a type. */
87 mn10300_type_align (struct type *type)
91 switch (TYPE_CODE (type))
102 case TYPE_CODE_RVALUE_REF:
103 return TYPE_LENGTH (type);
105 case TYPE_CODE_COMPLEX:
106 return TYPE_LENGTH (type) / 2;
108 case TYPE_CODE_STRUCT:
109 case TYPE_CODE_UNION:
110 for (i = 0; i < TYPE_NFIELDS (type); i++)
112 int falign = mn10300_type_align (TYPE_FIELD_TYPE (type, i));
113 while (align < falign)
118 case TYPE_CODE_ARRAY:
119 /* HACK! Structures containing arrays, even small ones, are not
120 elligible for returning in registers. */
123 case TYPE_CODE_TYPEDEF:
124 return mn10300_type_align (check_typedef (type));
127 internal_error (__FILE__, __LINE__, _("bad switch"));
131 /* Should call_function allocate stack space for a struct return? */
133 mn10300_use_struct_convention (struct type *type)
135 /* Structures bigger than a pair of words can't be returned in
137 if (TYPE_LENGTH (type) > 8)
140 switch (TYPE_CODE (type))
142 case TYPE_CODE_STRUCT:
143 case TYPE_CODE_UNION:
144 /* Structures with a single field are handled as the field
146 if (TYPE_NFIELDS (type) == 1)
147 return mn10300_use_struct_convention (TYPE_FIELD_TYPE (type, 0));
149 /* Structures with word or double-word size are passed in memory, as
150 long as they require at least word alignment. */
151 if (mn10300_type_align (type) >= 4)
156 /* Arrays are addressable, so they're never returned in
157 registers. This condition can only hold when the array is
158 the only field of a struct or union. */
159 case TYPE_CODE_ARRAY:
162 case TYPE_CODE_TYPEDEF:
163 return mn10300_use_struct_convention (check_typedef (type));
171 mn10300_store_return_value (struct gdbarch *gdbarch, struct type *type,
172 struct regcache *regcache, const gdb_byte *valbuf)
174 int len = TYPE_LENGTH (type);
177 if (TYPE_CODE (type) == TYPE_CODE_PTR)
182 regsz = register_size (gdbarch, reg);
185 regcache_raw_write_part (regcache, reg, 0, len, valbuf);
186 else if (len <= 2 * regsz)
188 regcache_raw_write (regcache, reg, valbuf);
189 gdb_assert (regsz == register_size (gdbarch, reg + 1));
190 regcache_raw_write_part (regcache, reg+1, 0,
191 len - regsz, valbuf + regsz);
194 internal_error (__FILE__, __LINE__,
195 _("Cannot store return value %d bytes long."), len);
199 mn10300_extract_return_value (struct gdbarch *gdbarch, struct type *type,
200 struct regcache *regcache, void *valbuf)
202 gdb_byte buf[MN10300_MAX_REGISTER_SIZE];
203 int len = TYPE_LENGTH (type);
206 if (TYPE_CODE (type) == TYPE_CODE_PTR)
211 regsz = register_size (gdbarch, reg);
212 gdb_assert (regsz <= MN10300_MAX_REGISTER_SIZE);
215 regcache_raw_read (regcache, reg, buf);
216 memcpy (valbuf, buf, len);
218 else if (len <= 2 * regsz)
220 regcache_raw_read (regcache, reg, buf);
221 memcpy (valbuf, buf, regsz);
222 gdb_assert (regsz == register_size (gdbarch, reg + 1));
223 regcache_raw_read (regcache, reg + 1, buf);
224 memcpy ((char *) valbuf + regsz, buf, len - regsz);
227 internal_error (__FILE__, __LINE__,
228 _("Cannot extract return value %d bytes long."), len);
231 /* Determine, for architecture GDBARCH, how a return value of TYPE
232 should be returned. If it is supposed to be returned in registers,
233 and READBUF is non-zero, read the appropriate value from REGCACHE,
234 and copy it into READBUF. If WRITEBUF is non-zero, write the value
235 from WRITEBUF into REGCACHE. */
237 static enum return_value_convention
238 mn10300_return_value (struct gdbarch *gdbarch, struct value *function,
239 struct type *type, struct regcache *regcache,
240 gdb_byte *readbuf, const gdb_byte *writebuf)
242 if (mn10300_use_struct_convention (type))
243 return RETURN_VALUE_STRUCT_CONVENTION;
246 mn10300_extract_return_value (gdbarch, type, regcache, readbuf);
248 mn10300_store_return_value (gdbarch, type, regcache, writebuf);
250 return RETURN_VALUE_REGISTER_CONVENTION;
254 register_name (int reg, const char **regs, long sizeof_regs)
256 if (reg < 0 || reg >= sizeof_regs / sizeof (regs[0]))
263 mn10300_generic_register_name (struct gdbarch *gdbarch, int reg)
265 static const char *regs[] =
266 { "d0", "d1", "d2", "d3", "a0", "a1", "a2", "a3",
267 "sp", "pc", "mdr", "psw", "lir", "lar", "", "",
268 "", "", "", "", "", "", "", "",
269 "", "", "", "", "", "", "", "fp"
271 return register_name (reg, regs, sizeof regs);
276 am33_register_name (struct gdbarch *gdbarch, int reg)
278 static const char *regs[] =
279 { "d0", "d1", "d2", "d3", "a0", "a1", "a2", "a3",
280 "sp", "pc", "mdr", "psw", "lir", "lar", "",
281 "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
282 "ssp", "msp", "usp", "mcrh", "mcrl", "mcvf", "", "", ""
284 return register_name (reg, regs, sizeof regs);
288 am33_2_register_name (struct gdbarch *gdbarch, int reg)
290 static const char *regs[] =
292 "d0", "d1", "d2", "d3", "a0", "a1", "a2", "a3",
293 "sp", "pc", "mdr", "psw", "lir", "lar", "mdrq", "r0",
294 "r1", "r2", "r3", "r4", "r5", "r6", "r7", "ssp",
295 "msp", "usp", "mcrh", "mcrl", "mcvf", "fpcr", "", "",
296 "fs0", "fs1", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7",
297 "fs8", "fs9", "fs10", "fs11", "fs12", "fs13", "fs14", "fs15",
298 "fs16", "fs17", "fs18", "fs19", "fs20", "fs21", "fs22", "fs23",
299 "fs24", "fs25", "fs26", "fs27", "fs28", "fs29", "fs30", "fs31"
301 return register_name (reg, regs, sizeof regs);
305 mn10300_register_type (struct gdbarch *gdbarch, int reg)
307 return builtin_type (gdbarch)->builtin_int;
311 mn10300_read_pc (struct regcache *regcache)
314 regcache_cooked_read_unsigned (regcache, E_PC_REGNUM, &val);
319 mn10300_write_pc (struct regcache *regcache, CORE_ADDR val)
321 regcache_cooked_write_unsigned (regcache, E_PC_REGNUM, val);
324 /* The breakpoint instruction must be the same size as the smallest
325 instruction in the instruction set.
327 The Matsushita mn10x00 processors have single byte instructions
328 so we need a single byte breakpoint. Matsushita hasn't defined
329 one, so we defined it ourselves. */
330 constexpr gdb_byte mn10300_break_insn[] = {0xff};
332 typedef BP_MANIPULATION (mn10300_break_insn) mn10300_breakpoint;
334 /* Model the semantics of pushing a register onto the stack. This
335 is a helper function for mn10300_analyze_prologue, below. */
337 push_reg (pv_t *regs, struct pv_area *stack, int regnum)
339 regs[E_SP_REGNUM] = pv_add_constant (regs[E_SP_REGNUM], -4);
340 stack->store (regs[E_SP_REGNUM], 4, regs[regnum]);
343 /* Translate an "r" register number extracted from an instruction encoding
344 into a GDB register number. Adapted from a simulator function
345 of the same name; see am33.igen. */
347 translate_rreg (int rreg)
349 /* The higher register numbers actually correspond to the
350 basic machine's address and data registers. */
351 if (rreg > 7 && rreg < 12)
352 return E_A0_REGNUM + rreg - 8;
353 else if (rreg > 11 && rreg < 16)
354 return E_D0_REGNUM + rreg - 12;
356 return E_E0_REGNUM + rreg;
359 /* Find saved registers in a 'struct pv_area'; we pass this to pv_area::scan.
361 If VALUE is a saved register, ADDR says it was saved at a constant
362 offset from the frame base, and SIZE indicates that the whole
363 register was saved, record its offset in RESULT_UNTYPED. */
365 check_for_saved (void *result_untyped, pv_t addr, CORE_ADDR size, pv_t value)
367 struct mn10300_prologue *result = (struct mn10300_prologue *) result_untyped;
369 if (value.kind == pvk_register
371 && pv_is_register (addr, E_SP_REGNUM)
372 && size == register_size (result->gdbarch, value.reg))
373 result->reg_offset[value.reg] = addr.k;
376 /* Analyze the prologue to determine where registers are saved,
377 the end of the prologue, etc. The result of this analysis is
378 returned in RESULT. See struct mn10300_prologue above for more
381 mn10300_analyze_prologue (struct gdbarch *gdbarch,
382 CORE_ADDR start_pc, CORE_ADDR limit_pc,
383 struct mn10300_prologue *result)
385 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
388 pv_t regs[MN10300_MAX_NUM_REGS];
389 CORE_ADDR after_last_frame_setup_insn = start_pc;
390 int am33_mode = AM33_MODE (gdbarch);
392 memset (result, 0, sizeof (*result));
393 result->gdbarch = gdbarch;
395 for (rn = 0; rn < MN10300_MAX_NUM_REGS; rn++)
397 regs[rn] = pv_register (rn, 0);
398 result->reg_offset[rn] = 1;
400 pv_area stack (E_SP_REGNUM, gdbarch_addr_bit (gdbarch));
402 /* The typical call instruction will have saved the return address on the
403 stack. Space for the return address has already been preallocated in
404 the caller's frame. It's possible, such as when using -mrelax with gcc
405 that other registers were saved as well. If this happens, we really
406 have no chance of deciphering the frame. DWARF info can save the day
407 when this happens. */
408 stack.store (regs[E_SP_REGNUM], 4, regs[E_PC_REGNUM]);
411 while (pc < limit_pc)
416 /* Instructions can be as small as one byte; however, we usually
417 need at least two bytes to do the decoding, so fetch that many
419 status = target_read_memory (pc, instr, 2);
423 /* movm [regs], sp */
424 if (instr[0] == 0xcf)
428 save_mask = instr[1];
430 if ((save_mask & movm_exreg0_bit) && am33_mode)
432 push_reg (regs, &stack, E_E2_REGNUM);
433 push_reg (regs, &stack, E_E3_REGNUM);
435 if ((save_mask & movm_exreg1_bit) && am33_mode)
437 push_reg (regs, &stack, E_E4_REGNUM);
438 push_reg (regs, &stack, E_E5_REGNUM);
439 push_reg (regs, &stack, E_E6_REGNUM);
440 push_reg (regs, &stack, E_E7_REGNUM);
442 if ((save_mask & movm_exother_bit) && am33_mode)
444 push_reg (regs, &stack, E_E0_REGNUM);
445 push_reg (regs, &stack, E_E1_REGNUM);
446 push_reg (regs, &stack, E_MDRQ_REGNUM);
447 push_reg (regs, &stack, E_MCRH_REGNUM);
448 push_reg (regs, &stack, E_MCRL_REGNUM);
449 push_reg (regs, &stack, E_MCVF_REGNUM);
451 if (save_mask & movm_d2_bit)
452 push_reg (regs, &stack, E_D2_REGNUM);
453 if (save_mask & movm_d3_bit)
454 push_reg (regs, &stack, E_D3_REGNUM);
455 if (save_mask & movm_a2_bit)
456 push_reg (regs, &stack, E_A2_REGNUM);
457 if (save_mask & movm_a3_bit)
458 push_reg (regs, &stack, E_A3_REGNUM);
459 if (save_mask & movm_other_bit)
461 push_reg (regs, &stack, E_D0_REGNUM);
462 push_reg (regs, &stack, E_D1_REGNUM);
463 push_reg (regs, &stack, E_A0_REGNUM);
464 push_reg (regs, &stack, E_A1_REGNUM);
465 push_reg (regs, &stack, E_MDR_REGNUM);
466 push_reg (regs, &stack, E_LIR_REGNUM);
467 push_reg (regs, &stack, E_LAR_REGNUM);
468 /* The `other' bit leaves a blank area of four bytes at
469 the beginning of its block of saved registers, making
470 it 32 bytes long in total. */
471 regs[E_SP_REGNUM] = pv_add_constant (regs[E_SP_REGNUM], -4);
475 after_last_frame_setup_insn = pc;
478 else if ((instr[0] & 0xfc) == 0x3c)
480 int aN = instr[0] & 0x03;
482 regs[E_A0_REGNUM + aN] = regs[E_SP_REGNUM];
486 after_last_frame_setup_insn = pc;
489 else if ((instr[0] & 0xf0) == 0x90
490 && (instr[0] & 0x03) != ((instr[0] & 0x0c) >> 2))
492 int aN = instr[0] & 0x03;
493 int aM = (instr[0] & 0x0c) >> 2;
495 regs[E_A0_REGNUM + aN] = regs[E_A0_REGNUM + aM];
500 else if ((instr[0] & 0xf0) == 0x80
501 && (instr[0] & 0x03) != ((instr[0] & 0x0c) >> 2))
503 int dN = instr[0] & 0x03;
504 int dM = (instr[0] & 0x0c) >> 2;
506 regs[E_D0_REGNUM + dN] = regs[E_D0_REGNUM + dM];
511 else if (instr[0] == 0xf1 && (instr[1] & 0xf0) == 0xd0)
513 int dN = instr[1] & 0x03;
514 int aM = (instr[1] & 0x0c) >> 2;
516 regs[E_D0_REGNUM + dN] = regs[E_A0_REGNUM + aM];
521 else if (instr[0] == 0xf1 && (instr[1] & 0xf0) == 0xe0)
523 int aN = instr[1] & 0x03;
524 int dM = (instr[1] & 0x0c) >> 2;
526 regs[E_A0_REGNUM + aN] = regs[E_D0_REGNUM + dM];
531 else if (instr[0] == 0xf8 && instr[1] == 0xfe)
537 status = target_read_memory (pc + 2, buf, 1);
541 imm8 = extract_signed_integer (buf, 1, byte_order);
542 regs[E_SP_REGNUM] = pv_add_constant (regs[E_SP_REGNUM], imm8);
545 /* Stack pointer adjustments are frame related. */
546 after_last_frame_setup_insn = pc;
549 else if (instr[0] == 0xfa && instr[1] == 0xfe)
554 status = target_read_memory (pc + 2, buf, 2);
558 imm16 = extract_signed_integer (buf, 2, byte_order);
559 regs[E_SP_REGNUM] = pv_add_constant (regs[E_SP_REGNUM], imm16);
562 /* Stack pointer adjustments are frame related. */
563 after_last_frame_setup_insn = pc;
566 else if (instr[0] == 0xfc && instr[1] == 0xfe)
571 status = target_read_memory (pc + 2, buf, 4);
576 imm32 = extract_signed_integer (buf, 4, byte_order);
577 regs[E_SP_REGNUM] = pv_add_constant (regs[E_SP_REGNUM], imm32);
580 /* Stack pointer adjustments are frame related. */
581 after_last_frame_setup_insn = pc;
584 else if ((instr[0] & 0xfc) == 0x20)
589 aN = instr[0] & 0x03;
590 imm8 = extract_signed_integer (&instr[1], 1, byte_order);
592 regs[E_A0_REGNUM + aN] = pv_add_constant (regs[E_A0_REGNUM + aN],
598 else if (instr[0] == 0xfa && (instr[1] & 0xfc) == 0xd0)
604 aN = instr[1] & 0x03;
606 status = target_read_memory (pc + 2, buf, 2);
611 imm16 = extract_signed_integer (buf, 2, byte_order);
613 regs[E_A0_REGNUM + aN] = pv_add_constant (regs[E_A0_REGNUM + aN],
619 else if (instr[0] == 0xfc && (instr[1] & 0xfc) == 0xd0)
625 aN = instr[1] & 0x03;
627 status = target_read_memory (pc + 2, buf, 4);
631 imm32 = extract_signed_integer (buf, 2, byte_order);
633 regs[E_A0_REGNUM + aN] = pv_add_constant (regs[E_A0_REGNUM + aN],
638 else if (instr[0] == 0xf9 && (instr[1] & 0xfd) == 0x30)
643 Y = (instr[1] & 0x02) >> 1;
645 status = target_read_memory (pc + 2, buf, 1);
649 sM = (buf[0] & 0xf0) >> 4;
653 stack.store (regs[translate_rreg (rN)], 4,
654 regs[E_FS0_REGNUM + fsM]);
659 else if (instr[0] == 0xf9 && (instr[1] & 0xfd) == 0x34)
664 Y = (instr[1] & 0x02) >> 1;
666 status = target_read_memory (pc + 2, buf, 1);
670 sM = (buf[0] & 0xf0) >> 4;
673 stack.store (regs[E_SP_REGNUM], 4,
674 regs[E_FS0_REGNUM + fsM]);
678 /* fmov fsM, (rN, rI) */
679 else if (instr[0] == 0xfb && instr[1] == 0x37)
681 int fsM, sM, Z, rN, rI;
685 status = target_read_memory (pc + 2, buf, 2);
689 rI = (buf[0] & 0xf0) >> 4;
691 sM = (buf[1] & 0xf0) >> 4;
692 Z = (buf[1] & 0x02) >> 1;
695 stack.store (pv_add (regs[translate_rreg (rN)],
696 regs[translate_rreg (rI)]),
697 4, regs[E_FS0_REGNUM + fsM]);
701 /* fmov fsM, (d8, rN) */
702 else if (instr[0] == 0xfb && (instr[1] & 0xfd) == 0x30)
708 Y = (instr[1] & 0x02) >> 1;
710 status = target_read_memory (pc + 2, buf, 2);
714 sM = (buf[0] & 0xf0) >> 4;
717 d8 = extract_signed_integer (&buf[1], 1, byte_order);
719 stack.store (pv_add_constant (regs[translate_rreg (rN)], d8),
720 4, regs[E_FS0_REGNUM + fsM]);
724 /* fmov fsM, (d24, rN) */
725 else if (instr[0] == 0xfd && (instr[1] & 0xfd) == 0x30)
731 Y = (instr[1] & 0x02) >> 1;
733 status = target_read_memory (pc + 2, buf, 4);
737 sM = (buf[0] & 0xf0) >> 4;
740 d24 = extract_signed_integer (&buf[1], 3, byte_order);
742 stack.store (pv_add_constant (regs[translate_rreg (rN)], d24),
743 4, regs[E_FS0_REGNUM + fsM]);
747 /* fmov fsM, (d32, rN) */
748 else if (instr[0] == 0xfe && (instr[1] & 0xfd) == 0x30)
754 Y = (instr[1] & 0x02) >> 1;
756 status = target_read_memory (pc + 2, buf, 5);
760 sM = (buf[0] & 0xf0) >> 4;
763 d32 = extract_signed_integer (&buf[1], 4, byte_order);
765 stack.store (pv_add_constant (regs[translate_rreg (rN)], d32),
766 4, regs[E_FS0_REGNUM + fsM]);
770 /* fmov fsM, (d8, SP) */
771 else if (instr[0] == 0xfb && (instr[1] & 0xfd) == 0x34)
777 Y = (instr[1] & 0x02) >> 1;
779 status = target_read_memory (pc + 2, buf, 2);
783 sM = (buf[0] & 0xf0) >> 4;
785 d8 = extract_signed_integer (&buf[1], 1, byte_order);
787 stack.store (pv_add_constant (regs[E_SP_REGNUM], d8),
788 4, regs[E_FS0_REGNUM + fsM]);
792 /* fmov fsM, (d24, SP) */
793 else if (instr[0] == 0xfd && (instr[1] & 0xfd) == 0x34)
799 Y = (instr[1] & 0x02) >> 1;
801 status = target_read_memory (pc + 2, buf, 4);
805 sM = (buf[0] & 0xf0) >> 4;
807 d24 = extract_signed_integer (&buf[1], 3, byte_order);
809 stack.store (pv_add_constant (regs[E_SP_REGNUM], d24),
810 4, regs[E_FS0_REGNUM + fsM]);
814 /* fmov fsM, (d32, SP) */
815 else if (instr[0] == 0xfe && (instr[1] & 0xfd) == 0x34)
821 Y = (instr[1] & 0x02) >> 1;
823 status = target_read_memory (pc + 2, buf, 5);
827 sM = (buf[0] & 0xf0) >> 4;
829 d32 = extract_signed_integer (&buf[1], 4, byte_order);
831 stack.store (pv_add_constant (regs[E_SP_REGNUM], d32),
832 4, regs[E_FS0_REGNUM + fsM]);
836 /* fmov fsM, (rN+) */
837 else if (instr[0] == 0xf9 && (instr[1] & 0xfd) == 0x31)
839 int fsM, sM, Y, rN, rN_regnum;
842 Y = (instr[1] & 0x02) >> 1;
844 status = target_read_memory (pc + 2, buf, 1);
848 sM = (buf[0] & 0xf0) >> 4;
852 rN_regnum = translate_rreg (rN);
854 stack.store (regs[rN_regnum], 4,
855 regs[E_FS0_REGNUM + fsM]);
856 regs[rN_regnum] = pv_add_constant (regs[rN_regnum], 4);
860 /* fmov fsM, (rN+, imm8) */
861 else if (instr[0] == 0xfb && (instr[1] & 0xfd) == 0x31)
863 int fsM, sM, Y, rN, rN_regnum;
867 Y = (instr[1] & 0x02) >> 1;
869 status = target_read_memory (pc + 2, buf, 2);
873 sM = (buf[0] & 0xf0) >> 4;
876 imm8 = extract_signed_integer (&buf[1], 1, byte_order);
878 rN_regnum = translate_rreg (rN);
880 stack.store (regs[rN_regnum], 4, regs[E_FS0_REGNUM + fsM]);
881 regs[rN_regnum] = pv_add_constant (regs[rN_regnum], imm8);
885 /* fmov fsM, (rN+, imm24) */
886 else if (instr[0] == 0xfd && (instr[1] & 0xfd) == 0x31)
888 int fsM, sM, Y, rN, rN_regnum;
892 Y = (instr[1] & 0x02) >> 1;
894 status = target_read_memory (pc + 2, buf, 4);
898 sM = (buf[0] & 0xf0) >> 4;
901 imm24 = extract_signed_integer (&buf[1], 3, byte_order);
903 rN_regnum = translate_rreg (rN);
905 stack.store (regs[rN_regnum], 4, regs[E_FS0_REGNUM + fsM]);
906 regs[rN_regnum] = pv_add_constant (regs[rN_regnum], imm24);
910 /* fmov fsM, (rN+, imm32) */
911 else if (instr[0] == 0xfe && (instr[1] & 0xfd) == 0x31)
913 int fsM, sM, Y, rN, rN_regnum;
917 Y = (instr[1] & 0x02) >> 1;
919 status = target_read_memory (pc + 2, buf, 5);
923 sM = (buf[0] & 0xf0) >> 4;
926 imm32 = extract_signed_integer (&buf[1], 4, byte_order);
928 rN_regnum = translate_rreg (rN);
930 stack.store (regs[rN_regnum], 4, regs[E_FS0_REGNUM + fsM]);
931 regs[rN_regnum] = pv_add_constant (regs[rN_regnum], imm32);
936 else if ((instr[0] & 0xf0) == 0x90)
938 int aN = instr[0] & 0x03;
941 imm8 = extract_signed_integer (&instr[1], 1, byte_order);
943 regs[E_A0_REGNUM + aN] = pv_constant (imm8);
947 else if ((instr[0] & 0xfc) == 0x24)
949 int aN = instr[0] & 0x03;
953 status = target_read_memory (pc + 1, buf, 2);
957 imm16 = extract_signed_integer (buf, 2, byte_order);
958 regs[E_A0_REGNUM + aN] = pv_constant (imm16);
962 else if (instr[0] == 0xfc && ((instr[1] & 0xfc) == 0xdc))
964 int aN = instr[1] & 0x03;
968 status = target_read_memory (pc + 2, buf, 4);
972 imm32 = extract_signed_integer (buf, 4, byte_order);
973 regs[E_A0_REGNUM + aN] = pv_constant (imm32);
977 else if ((instr[0] & 0xf0) == 0x80)
979 int dN = instr[0] & 0x03;
982 imm8 = extract_signed_integer (&instr[1], 1, byte_order);
984 regs[E_D0_REGNUM + dN] = pv_constant (imm8);
988 else if ((instr[0] & 0xfc) == 0x2c)
990 int dN = instr[0] & 0x03;
994 status = target_read_memory (pc + 1, buf, 2);
998 imm16 = extract_signed_integer (buf, 2, byte_order);
999 regs[E_D0_REGNUM + dN] = pv_constant (imm16);
1003 else if (instr[0] == 0xfc && ((instr[1] & 0xfc) == 0xcc))
1005 int dN = instr[1] & 0x03;
1009 status = target_read_memory (pc + 2, buf, 4);
1013 imm32 = extract_signed_integer (buf, 4, byte_order);
1014 regs[E_D0_REGNUM + dN] = pv_constant (imm32);
1019 /* We've hit some instruction that we don't recognize. Hopefully,
1020 we have enough to do prologue analysis. */
1025 /* Is the frame size (offset, really) a known constant? */
1026 if (pv_is_register (regs[E_SP_REGNUM], E_SP_REGNUM))
1027 result->frame_size = regs[E_SP_REGNUM].k;
1029 /* Was the frame pointer initialized? */
1030 if (pv_is_register (regs[E_A3_REGNUM], E_SP_REGNUM))
1032 result->has_frame_ptr = 1;
1033 result->frame_ptr_offset = regs[E_A3_REGNUM].k;
1036 /* Record where all the registers were saved. */
1037 stack.scan (check_for_saved, (void *) result);
1039 result->prologue_end = after_last_frame_setup_insn;
1042 /* Function: skip_prologue
1043 Return the address of the first inst past the prologue of the function. */
1046 mn10300_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
1049 CORE_ADDR func_addr, func_end;
1050 struct mn10300_prologue p;
1052 /* Try to find the extent of the function that contains PC. */
1053 if (!find_pc_partial_function (pc, &name, &func_addr, &func_end))
1056 mn10300_analyze_prologue (gdbarch, pc, func_end, &p);
1057 return p.prologue_end;
1060 /* Wrapper for mn10300_analyze_prologue: find the function start;
1061 use the current frame PC as the limit, then
1062 invoke mn10300_analyze_prologue and return its result. */
1063 static struct mn10300_prologue *
1064 mn10300_analyze_frame_prologue (struct frame_info *this_frame,
1065 void **this_prologue_cache)
1067 if (!*this_prologue_cache)
1069 CORE_ADDR func_start, stop_addr;
1071 *this_prologue_cache = FRAME_OBSTACK_ZALLOC (struct mn10300_prologue);
1073 func_start = get_frame_func (this_frame);
1074 stop_addr = get_frame_pc (this_frame);
1076 /* If we couldn't find any function containing the PC, then
1077 just initialize the prologue cache, but don't do anything. */
1079 stop_addr = func_start;
1081 mn10300_analyze_prologue (get_frame_arch (this_frame),
1082 func_start, stop_addr,
1083 ((struct mn10300_prologue *)
1084 *this_prologue_cache));
1087 return (struct mn10300_prologue *) *this_prologue_cache;
1090 /* Given the next frame and a prologue cache, return this frame's
1093 mn10300_frame_base (struct frame_info *this_frame, void **this_prologue_cache)
1095 struct mn10300_prologue *p
1096 = mn10300_analyze_frame_prologue (this_frame, this_prologue_cache);
1098 /* In functions that use alloca, the distance between the stack
1099 pointer and the frame base varies dynamically, so we can't use
1100 the SP plus static information like prologue analysis to find the
1101 frame base. However, such functions must have a frame pointer,
1102 to be able to restore the SP on exit. So whenever we do have a
1103 frame pointer, use that to find the base. */
1104 if (p->has_frame_ptr)
1106 CORE_ADDR fp = get_frame_register_unsigned (this_frame, E_A3_REGNUM);
1107 return fp - p->frame_ptr_offset;
1111 CORE_ADDR sp = get_frame_register_unsigned (this_frame, E_SP_REGNUM);
1112 return sp - p->frame_size;
1116 /* Here is a dummy implementation. */
1117 static struct frame_id
1118 mn10300_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
1120 CORE_ADDR sp = get_frame_register_unsigned (this_frame, E_SP_REGNUM);
1121 CORE_ADDR pc = get_frame_register_unsigned (this_frame, E_PC_REGNUM);
1122 return frame_id_build (sp, pc);
1126 mn10300_frame_this_id (struct frame_info *this_frame,
1127 void **this_prologue_cache,
1128 struct frame_id *this_id)
1130 *this_id = frame_id_build (mn10300_frame_base (this_frame,
1131 this_prologue_cache),
1132 get_frame_func (this_frame));
1136 static struct value *
1137 mn10300_frame_prev_register (struct frame_info *this_frame,
1138 void **this_prologue_cache, int regnum)
1140 struct mn10300_prologue *p
1141 = mn10300_analyze_frame_prologue (this_frame, this_prologue_cache);
1142 CORE_ADDR frame_base = mn10300_frame_base (this_frame, this_prologue_cache);
1144 if (regnum == E_SP_REGNUM)
1145 return frame_unwind_got_constant (this_frame, regnum, frame_base);
1147 /* If prologue analysis says we saved this register somewhere,
1148 return a description of the stack slot holding it. */
1149 if (p->reg_offset[regnum] != 1)
1150 return frame_unwind_got_memory (this_frame, regnum,
1151 frame_base + p->reg_offset[regnum]);
1153 /* Otherwise, presume we haven't changed the value of this
1154 register, and get it from the next frame. */
1155 return frame_unwind_got_register (this_frame, regnum, regnum);
1158 static const struct frame_unwind mn10300_frame_unwind = {
1160 default_frame_unwind_stop_reason,
1161 mn10300_frame_this_id,
1162 mn10300_frame_prev_register,
1164 default_frame_sniffer
1168 mn10300_unwind_pc (struct gdbarch *gdbarch, struct frame_info *this_frame)
1172 pc = frame_unwind_register_unsigned (this_frame, E_PC_REGNUM);
1177 mn10300_unwind_sp (struct gdbarch *gdbarch, struct frame_info *this_frame)
1181 sp = frame_unwind_register_unsigned (this_frame, E_SP_REGNUM);
1186 mn10300_frame_unwind_init (struct gdbarch *gdbarch)
1188 dwarf2_append_unwinders (gdbarch);
1189 frame_unwind_append_unwinder (gdbarch, &mn10300_frame_unwind);
1190 set_gdbarch_dummy_id (gdbarch, mn10300_dummy_id);
1191 set_gdbarch_unwind_pc (gdbarch, mn10300_unwind_pc);
1192 set_gdbarch_unwind_sp (gdbarch, mn10300_unwind_sp);
1195 /* Function: push_dummy_call
1197 * Set up machine state for a target call, including
1198 * function arguments, stack, return address, etc.
1203 mn10300_push_dummy_call (struct gdbarch *gdbarch,
1204 struct value *target_func,
1205 struct regcache *regcache,
1207 int nargs, struct value **args,
1210 CORE_ADDR struct_addr)
1212 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1213 const int push_size = register_size (gdbarch, E_PC_REGNUM);
1216 int stack_offset = 0;
1218 const gdb_byte *val;
1219 gdb_byte valbuf[MN10300_MAX_REGISTER_SIZE];
1221 /* This should be a nop, but align the stack just in case something
1222 went wrong. Stacks are four byte aligned on the mn10300. */
1225 /* Now make space on the stack for the args.
1227 XXX This doesn't appear to handle pass-by-invisible reference
1229 regs_used = struct_return ? 1 : 0;
1230 for (len = 0, argnum = 0; argnum < nargs; argnum++)
1232 arg_len = (TYPE_LENGTH (value_type (args[argnum])) + 3) & ~3;
1233 while (regs_used < 2 && arg_len > 0)
1236 arg_len -= push_size;
1241 /* Allocate stack space. */
1247 regcache_cooked_write_unsigned (regcache, E_D0_REGNUM, struct_addr);
1252 /* Push all arguments onto the stack. */
1253 for (argnum = 0; argnum < nargs; argnum++)
1255 /* FIXME what about structs? Unions? */
1256 if (TYPE_CODE (value_type (*args)) == TYPE_CODE_STRUCT
1257 && TYPE_LENGTH (value_type (*args)) > 8)
1259 /* Change to pointer-to-type. */
1260 arg_len = push_size;
1261 gdb_assert (push_size <= MN10300_MAX_REGISTER_SIZE);
1262 store_unsigned_integer (valbuf, push_size, byte_order,
1263 value_address (*args));
1268 arg_len = TYPE_LENGTH (value_type (*args));
1269 val = value_contents (*args);
1272 while (regs_used < 2 && arg_len > 0)
1274 regcache_cooked_write_unsigned (regcache, regs_used,
1275 extract_unsigned_integer (val, push_size, byte_order));
1277 arg_len -= push_size;
1283 write_memory (sp + stack_offset, val, push_size);
1284 arg_len -= push_size;
1286 stack_offset += push_size;
1292 /* Make space for the flushback area. */
1295 /* Push the return address that contains the magic breakpoint. */
1297 write_memory_unsigned_integer (sp, push_size, byte_order, bp_addr);
1299 /* The CPU also writes the return address always into the
1300 MDR register on "call". */
1301 regcache_cooked_write_unsigned (regcache, E_MDR_REGNUM, bp_addr);
1304 regcache_cooked_write_unsigned (regcache, E_SP_REGNUM, sp);
1306 /* On the mn10300, it's possible to move some of the stack adjustment
1307 and saving of the caller-save registers out of the prologue and
1308 into the call sites. (When using gcc, this optimization can
1309 occur when using the -mrelax switch.) If this occurs, the dwarf2
1310 info will reflect this fact. We can test to see if this is the
1311 case by creating a new frame using the current stack pointer and
1312 the address of the function that we're about to call. We then
1313 unwind SP and see if it's different than the SP of our newly
1314 created frame. If the SP values are the same, the caller is not
1315 expected to allocate any additional stack. On the other hand, if
1316 the SP values are different, the difference determines the
1317 additional stack that must be allocated.
1319 Note that we don't update the return value though because that's
1320 the value of the stack just after pushing the arguments, but prior
1321 to performing the call. This value is needed in order to
1322 construct the frame ID of the dummy call. */
1324 CORE_ADDR func_addr = find_function_addr (target_func, NULL);
1325 CORE_ADDR unwound_sp
1326 = mn10300_unwind_sp (gdbarch, create_new_frame (sp, func_addr));
1327 if (sp != unwound_sp)
1328 regcache_cooked_write_unsigned (regcache, E_SP_REGNUM,
1329 sp - (unwound_sp - sp));
1335 /* If DWARF2 is a register number appearing in Dwarf2 debug info, then
1336 mn10300_dwarf2_reg_to_regnum (DWARF2) is the corresponding GDB
1337 register number. Why don't Dwarf2 and GDB use the same numbering?
1338 Who knows? But since people have object files lying around with
1339 the existing Dwarf2 numbering, and other people have written stubs
1340 to work with the existing GDB, neither of them can change. So we
1341 just have to cope. */
1343 mn10300_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int dwarf2)
1345 /* This table is supposed to be shaped like the gdbarch_register_name
1346 initializer in gcc/config/mn10300/mn10300.h. Registers which
1347 appear in GCC's numbering, but have no counterpart in GDB's
1348 world, are marked with a -1. */
1349 static int dwarf2_to_gdb[] = {
1350 E_D0_REGNUM, E_D1_REGNUM, E_D2_REGNUM, E_D3_REGNUM,
1351 E_A0_REGNUM, E_A1_REGNUM, E_A2_REGNUM, E_A3_REGNUM,
1354 E_E0_REGNUM, E_E1_REGNUM, E_E2_REGNUM, E_E3_REGNUM,
1355 E_E4_REGNUM, E_E5_REGNUM, E_E6_REGNUM, E_E7_REGNUM,
1357 E_FS0_REGNUM + 0, E_FS0_REGNUM + 1, E_FS0_REGNUM + 2, E_FS0_REGNUM + 3,
1358 E_FS0_REGNUM + 4, E_FS0_REGNUM + 5, E_FS0_REGNUM + 6, E_FS0_REGNUM + 7,
1360 E_FS0_REGNUM + 8, E_FS0_REGNUM + 9, E_FS0_REGNUM + 10, E_FS0_REGNUM + 11,
1361 E_FS0_REGNUM + 12, E_FS0_REGNUM + 13, E_FS0_REGNUM + 14, E_FS0_REGNUM + 15,
1363 E_FS0_REGNUM + 16, E_FS0_REGNUM + 17, E_FS0_REGNUM + 18, E_FS0_REGNUM + 19,
1364 E_FS0_REGNUM + 20, E_FS0_REGNUM + 21, E_FS0_REGNUM + 22, E_FS0_REGNUM + 23,
1366 E_FS0_REGNUM + 24, E_FS0_REGNUM + 25, E_FS0_REGNUM + 26, E_FS0_REGNUM + 27,
1367 E_FS0_REGNUM + 28, E_FS0_REGNUM + 29, E_FS0_REGNUM + 30, E_FS0_REGNUM + 31,
1369 E_MDR_REGNUM, E_PSW_REGNUM, E_PC_REGNUM
1373 || dwarf2 >= ARRAY_SIZE (dwarf2_to_gdb))
1376 return dwarf2_to_gdb[dwarf2];
1379 static struct gdbarch *
1380 mn10300_gdbarch_init (struct gdbarch_info info,
1381 struct gdbarch_list *arches)
1383 struct gdbarch *gdbarch;
1384 struct gdbarch_tdep *tdep;
1387 arches = gdbarch_list_lookup_by_info (arches, &info);
1389 return arches->gdbarch;
1391 tdep = XCNEW (struct gdbarch_tdep);
1392 gdbarch = gdbarch_alloc (&info, tdep);
1394 switch (info.bfd_arch_info->mach)
1397 case bfd_mach_mn10300:
1398 set_gdbarch_register_name (gdbarch, mn10300_generic_register_name);
1399 tdep->am33_mode = 0;
1403 set_gdbarch_register_name (gdbarch, am33_register_name);
1404 tdep->am33_mode = 1;
1407 case bfd_mach_am33_2:
1408 set_gdbarch_register_name (gdbarch, am33_2_register_name);
1409 tdep->am33_mode = 2;
1411 set_gdbarch_fp0_regnum (gdbarch, 32);
1414 internal_error (__FILE__, __LINE__,
1415 _("mn10300_gdbarch_init: Unknown mn10300 variant"));
1419 /* By default, chars are unsigned. */
1420 set_gdbarch_char_signed (gdbarch, 0);
1423 set_gdbarch_num_regs (gdbarch, num_regs);
1424 set_gdbarch_register_type (gdbarch, mn10300_register_type);
1425 set_gdbarch_skip_prologue (gdbarch, mn10300_skip_prologue);
1426 set_gdbarch_read_pc (gdbarch, mn10300_read_pc);
1427 set_gdbarch_write_pc (gdbarch, mn10300_write_pc);
1428 set_gdbarch_pc_regnum (gdbarch, E_PC_REGNUM);
1429 set_gdbarch_sp_regnum (gdbarch, E_SP_REGNUM);
1430 set_gdbarch_dwarf2_reg_to_regnum (gdbarch, mn10300_dwarf2_reg_to_regnum);
1432 /* Stack unwinding. */
1433 set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
1435 set_gdbarch_breakpoint_kind_from_pc (gdbarch,
1436 mn10300_breakpoint::kind_from_pc);
1437 set_gdbarch_sw_breakpoint_from_kind (gdbarch,
1438 mn10300_breakpoint::bp_from_kind);
1439 /* decr_pc_after_break? */
1442 set_gdbarch_return_value (gdbarch, mn10300_return_value);
1444 /* Stage 3 -- get target calls working. */
1445 set_gdbarch_push_dummy_call (gdbarch, mn10300_push_dummy_call);
1446 /* set_gdbarch_return_value (store, extract) */
1449 mn10300_frame_unwind_init (gdbarch);
1451 /* Hook in ABI-specific overrides, if they have been registered. */
1452 gdbarch_init_osabi (info, gdbarch);
1457 /* Dump out the mn10300 specific architecture information. */
1460 mn10300_dump_tdep (struct gdbarch *gdbarch, struct ui_file *file)
1462 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1463 fprintf_unfiltered (file, "mn10300_dump_tdep: am33_mode = %d\n",
1468 _initialize_mn10300_tdep (void)
1470 gdbarch_register (bfd_arch_mn10300, mn10300_gdbarch_init, mn10300_dump_tdep);