1 /* Target-dependent code for the Matsushita MN10300 for GDB, the GNU debugger.
3 Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
4 2007 Free Software Foundation, Inc.
6 This file is part of GDB.
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>. */
22 #include "arch-utils.h"
26 #include "gdb_string.h"
27 #include "gdb_assert.h"
28 #include "gdbcore.h" /* for write_memory_unsigned_integer */
32 #include "frame-unwind.h"
33 #include "frame-base.h"
34 #include "trad-frame.h"
36 #include "dwarf2-frame.h"
39 #include "mn10300-tdep.h"
42 extern struct trad_frame_cache *mn10300_frame_unwind_cache (struct frame_info*,
45 /* Compute the alignment required by a type. */
48 mn10300_type_align (struct type *type)
52 switch (TYPE_CODE (type))
63 return TYPE_LENGTH (type);
65 case TYPE_CODE_COMPLEX:
66 return TYPE_LENGTH (type) / 2;
68 case TYPE_CODE_STRUCT:
70 for (i = 0; i < TYPE_NFIELDS (type); i++)
72 int falign = mn10300_type_align (TYPE_FIELD_TYPE (type, i));
73 while (align < falign)
79 /* HACK! Structures containing arrays, even small ones, are not
80 elligible for returning in registers. */
83 case TYPE_CODE_TYPEDEF:
84 return mn10300_type_align (check_typedef (type));
87 internal_error (__FILE__, __LINE__, _("bad switch"));
91 /* Should call_function allocate stack space for a struct return? */
93 mn10300_use_struct_convention (struct type *type)
95 /* Structures bigger than a pair of words can't be returned in
97 if (TYPE_LENGTH (type) > 8)
100 switch (TYPE_CODE (type))
102 case TYPE_CODE_STRUCT:
103 case TYPE_CODE_UNION:
104 /* Structures with a single field are handled as the field
106 if (TYPE_NFIELDS (type) == 1)
107 return mn10300_use_struct_convention (TYPE_FIELD_TYPE (type, 0));
109 /* Structures with word or double-word size are passed in memory, as
110 long as they require at least word alignment. */
111 if (mn10300_type_align (type) >= 4)
116 /* Arrays are addressable, so they're never returned in
117 registers. This condition can only hold when the array is
118 the only field of a struct or union. */
119 case TYPE_CODE_ARRAY:
122 case TYPE_CODE_TYPEDEF:
123 return mn10300_use_struct_convention (check_typedef (type));
131 mn10300_store_return_value (struct gdbarch *gdbarch, struct type *type,
132 struct regcache *regcache, const void *valbuf)
134 int len = TYPE_LENGTH (type);
137 if (TYPE_CODE (type) == TYPE_CODE_PTR)
142 regsz = register_size (gdbarch, reg);
145 regcache_raw_write_part (regcache, reg, 0, len, valbuf);
146 else if (len <= 2 * regsz)
148 regcache_raw_write (regcache, reg, valbuf);
149 gdb_assert (regsz == register_size (gdbarch, reg + 1));
150 regcache_raw_write_part (regcache, reg+1, 0,
151 len - regsz, (char *) valbuf + regsz);
154 internal_error (__FILE__, __LINE__,
155 _("Cannot store return value %d bytes long."), len);
159 mn10300_extract_return_value (struct gdbarch *gdbarch, struct type *type,
160 struct regcache *regcache, void *valbuf)
162 char buf[MAX_REGISTER_SIZE];
163 int len = TYPE_LENGTH (type);
166 if (TYPE_CODE (type) == TYPE_CODE_PTR)
171 regsz = register_size (gdbarch, reg);
174 regcache_raw_read (regcache, reg, buf);
175 memcpy (valbuf, buf, len);
177 else if (len <= 2 * regsz)
179 regcache_raw_read (regcache, reg, buf);
180 memcpy (valbuf, buf, regsz);
181 gdb_assert (regsz == register_size (gdbarch, reg + 1));
182 regcache_raw_read (regcache, reg + 1, buf);
183 memcpy ((char *) valbuf + regsz, buf, len - regsz);
186 internal_error (__FILE__, __LINE__,
187 _("Cannot extract return value %d bytes long."), len);
190 /* Determine, for architecture GDBARCH, how a return value of TYPE
191 should be returned. If it is supposed to be returned in registers,
192 and READBUF is non-zero, read the appropriate value from REGCACHE,
193 and copy it into READBUF. If WRITEBUF is non-zero, write the value
194 from WRITEBUF into REGCACHE. */
196 static enum return_value_convention
197 mn10300_return_value (struct gdbarch *gdbarch, struct type *type,
198 struct regcache *regcache, gdb_byte *readbuf,
199 const gdb_byte *writebuf)
201 if (mn10300_use_struct_convention (type))
202 return RETURN_VALUE_STRUCT_CONVENTION;
205 mn10300_extract_return_value (gdbarch, type, regcache, readbuf);
207 mn10300_store_return_value (gdbarch, type, regcache, writebuf);
209 return RETURN_VALUE_REGISTER_CONVENTION;
213 register_name (int reg, char **regs, long sizeof_regs)
215 if (reg < 0 || reg >= sizeof_regs / sizeof (regs[0]))
222 mn10300_generic_register_name (struct gdbarch *gdbarch, int reg)
224 static char *regs[] =
225 { "d0", "d1", "d2", "d3", "a0", "a1", "a2", "a3",
226 "sp", "pc", "mdr", "psw", "lir", "lar", "", "",
227 "", "", "", "", "", "", "", "",
228 "", "", "", "", "", "", "", "fp"
230 return register_name (reg, regs, sizeof regs);
235 am33_register_name (struct gdbarch *gdbarch, int reg)
237 static char *regs[] =
238 { "d0", "d1", "d2", "d3", "a0", "a1", "a2", "a3",
239 "sp", "pc", "mdr", "psw", "lir", "lar", "",
240 "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
241 "ssp", "msp", "usp", "mcrh", "mcrl", "mcvf", "", "", ""
243 return register_name (reg, regs, sizeof regs);
247 am33_2_register_name (struct gdbarch *gdbarch, int reg)
249 static char *regs[] =
251 "d0", "d1", "d2", "d3", "a0", "a1", "a2", "a3",
252 "sp", "pc", "mdr", "psw", "lir", "lar", "mdrq", "r0",
253 "r1", "r2", "r3", "r4", "r5", "r6", "r7", "ssp",
254 "msp", "usp", "mcrh", "mcrl", "mcvf", "fpcr", "", "",
255 "fs0", "fs1", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7",
256 "fs8", "fs9", "fs10", "fs11", "fs12", "fs13", "fs14", "fs15",
257 "fs16", "fs17", "fs18", "fs19", "fs20", "fs21", "fs22", "fs23",
258 "fs24", "fs25", "fs26", "fs27", "fs28", "fs29", "fs30", "fs31"
260 return register_name (reg, regs, sizeof regs);
264 mn10300_register_type (struct gdbarch *gdbarch, int reg)
266 return builtin_type_int;
270 mn10300_read_pc (struct regcache *regcache)
273 regcache_cooked_read_unsigned (regcache, E_PC_REGNUM, &val);
278 mn10300_write_pc (struct regcache *regcache, CORE_ADDR val)
280 regcache_cooked_write_unsigned (regcache, E_PC_REGNUM, val);
283 /* The breakpoint instruction must be the same size as the smallest
284 instruction in the instruction set.
286 The Matsushita mn10x00 processors have single byte instructions
287 so we need a single byte breakpoint. Matsushita hasn't defined
288 one, so we defined it ourselves. */
290 const static unsigned char *
291 mn10300_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *bp_addr,
294 static char breakpoint[] = {0xff};
299 /* Set offsets of saved registers.
300 This is a helper function for mn10300_analyze_prologue. */
303 set_reg_offsets (struct frame_info *fi,
307 int stack_extra_size,
310 struct trad_frame_cache *cache;
314 if (fi == NULL || this_cache == NULL)
317 cache = mn10300_frame_unwind_cache (fi, this_cache);
323 base = frame_unwind_register_unsigned (fi, E_A3_REGNUM);
327 base = frame_unwind_register_unsigned (fi, E_SP_REGNUM) + stack_extra_size;
330 trad_frame_set_this_base (cache, base);
334 /* If bit N is set in fpregmask, fsN is saved on the stack.
335 The floating point registers are saved in ascending order.
336 For example: fs16 <- Frame Pointer
337 fs17 Frame Pointer + 4 */
341 for (i = 0; i < 32; i++)
343 if (fpregmask & (1 << i))
345 trad_frame_set_reg_addr (cache, E_FS0_REGNUM + i, base + offset);
353 if (movm_args & movm_other_bit)
355 /* The `other' bit leaves a blank area of four bytes at the
356 beginning of its block of saved registers, making it 32 bytes
358 trad_frame_set_reg_addr (cache, E_LAR_REGNUM, base + offset + 4);
359 trad_frame_set_reg_addr (cache, E_LIR_REGNUM, base + offset + 8);
360 trad_frame_set_reg_addr (cache, E_MDR_REGNUM, base + offset + 12);
361 trad_frame_set_reg_addr (cache, E_A0_REGNUM + 1, base + offset + 16);
362 trad_frame_set_reg_addr (cache, E_A0_REGNUM, base + offset + 20);
363 trad_frame_set_reg_addr (cache, E_D0_REGNUM + 1, base + offset + 24);
364 trad_frame_set_reg_addr (cache, E_D0_REGNUM, base + offset + 28);
368 if (movm_args & movm_a3_bit)
370 trad_frame_set_reg_addr (cache, E_A3_REGNUM, base + offset);
373 if (movm_args & movm_a2_bit)
375 trad_frame_set_reg_addr (cache, E_A2_REGNUM, base + offset);
378 if (movm_args & movm_d3_bit)
380 trad_frame_set_reg_addr (cache, E_D3_REGNUM, base + offset);
383 if (movm_args & movm_d2_bit)
385 trad_frame_set_reg_addr (cache, E_D2_REGNUM, base + offset);
390 if (movm_args & movm_exother_bit)
392 trad_frame_set_reg_addr (cache, E_MCVF_REGNUM, base + offset);
393 trad_frame_set_reg_addr (cache, E_MCRL_REGNUM, base + offset + 4);
394 trad_frame_set_reg_addr (cache, E_MCRH_REGNUM, base + offset + 8);
395 trad_frame_set_reg_addr (cache, E_MDRQ_REGNUM, base + offset + 12);
396 trad_frame_set_reg_addr (cache, E_E1_REGNUM, base + offset + 16);
397 trad_frame_set_reg_addr (cache, E_E0_REGNUM, base + offset + 20);
400 if (movm_args & movm_exreg1_bit)
402 trad_frame_set_reg_addr (cache, E_E7_REGNUM, base + offset);
403 trad_frame_set_reg_addr (cache, E_E6_REGNUM, base + offset + 4);
404 trad_frame_set_reg_addr (cache, E_E5_REGNUM, base + offset + 8);
405 trad_frame_set_reg_addr (cache, E_E4_REGNUM, base + offset + 12);
408 if (movm_args & movm_exreg0_bit)
410 trad_frame_set_reg_addr (cache, E_E3_REGNUM, base + offset);
411 trad_frame_set_reg_addr (cache, E_E2_REGNUM, base + offset + 4);
415 /* The last (or first) thing on the stack will be the PC. */
416 trad_frame_set_reg_addr (cache, E_PC_REGNUM, base + offset);
417 /* Save the SP in the 'traditional' way.
418 This will be the same location where the PC is saved. */
419 trad_frame_set_reg_value (cache, E_SP_REGNUM, base + offset);
422 /* The main purpose of this file is dealing with prologues to extract
423 information about stack frames and saved registers.
425 In gcc/config/mn13000/mn10300.c, the expand_prologue prologue
426 function is pretty readable, and has a nice explanation of how the
427 prologue is generated. The prologues generated by that code will
428 have the following form (NOTE: the current code doesn't handle all
431 + If this is an old-style varargs function, then its arguments
432 need to be flushed back to the stack:
437 + If we use any of the callee-saved registers, save them now.
439 movm [some callee-saved registers],(sp)
441 + If we have any floating-point registers to save:
443 - Decrement the stack pointer to reserve space for the registers.
444 If the function doesn't need a frame pointer, we may combine
445 this with the adjustment that reserves space for the frame.
449 - Save the floating-point registers. We have two possible
452 . Save them at fixed offset from the SP:
454 fmov fsN,(OFFSETN,sp)
455 fmov fsM,(OFFSETM,sp)
458 Note that, if OFFSETN happens to be zero, you'll get the
459 different opcode: fmov fsN,(sp)
461 . Or, set a0 to the start of the save area, and then use
462 post-increment addressing to save the FP registers.
470 + If the function needs a frame pointer, we set it here.
474 + Now we reserve space for the stack frame proper. This could be
475 merged into the `add -SIZE, sp' instruction for FP saves up
476 above, unless we needed to set the frame pointer in the previous
477 step, or the frame is so large that allocating the whole thing at
478 once would put the FP register save slots out of reach of the
479 addressing mode (128 bytes).
483 One day we might keep the stack pointer constant, that won't
484 change the code for prologues, but it will make the frame
485 pointerless case much more common. */
487 /* Analyze the prologue to determine where registers are saved,
488 the end of the prologue, etc etc. Return the end of the prologue
491 We store into FI (if non-null) several tidbits of information:
493 * stack_size -- size of this stack frame. Note that if we stop in
494 certain parts of the prologue/epilogue we may claim the size of the
495 current frame is zero. This happens when the current frame has
496 not been allocated yet or has already been deallocated.
498 * fsr -- Addresses of registers saved in the stack by this frame.
500 * status -- A (relatively) generic status indicator. It's a bitmask
501 with the following bits:
503 MY_FRAME_IN_SP: The base of the current frame is actually in
504 the stack pointer. This can happen for frame pointerless
505 functions, or cases where we're stopped in the prologue/epilogue
506 itself. For these cases mn10300_analyze_prologue will need up
507 update fi->frame before returning or analyzing the register
510 MY_FRAME_IN_FP: The base of the current frame is in the
511 frame pointer register ($a3).
513 NO_MORE_FRAMES: Set this if the current frame is "start" or
514 if the first instruction looks like mov <imm>,sp. This tells
515 frame chain to not bother trying to unwind past this frame. */
518 mn10300_analyze_prologue (struct frame_info *fi,
522 CORE_ADDR func_addr, func_end, addr, stop;
523 long stack_extra_size = 0;
525 unsigned char buf[4];
532 /* Use the PC in the frame if it's provided to look up the
533 start of this function.
535 Note: kevinb/2003-07-16: We used to do the following here:
536 pc = (fi ? get_frame_pc (fi) : pc);
537 But this is (now) badly broken when called from analyze_dummy_frame().
541 pc = (pc ? pc : get_frame_pc (fi));
544 /* Find the start of this function. */
545 status = find_pc_partial_function (pc, &name, &func_addr, &func_end);
547 /* Do nothing if we couldn't find the start of this function
549 MVS: comment went on to say "or if we're stopped at the first
550 instruction in the prologue" -- but code doesn't reflect that,
551 and I don't want to do that anyway. */
555 goto finish_prologue;
558 /* If we're in start, then give up. */
559 if (strcmp (name, "start") == 0)
562 goto finish_prologue;
565 /* Figure out where to stop scanning. */
566 stop = fi ? pc : func_end;
568 /* Don't walk off the end of the function. */
569 stop = stop > func_end ? func_end : stop;
571 /* Start scanning on the first instruction of this function. */
574 /* Suck in two bytes. */
575 if (addr + 2 > stop || !safe_frame_unwind_memory (fi, addr, buf, 2))
576 goto finish_prologue;
578 /* First see if this insn sets the stack pointer from a register; if
579 so, it's probably the initialization of the stack pointer in _start,
580 so mark this as the bottom-most frame. */
581 if (buf[0] == 0xf2 && (buf[1] & 0xf3) == 0xf0)
583 goto finish_prologue;
586 /* Now look for movm [regs],sp, which saves the callee saved registers.
588 At this time we don't know if fi->frame is valid, so we only note
589 that we encountered a movm instruction. Later, we'll set the entries
590 in fsr.regs as needed. */
593 /* Extract the register list for the movm instruction. */
598 /* Quit now if we're beyond the stop point. */
600 goto finish_prologue;
602 /* Get the next two bytes so the prologue scan can continue. */
603 if (!safe_frame_unwind_memory (fi, addr, buf, 2))
604 goto finish_prologue;
609 /* Determine if any floating point registers are to be saved.
610 Look for one of the following three prologue formats:
612 [movm [regs],(sp)] [movm [regs],(sp)] [movm [regs],(sp)]
614 add -SIZE,sp add -SIZE,sp add -SIZE,sp
615 fmov fs#,(sp) mov sp,a0/a1 mov sp,a0/a1
616 fmov fs#,(#,sp) fmov fs#,(a0/a1+) add SIZE2,a0/a1
617 ... ... fmov fs#,(a0/a1+)
619 fmov fs#,(#,sp) fmov fs#,(a0/a1+) fmov fs#,(a0/a1+)
621 [mov sp,a3] [mov sp,a3]
622 [add -SIZE2,sp] [add -SIZE2,sp] */
624 /* Remember the address at which we started in the event that we
625 don't ultimately find an fmov instruction. Once we're certain
626 that we matched one of the above patterns, we'll set
627 ``restore_addr'' to the appropriate value. Note: At one time
628 in the past, this code attempted to not adjust ``addr'' until
629 there was a fair degree of certainty that the pattern would be
630 matched. However, that code did not wait until an fmov instruction
631 was actually encountered. As a consequence, ``addr'' would
632 sometimes be advanced even when no fmov instructions were found. */
633 CORE_ADDR restore_addr = addr;
635 /* First, look for add -SIZE,sp (i.e. add imm8,sp (0xf8feXX)
636 or add imm16,sp (0xfafeXXXX)
637 or add imm32,sp (0xfcfeXXXXXXXX)) */
639 if (buf[0] == 0xf8 && buf[1] == 0xfe)
641 else if (buf[0] == 0xfa && buf[1] == 0xfe)
643 else if (buf[0] == 0xfc && buf[1] == 0xfe)
647 /* An "add -#,sp" instruction has been found. "addr + 2 + imm_size"
648 is the address of the next instruction. Don't modify "addr" until
649 the next "floating point prologue" instruction is found. If this
650 is not a prologue that saves floating point registers we need to
651 be able to back out of this bit of code and continue with the
652 prologue analysis. */
653 if (addr + 2 + imm_size < stop)
655 if (!safe_frame_unwind_memory (fi, addr + 2 + imm_size, buf, 3))
656 goto finish_prologue;
657 if ((buf[0] & 0xfc) == 0x3c)
659 /* Occasionally, especially with C++ code, the "fmov"
660 instructions will be preceded by "mov sp,aN"
661 (aN => a0, a1, a2, or a3).
663 This is a one byte instruction: mov sp,aN = 0011 11XX
664 where XX is the register number.
666 Skip this instruction by incrementing addr. The "fmov"
667 instructions will have the form "fmov fs#,(aN+)" in this
668 case, but that will not necessitate a change in the
669 "fmov" parsing logic below. */
673 if ((buf[1] & 0xfc) == 0x20)
675 /* Occasionally, especially with C++ code compiled with
676 the -fomit-frame-pointer or -O3 options, the
677 "mov sp,aN" instruction will be followed by an
678 "add #,aN" instruction. This indicates the
679 "stack_size", the size of the portion of the stack
680 containing the arguments. This instruction format is:
681 add #,aN = 0010 00XX YYYY YYYY
682 where XX is the register number
683 YYYY YYYY is the constant.
684 Note the size of the stack (as a negative number) in
685 the frame info structure. */
687 stack_extra_size += -buf[2];
693 if ((buf[0] & 0xfc) == 0x3c ||
694 buf[0] == 0xf9 || buf[0] == 0xfb)
696 /* An "fmov" instruction has been found indicating that this
697 prologue saves floating point registers (or, as described
698 above, a "mov sp,aN" and possible "add #,aN" have been
699 found and we will assume an "fmov" follows). Process the
700 consecutive "fmov" instructions. */
701 for (addr += 2 + imm_size;;addr += imm_size)
705 /* Read the "fmov" instruction. */
707 !safe_frame_unwind_memory (fi, addr, buf, 4))
708 goto finish_prologue;
710 if (buf[0] != 0xf9 && buf[0] != 0xfb)
713 /* An fmov instruction has just been seen. We can
714 now really commit to the pattern match. Set the
715 address to restore at the end of this speculative
716 bit of code to the actually address that we've
717 been incrementing (or not) throughout the
721 /* Get the floating point register number from the
722 2nd and 3rd bytes of the "fmov" instruction:
723 Machine Code: 0000 00X0 YYYY 0000 =>
725 regnum = (buf[1] & 0x02) << 3;
726 regnum |= ((buf[2] & 0xf0) >> 4) & 0x0f;
728 /* Add this register number to the bit mask of floating
729 point registers that have been saved. */
730 fpregmask |= 1 << regnum;
732 /* Determine the length of this "fmov" instruction.
733 fmov fs#,(sp) => 3 byte instruction
734 fmov fs#,(#,sp) => 4 byte instruction */
735 imm_size = (buf[0] == 0xf9) ? 3 : 4;
740 /* No "fmov" was found. Reread the two bytes at the original
741 "addr" to reset the state. */
743 if (!safe_frame_unwind_memory (fi, addr, buf, 2))
744 goto finish_prologue;
747 /* else the prologue consists entirely of an "add -SIZE,sp"
748 instruction. Handle this below. */
750 /* else no "add -SIZE,sp" was found indicating no floating point
751 registers are saved in this prologue. */
753 /* In the pattern match code contained within this block, `restore_addr'
754 is set to the starting address at the very beginning and then
755 iteratively to the next address to start scanning at once the
756 pattern match has succeeded. Thus `restore_addr' will contain
757 the address to rewind to if the pattern match failed. If the
758 match succeeded, `restore_addr' and `addr' will already have the
763 /* Now see if we set up a frame pointer via "mov sp,a3" */
768 /* The frame pointer is now valid. */
774 /* Quit now if we're beyond the stop point. */
776 goto finish_prologue;
778 /* Get two more bytes so scanning can continue. */
779 if (!safe_frame_unwind_memory (fi, addr, buf, 2))
780 goto finish_prologue;
783 /* Next we should allocate the local frame. No more prologue insns
784 are found after allocating the local frame.
786 Search for add imm8,sp (0xf8feXX)
787 or add imm16,sp (0xfafeXXXX)
788 or add imm32,sp (0xfcfeXXXXXXXX).
790 If none of the above was found, then this prologue has no
794 if (buf[0] == 0xf8 && buf[1] == 0xfe)
796 else if (buf[0] == 0xfa && buf[1] == 0xfe)
798 else if (buf[0] == 0xfc && buf[1] == 0xfe)
803 /* Suck in imm_size more bytes, they'll hold the size of the
805 if (!safe_frame_unwind_memory (fi, addr + 2, buf, imm_size))
806 goto finish_prologue;
808 /* Note the size of the stack. */
809 stack_extra_size -= extract_signed_integer (buf, imm_size);
811 /* We just consumed 2 + imm_size bytes. */
812 addr += 2 + imm_size;
814 /* No more prologue insns follow, so begin preparation to return. */
815 goto finish_prologue;
817 /* Do the essentials and get out of here. */
819 /* Note if/where callee saved registers were saved. */
821 set_reg_offsets (fi, this_cache, movm_args, fpregmask, stack_extra_size, frame_in_fp);
825 /* Function: skip_prologue
826 Return the address of the first inst past the prologue of the function. */
829 mn10300_skip_prologue (CORE_ADDR pc)
831 return mn10300_analyze_prologue (NULL, NULL, pc);
834 /* Simple frame_unwind_cache.
835 This finds the "extra info" for the frame. */
836 struct trad_frame_cache *
837 mn10300_frame_unwind_cache (struct frame_info *next_frame,
838 void **this_prologue_cache)
840 struct trad_frame_cache *cache;
841 CORE_ADDR pc, start, end;
843 if (*this_prologue_cache)
844 return (*this_prologue_cache);
846 cache = trad_frame_cache_zalloc (next_frame);
847 pc = gdbarch_unwind_pc (get_frame_arch (next_frame), next_frame);
848 mn10300_analyze_prologue (next_frame, (void **) &cache, pc);
849 if (find_pc_partial_function (pc, NULL, &start, &end))
850 trad_frame_set_id (cache,
851 frame_id_build (trad_frame_get_this_base (cache),
855 start = frame_func_unwind (next_frame, NORMAL_FRAME);
856 trad_frame_set_id (cache,
857 frame_id_build (trad_frame_get_this_base (cache),
861 (*this_prologue_cache) = cache;
865 /* Here is a dummy implementation. */
866 static struct frame_id
867 mn10300_unwind_dummy_id (struct gdbarch *gdbarch,
868 struct frame_info *next_frame)
870 return frame_id_build (frame_sp_unwind (next_frame),
871 frame_pc_unwind (next_frame));
874 /* Trad frame implementation. */
876 mn10300_frame_this_id (struct frame_info *next_frame,
877 void **this_prologue_cache,
878 struct frame_id *this_id)
880 struct trad_frame_cache *cache =
881 mn10300_frame_unwind_cache (next_frame, this_prologue_cache);
883 trad_frame_get_id (cache, this_id);
887 mn10300_frame_prev_register (struct frame_info *next_frame,
888 void **this_prologue_cache,
889 int regnum, int *optimizedp,
890 enum lval_type *lvalp, CORE_ADDR *addrp,
891 int *realnump, gdb_byte *bufferp)
893 struct trad_frame_cache *cache =
894 mn10300_frame_unwind_cache (next_frame, this_prologue_cache);
896 trad_frame_get_register (cache, next_frame, regnum, optimizedp,
897 lvalp, addrp, realnump, bufferp);
899 trad_frame_get_prev_register (next_frame, cache->prev_regs, regnum,
900 optimizedp, lvalp, addrp, realnump, bufferp);
904 static const struct frame_unwind mn10300_frame_unwind = {
906 mn10300_frame_this_id,
907 mn10300_frame_prev_register
911 mn10300_frame_base_address (struct frame_info *next_frame,
912 void **this_prologue_cache)
914 struct trad_frame_cache *cache =
915 mn10300_frame_unwind_cache (next_frame, this_prologue_cache);
917 return trad_frame_get_this_base (cache);
920 static const struct frame_unwind *
921 mn10300_frame_sniffer (struct frame_info *next_frame)
923 return &mn10300_frame_unwind;
926 static const struct frame_base mn10300_frame_base = {
927 &mn10300_frame_unwind,
928 mn10300_frame_base_address,
929 mn10300_frame_base_address,
930 mn10300_frame_base_address
934 mn10300_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
938 pc = frame_unwind_register_unsigned (next_frame, E_PC_REGNUM);
943 mn10300_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame)
947 sp = frame_unwind_register_unsigned (next_frame, E_SP_REGNUM);
952 mn10300_frame_unwind_init (struct gdbarch *gdbarch)
954 frame_unwind_append_sniffer (gdbarch, dwarf2_frame_sniffer);
955 frame_unwind_append_sniffer (gdbarch, mn10300_frame_sniffer);
956 frame_base_set_default (gdbarch, &mn10300_frame_base);
957 set_gdbarch_unwind_dummy_id (gdbarch, mn10300_unwind_dummy_id);
958 set_gdbarch_unwind_pc (gdbarch, mn10300_unwind_pc);
959 set_gdbarch_unwind_sp (gdbarch, mn10300_unwind_sp);
962 /* Function: push_dummy_call
964 * Set up machine state for a target call, including
965 * function arguments, stack, return address, etc.
970 mn10300_push_dummy_call (struct gdbarch *gdbarch,
971 struct value *target_func,
972 struct regcache *regcache,
974 int nargs, struct value **args,
977 CORE_ADDR struct_addr)
979 const int push_size = register_size (gdbarch, E_PC_REGNUM);
982 int stack_offset = 0;
984 char *val, valbuf[MAX_REGISTER_SIZE];
986 /* This should be a nop, but align the stack just in case something
987 went wrong. Stacks are four byte aligned on the mn10300. */
990 /* Now make space on the stack for the args.
992 XXX This doesn't appear to handle pass-by-invisible reference
994 regs_used = struct_return ? 1 : 0;
995 for (len = 0, argnum = 0; argnum < nargs; argnum++)
997 arg_len = (TYPE_LENGTH (value_type (args[argnum])) + 3) & ~3;
998 while (regs_used < 2 && arg_len > 0)
1001 arg_len -= push_size;
1006 /* Allocate stack space. */
1012 regcache_cooked_write_unsigned (regcache, E_D0_REGNUM, struct_addr);
1017 /* Push all arguments onto the stack. */
1018 for (argnum = 0; argnum < nargs; argnum++)
1020 /* FIXME what about structs? Unions? */
1021 if (TYPE_CODE (value_type (*args)) == TYPE_CODE_STRUCT
1022 && TYPE_LENGTH (value_type (*args)) > 8)
1024 /* Change to pointer-to-type. */
1025 arg_len = push_size;
1026 store_unsigned_integer (valbuf, push_size,
1027 VALUE_ADDRESS (*args));
1032 arg_len = TYPE_LENGTH (value_type (*args));
1033 val = (char *) value_contents (*args);
1036 while (regs_used < 2 && arg_len > 0)
1038 regcache_cooked_write_unsigned (regcache, regs_used,
1039 extract_unsigned_integer (val, push_size));
1041 arg_len -= push_size;
1047 write_memory (sp + stack_offset, val, push_size);
1048 arg_len -= push_size;
1050 stack_offset += push_size;
1056 /* Make space for the flushback area. */
1059 /* Push the return address that contains the magic breakpoint. */
1061 write_memory_unsigned_integer (sp, push_size, bp_addr);
1063 /* The CPU also writes the return address always into the
1064 MDR register on "call". */
1065 regcache_cooked_write_unsigned (regcache, E_MDR_REGNUM, bp_addr);
1068 regcache_cooked_write_unsigned (regcache, E_SP_REGNUM, sp);
1072 /* If DWARF2 is a register number appearing in Dwarf2 debug info, then
1073 mn10300_dwarf2_reg_to_regnum (DWARF2) is the corresponding GDB
1074 register number. Why don't Dwarf2 and GDB use the same numbering?
1075 Who knows? But since people have object files lying around with
1076 the existing Dwarf2 numbering, and other people have written stubs
1077 to work with the existing GDB, neither of them can change. So we
1078 just have to cope. */
1080 mn10300_dwarf2_reg_to_regnum (int dwarf2)
1082 /* This table is supposed to be shaped like the gdbarch_register_name
1083 initializer in gcc/config/mn10300/mn10300.h. Registers which
1084 appear in GCC's numbering, but have no counterpart in GDB's
1085 world, are marked with a -1. */
1086 static int dwarf2_to_gdb[] = {
1087 0, 1, 2, 3, 4, 5, 6, 7, -1, 8,
1088 15, 16, 17, 18, 19, 20, 21, 22,
1089 32, 33, 34, 35, 36, 37, 38, 39,
1090 40, 41, 42, 43, 44, 45, 46, 47,
1091 48, 49, 50, 51, 52, 53, 54, 55,
1092 56, 57, 58, 59, 60, 61, 62, 63,
1097 || dwarf2 >= ARRAY_SIZE (dwarf2_to_gdb))
1099 warning (_("Bogus register number in debug info: %d"), dwarf2);
1103 return dwarf2_to_gdb[dwarf2];
1106 static struct gdbarch *
1107 mn10300_gdbarch_init (struct gdbarch_info info,
1108 struct gdbarch_list *arches)
1110 struct gdbarch *gdbarch;
1111 struct gdbarch_tdep *tdep;
1114 arches = gdbarch_list_lookup_by_info (arches, &info);
1116 return arches->gdbarch;
1118 tdep = xmalloc (sizeof (struct gdbarch_tdep));
1119 gdbarch = gdbarch_alloc (&info, tdep);
1121 switch (info.bfd_arch_info->mach)
1124 case bfd_mach_mn10300:
1125 set_gdbarch_register_name (gdbarch, mn10300_generic_register_name);
1126 tdep->am33_mode = 0;
1130 set_gdbarch_register_name (gdbarch, am33_register_name);
1131 tdep->am33_mode = 1;
1134 case bfd_mach_am33_2:
1135 set_gdbarch_register_name (gdbarch, am33_2_register_name);
1136 tdep->am33_mode = 2;
1138 set_gdbarch_fp0_regnum (gdbarch, 32);
1141 internal_error (__FILE__, __LINE__,
1142 _("mn10300_gdbarch_init: Unknown mn10300 variant"));
1147 set_gdbarch_num_regs (gdbarch, num_regs);
1148 set_gdbarch_register_type (gdbarch, mn10300_register_type);
1149 set_gdbarch_skip_prologue (gdbarch, mn10300_skip_prologue);
1150 set_gdbarch_read_pc (gdbarch, mn10300_read_pc);
1151 set_gdbarch_write_pc (gdbarch, mn10300_write_pc);
1152 set_gdbarch_pc_regnum (gdbarch, E_PC_REGNUM);
1153 set_gdbarch_sp_regnum (gdbarch, E_SP_REGNUM);
1154 set_gdbarch_dwarf2_reg_to_regnum (gdbarch, mn10300_dwarf2_reg_to_regnum);
1156 /* Stack unwinding. */
1157 set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
1159 set_gdbarch_breakpoint_from_pc (gdbarch, mn10300_breakpoint_from_pc);
1160 /* decr_pc_after_break? */
1162 set_gdbarch_print_insn (gdbarch, print_insn_mn10300);
1165 set_gdbarch_return_value (gdbarch, mn10300_return_value);
1167 /* Stage 3 -- get target calls working. */
1168 set_gdbarch_push_dummy_call (gdbarch, mn10300_push_dummy_call);
1169 /* set_gdbarch_return_value (store, extract) */
1172 mn10300_frame_unwind_init (gdbarch);
1174 /* Hook in ABI-specific overrides, if they have been registered. */
1175 gdbarch_init_osabi (info, gdbarch);
1180 /* Dump out the mn10300 specific architecture information. */
1183 mn10300_dump_tdep (struct gdbarch *gdbarch, struct ui_file *file)
1185 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1186 fprintf_unfiltered (file, "mn10300_dump_tdep: am33_mode = %d\n",
1191 _initialize_mn10300_tdep (void)
1193 gdbarch_register (bfd_arch_mn10300, mn10300_gdbarch_init, mn10300_dump_tdep);