1 /* Target-dependent code for the Matsushita MN10300 for GDB, the GNU debugger.
3 Copyright (C) 1996-2014 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"
26 #include "gdb_assert.h"
27 #include "gdbcore.h" /* For write_memory_unsigned_integer. */
30 #include "frame-unwind.h"
31 #include "frame-base.h"
33 #include "dwarf2-frame.h"
36 #include "prologue-value.h"
39 #include "mn10300-tdep.h"
42 /* The am33-2 has 64 registers. */
43 #define MN10300_MAX_NUM_REGS 64
45 /* This structure holds the results of a prologue analysis. */
46 struct mn10300_prologue
48 /* The architecture for which we generated this prologue info. */
49 struct gdbarch
*gdbarch
;
51 /* The offset from the frame base to the stack pointer --- always
54 Calling this a "size" is a bit misleading, but given that the
55 stack grows downwards, using offsets for everything keeps one
56 from going completely sign-crazy: you never change anything's
57 sign for an ADD instruction; always change the second operand's
58 sign for a SUB instruction; and everything takes care of
62 /* Non-zero if this function has initialized the frame pointer from
63 the stack pointer, zero otherwise. */
66 /* If has_frame_ptr is non-zero, this is the offset from the frame
67 base to where the frame pointer points. This is always zero or
71 /* The address of the first instruction at which the frame has been
72 set up and the arguments are where the debug info says they are
73 --- as best as we can tell. */
74 CORE_ADDR prologue_end
;
76 /* reg_offset[R] is the offset from the CFA at which register R is
77 saved, or 1 if register R has not been saved. (Real values are
78 always zero or negative.) */
79 int reg_offset
[MN10300_MAX_NUM_REGS
];
83 /* Compute the alignment required by a type. */
86 mn10300_type_align (struct type
*type
)
90 switch (TYPE_CODE (type
))
101 return TYPE_LENGTH (type
);
103 case TYPE_CODE_COMPLEX
:
104 return TYPE_LENGTH (type
) / 2;
106 case TYPE_CODE_STRUCT
:
107 case TYPE_CODE_UNION
:
108 for (i
= 0; i
< TYPE_NFIELDS (type
); i
++)
110 int falign
= mn10300_type_align (TYPE_FIELD_TYPE (type
, i
));
111 while (align
< falign
)
116 case TYPE_CODE_ARRAY
:
117 /* HACK! Structures containing arrays, even small ones, are not
118 elligible for returning in registers. */
121 case TYPE_CODE_TYPEDEF
:
122 return mn10300_type_align (check_typedef (type
));
125 internal_error (__FILE__
, __LINE__
, _("bad switch"));
129 /* Should call_function allocate stack space for a struct return? */
131 mn10300_use_struct_convention (struct type
*type
)
133 /* Structures bigger than a pair of words can't be returned in
135 if (TYPE_LENGTH (type
) > 8)
138 switch (TYPE_CODE (type
))
140 case TYPE_CODE_STRUCT
:
141 case TYPE_CODE_UNION
:
142 /* Structures with a single field are handled as the field
144 if (TYPE_NFIELDS (type
) == 1)
145 return mn10300_use_struct_convention (TYPE_FIELD_TYPE (type
, 0));
147 /* Structures with word or double-word size are passed in memory, as
148 long as they require at least word alignment. */
149 if (mn10300_type_align (type
) >= 4)
154 /* Arrays are addressable, so they're never returned in
155 registers. This condition can only hold when the array is
156 the only field of a struct or union. */
157 case TYPE_CODE_ARRAY
:
160 case TYPE_CODE_TYPEDEF
:
161 return mn10300_use_struct_convention (check_typedef (type
));
169 mn10300_store_return_value (struct gdbarch
*gdbarch
, struct type
*type
,
170 struct regcache
*regcache
, const gdb_byte
*valbuf
)
172 int len
= TYPE_LENGTH (type
);
175 if (TYPE_CODE (type
) == TYPE_CODE_PTR
)
180 regsz
= register_size (gdbarch
, reg
);
183 regcache_raw_write_part (regcache
, reg
, 0, len
, valbuf
);
184 else if (len
<= 2 * regsz
)
186 regcache_raw_write (regcache
, reg
, valbuf
);
187 gdb_assert (regsz
== register_size (gdbarch
, reg
+ 1));
188 regcache_raw_write_part (regcache
, reg
+1, 0,
189 len
- regsz
, valbuf
+ regsz
);
192 internal_error (__FILE__
, __LINE__
,
193 _("Cannot store return value %d bytes long."), len
);
197 mn10300_extract_return_value (struct gdbarch
*gdbarch
, struct type
*type
,
198 struct regcache
*regcache
, void *valbuf
)
200 gdb_byte buf
[MAX_REGISTER_SIZE
];
201 int len
= TYPE_LENGTH (type
);
204 if (TYPE_CODE (type
) == TYPE_CODE_PTR
)
209 regsz
= register_size (gdbarch
, reg
);
212 regcache_raw_read (regcache
, reg
, buf
);
213 memcpy (valbuf
, buf
, len
);
215 else if (len
<= 2 * regsz
)
217 regcache_raw_read (regcache
, reg
, buf
);
218 memcpy (valbuf
, buf
, regsz
);
219 gdb_assert (regsz
== register_size (gdbarch
, reg
+ 1));
220 regcache_raw_read (regcache
, reg
+ 1, buf
);
221 memcpy ((char *) valbuf
+ regsz
, buf
, len
- regsz
);
224 internal_error (__FILE__
, __LINE__
,
225 _("Cannot extract return value %d bytes long."), len
);
228 /* Determine, for architecture GDBARCH, how a return value of TYPE
229 should be returned. If it is supposed to be returned in registers,
230 and READBUF is non-zero, read the appropriate value from REGCACHE,
231 and copy it into READBUF. If WRITEBUF is non-zero, write the value
232 from WRITEBUF into REGCACHE. */
234 static enum return_value_convention
235 mn10300_return_value (struct gdbarch
*gdbarch
, struct value
*function
,
236 struct type
*type
, struct regcache
*regcache
,
237 gdb_byte
*readbuf
, const gdb_byte
*writebuf
)
239 if (mn10300_use_struct_convention (type
))
240 return RETURN_VALUE_STRUCT_CONVENTION
;
243 mn10300_extract_return_value (gdbarch
, type
, regcache
, readbuf
);
245 mn10300_store_return_value (gdbarch
, type
, regcache
, writebuf
);
247 return RETURN_VALUE_REGISTER_CONVENTION
;
251 register_name (int reg
, char **regs
, long sizeof_regs
)
253 if (reg
< 0 || reg
>= sizeof_regs
/ sizeof (regs
[0]))
260 mn10300_generic_register_name (struct gdbarch
*gdbarch
, int reg
)
262 static char *regs
[] =
263 { "d0", "d1", "d2", "d3", "a0", "a1", "a2", "a3",
264 "sp", "pc", "mdr", "psw", "lir", "lar", "", "",
265 "", "", "", "", "", "", "", "",
266 "", "", "", "", "", "", "", "fp"
268 return register_name (reg
, regs
, sizeof regs
);
273 am33_register_name (struct gdbarch
*gdbarch
, int reg
)
275 static char *regs
[] =
276 { "d0", "d1", "d2", "d3", "a0", "a1", "a2", "a3",
277 "sp", "pc", "mdr", "psw", "lir", "lar", "",
278 "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
279 "ssp", "msp", "usp", "mcrh", "mcrl", "mcvf", "", "", ""
281 return register_name (reg
, regs
, sizeof regs
);
285 am33_2_register_name (struct gdbarch
*gdbarch
, int reg
)
287 static char *regs
[] =
289 "d0", "d1", "d2", "d3", "a0", "a1", "a2", "a3",
290 "sp", "pc", "mdr", "psw", "lir", "lar", "mdrq", "r0",
291 "r1", "r2", "r3", "r4", "r5", "r6", "r7", "ssp",
292 "msp", "usp", "mcrh", "mcrl", "mcvf", "fpcr", "", "",
293 "fs0", "fs1", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7",
294 "fs8", "fs9", "fs10", "fs11", "fs12", "fs13", "fs14", "fs15",
295 "fs16", "fs17", "fs18", "fs19", "fs20", "fs21", "fs22", "fs23",
296 "fs24", "fs25", "fs26", "fs27", "fs28", "fs29", "fs30", "fs31"
298 return register_name (reg
, regs
, sizeof regs
);
302 mn10300_register_type (struct gdbarch
*gdbarch
, int reg
)
304 return builtin_type (gdbarch
)->builtin_int
;
308 mn10300_read_pc (struct regcache
*regcache
)
311 regcache_cooked_read_unsigned (regcache
, E_PC_REGNUM
, &val
);
316 mn10300_write_pc (struct regcache
*regcache
, CORE_ADDR val
)
318 regcache_cooked_write_unsigned (regcache
, E_PC_REGNUM
, val
);
321 /* The breakpoint instruction must be the same size as the smallest
322 instruction in the instruction set.
324 The Matsushita mn10x00 processors have single byte instructions
325 so we need a single byte breakpoint. Matsushita hasn't defined
326 one, so we defined it ourselves. */
328 static const unsigned char *
329 mn10300_breakpoint_from_pc (struct gdbarch
*gdbarch
, CORE_ADDR
*bp_addr
,
332 static gdb_byte breakpoint
[] = {0xff};
337 /* Model the semantics of pushing a register onto the stack. This
338 is a helper function for mn10300_analyze_prologue, below. */
340 push_reg (pv_t
*regs
, struct pv_area
*stack
, int regnum
)
342 regs
[E_SP_REGNUM
] = pv_add_constant (regs
[E_SP_REGNUM
], -4);
343 pv_area_store (stack
, regs
[E_SP_REGNUM
], 4, regs
[regnum
]);
346 /* Translate an "r" register number extracted from an instruction encoding
347 into a GDB register number. Adapted from a simulator function
348 of the same name; see am33.igen. */
350 translate_rreg (int rreg
)
352 /* The higher register numbers actually correspond to the
353 basic machine's address and data registers. */
354 if (rreg
> 7 && rreg
< 12)
355 return E_A0_REGNUM
+ rreg
- 8;
356 else if (rreg
> 11 && rreg
< 16)
357 return E_D0_REGNUM
+ rreg
- 12;
359 return E_E0_REGNUM
+ rreg
;
362 /* Find saved registers in a 'struct pv_area'; we pass this to pv_area_scan.
364 If VALUE is a saved register, ADDR says it was saved at a constant
365 offset from the frame base, and SIZE indicates that the whole
366 register was saved, record its offset in RESULT_UNTYPED. */
368 check_for_saved (void *result_untyped
, pv_t addr
, CORE_ADDR size
, pv_t value
)
370 struct mn10300_prologue
*result
= (struct mn10300_prologue
*) result_untyped
;
372 if (value
.kind
== pvk_register
374 && pv_is_register (addr
, E_SP_REGNUM
)
375 && size
== register_size (result
->gdbarch
, value
.reg
))
376 result
->reg_offset
[value
.reg
] = addr
.k
;
379 /* Analyze the prologue to determine where registers are saved,
380 the end of the prologue, etc. The result of this analysis is
381 returned in RESULT. See struct mn10300_prologue above for more
384 mn10300_analyze_prologue (struct gdbarch
*gdbarch
,
385 CORE_ADDR start_pc
, CORE_ADDR limit_pc
,
386 struct mn10300_prologue
*result
)
388 enum bfd_endian byte_order
= gdbarch_byte_order (gdbarch
);
391 pv_t regs
[MN10300_MAX_NUM_REGS
];
392 struct pv_area
*stack
;
393 struct cleanup
*back_to
;
394 CORE_ADDR after_last_frame_setup_insn
= start_pc
;
395 int am33_mode
= AM33_MODE (gdbarch
);
397 memset (result
, 0, sizeof (*result
));
398 result
->gdbarch
= gdbarch
;
400 for (rn
= 0; rn
< MN10300_MAX_NUM_REGS
; rn
++)
402 regs
[rn
] = pv_register (rn
, 0);
403 result
->reg_offset
[rn
] = 1;
405 stack
= make_pv_area (E_SP_REGNUM
, gdbarch_addr_bit (gdbarch
));
406 back_to
= make_cleanup_free_pv_area (stack
);
408 /* The typical call instruction will have saved the return address on the
409 stack. Space for the return address has already been preallocated in
410 the caller's frame. It's possible, such as when using -mrelax with gcc
411 that other registers were saved as well. If this happens, we really
412 have no chance of deciphering the frame. DWARF info can save the day
413 when this happens. */
414 pv_area_store (stack
, regs
[E_SP_REGNUM
], 4, regs
[E_PC_REGNUM
]);
417 while (pc
< limit_pc
)
422 /* Instructions can be as small as one byte; however, we usually
423 need at least two bytes to do the decoding, so fetch that many
425 status
= target_read_memory (pc
, instr
, 2);
429 /* movm [regs], sp */
430 if (instr
[0] == 0xcf)
434 save_mask
= instr
[1];
436 if ((save_mask
& movm_exreg0_bit
) && am33_mode
)
438 push_reg (regs
, stack
, E_E2_REGNUM
);
439 push_reg (regs
, stack
, E_E3_REGNUM
);
441 if ((save_mask
& movm_exreg1_bit
) && am33_mode
)
443 push_reg (regs
, stack
, E_E4_REGNUM
);
444 push_reg (regs
, stack
, E_E5_REGNUM
);
445 push_reg (regs
, stack
, E_E6_REGNUM
);
446 push_reg (regs
, stack
, E_E7_REGNUM
);
448 if ((save_mask
& movm_exother_bit
) && am33_mode
)
450 push_reg (regs
, stack
, E_E0_REGNUM
);
451 push_reg (regs
, stack
, E_E1_REGNUM
);
452 push_reg (regs
, stack
, E_MDRQ_REGNUM
);
453 push_reg (regs
, stack
, E_MCRH_REGNUM
);
454 push_reg (regs
, stack
, E_MCRL_REGNUM
);
455 push_reg (regs
, stack
, E_MCVF_REGNUM
);
457 if (save_mask
& movm_d2_bit
)
458 push_reg (regs
, stack
, E_D2_REGNUM
);
459 if (save_mask
& movm_d3_bit
)
460 push_reg (regs
, stack
, E_D3_REGNUM
);
461 if (save_mask
& movm_a2_bit
)
462 push_reg (regs
, stack
, E_A2_REGNUM
);
463 if (save_mask
& movm_a3_bit
)
464 push_reg (regs
, stack
, E_A3_REGNUM
);
465 if (save_mask
& movm_other_bit
)
467 push_reg (regs
, stack
, E_D0_REGNUM
);
468 push_reg (regs
, stack
, E_D1_REGNUM
);
469 push_reg (regs
, stack
, E_A0_REGNUM
);
470 push_reg (regs
, stack
, E_A1_REGNUM
);
471 push_reg (regs
, stack
, E_MDR_REGNUM
);
472 push_reg (regs
, stack
, E_LIR_REGNUM
);
473 push_reg (regs
, stack
, E_LAR_REGNUM
);
474 /* The `other' bit leaves a blank area of four bytes at
475 the beginning of its block of saved registers, making
476 it 32 bytes long in total. */
477 regs
[E_SP_REGNUM
] = pv_add_constant (regs
[E_SP_REGNUM
], -4);
481 after_last_frame_setup_insn
= pc
;
484 else if ((instr
[0] & 0xfc) == 0x3c)
486 int aN
= instr
[0] & 0x03;
488 regs
[E_A0_REGNUM
+ aN
] = regs
[E_SP_REGNUM
];
492 after_last_frame_setup_insn
= pc
;
495 else if ((instr
[0] & 0xf0) == 0x90
496 && (instr
[0] & 0x03) != ((instr
[0] & 0x0c) >> 2))
498 int aN
= instr
[0] & 0x03;
499 int aM
= (instr
[0] & 0x0c) >> 2;
501 regs
[E_A0_REGNUM
+ aN
] = regs
[E_A0_REGNUM
+ aM
];
506 else if ((instr
[0] & 0xf0) == 0x80
507 && (instr
[0] & 0x03) != ((instr
[0] & 0x0c) >> 2))
509 int dN
= instr
[0] & 0x03;
510 int dM
= (instr
[0] & 0x0c) >> 2;
512 regs
[E_D0_REGNUM
+ dN
] = regs
[E_D0_REGNUM
+ dM
];
517 else if (instr
[0] == 0xf1 && (instr
[1] & 0xf0) == 0xd0)
519 int dN
= instr
[1] & 0x03;
520 int aM
= (instr
[1] & 0x0c) >> 2;
522 regs
[E_D0_REGNUM
+ dN
] = regs
[E_A0_REGNUM
+ aM
];
527 else if (instr
[0] == 0xf1 && (instr
[1] & 0xf0) == 0xe0)
529 int aN
= instr
[1] & 0x03;
530 int dM
= (instr
[1] & 0x0c) >> 2;
532 regs
[E_A0_REGNUM
+ aN
] = regs
[E_D0_REGNUM
+ dM
];
537 else if (instr
[0] == 0xf8 && instr
[1] == 0xfe)
543 status
= target_read_memory (pc
+ 2, buf
, 1);
547 imm8
= extract_signed_integer (buf
, 1, byte_order
);
548 regs
[E_SP_REGNUM
] = pv_add_constant (regs
[E_SP_REGNUM
], imm8
);
551 /* Stack pointer adjustments are frame related. */
552 after_last_frame_setup_insn
= pc
;
555 else if (instr
[0] == 0xfa && instr
[1] == 0xfe)
560 status
= target_read_memory (pc
+ 2, buf
, 2);
564 imm16
= extract_signed_integer (buf
, 2, byte_order
);
565 regs
[E_SP_REGNUM
] = pv_add_constant (regs
[E_SP_REGNUM
], imm16
);
568 /* Stack pointer adjustments are frame related. */
569 after_last_frame_setup_insn
= pc
;
572 else if (instr
[0] == 0xfc && instr
[1] == 0xfe)
577 status
= target_read_memory (pc
+ 2, buf
, 4);
582 imm32
= extract_signed_integer (buf
, 4, byte_order
);
583 regs
[E_SP_REGNUM
] = pv_add_constant (regs
[E_SP_REGNUM
], imm32
);
586 /* Stack pointer adjustments are frame related. */
587 after_last_frame_setup_insn
= pc
;
590 else if ((instr
[0] & 0xfc) == 0x20)
595 aN
= instr
[0] & 0x03;
596 imm8
= extract_signed_integer (&instr
[1], 1, byte_order
);
598 regs
[E_A0_REGNUM
+ aN
] = pv_add_constant (regs
[E_A0_REGNUM
+ aN
],
604 else if (instr
[0] == 0xfa && (instr
[1] & 0xfc) == 0xd0)
610 aN
= instr
[1] & 0x03;
612 status
= target_read_memory (pc
+ 2, buf
, 2);
617 imm16
= extract_signed_integer (buf
, 2, byte_order
);
619 regs
[E_A0_REGNUM
+ aN
] = pv_add_constant (regs
[E_A0_REGNUM
+ aN
],
625 else if (instr
[0] == 0xfc && (instr
[1] & 0xfc) == 0xd0)
631 aN
= instr
[1] & 0x03;
633 status
= target_read_memory (pc
+ 2, buf
, 4);
637 imm32
= extract_signed_integer (buf
, 2, byte_order
);
639 regs
[E_A0_REGNUM
+ aN
] = pv_add_constant (regs
[E_A0_REGNUM
+ aN
],
644 else if (instr
[0] == 0xf9 && (instr
[1] & 0xfd) == 0x30)
649 Y
= (instr
[1] & 0x02) >> 1;
651 status
= target_read_memory (pc
+ 2, buf
, 1);
655 sM
= (buf
[0] & 0xf0) >> 4;
659 pv_area_store (stack
, regs
[translate_rreg (rN
)], 4,
660 regs
[E_FS0_REGNUM
+ fsM
]);
665 else if (instr
[0] == 0xf9 && (instr
[1] & 0xfd) == 0x34)
670 Y
= (instr
[1] & 0x02) >> 1;
672 status
= target_read_memory (pc
+ 2, buf
, 1);
676 sM
= (buf
[0] & 0xf0) >> 4;
679 pv_area_store (stack
, regs
[E_SP_REGNUM
], 4,
680 regs
[E_FS0_REGNUM
+ fsM
]);
684 /* fmov fsM, (rN, rI) */
685 else if (instr
[0] == 0xfb && instr
[1] == 0x37)
687 int fsM
, sM
, Z
, rN
, rI
;
691 status
= target_read_memory (pc
+ 2, buf
, 2);
695 rI
= (buf
[0] & 0xf0) >> 4;
697 sM
= (buf
[1] & 0xf0) >> 4;
698 Z
= (buf
[1] & 0x02) >> 1;
701 pv_area_store (stack
,
702 pv_add (regs
[translate_rreg (rN
)],
703 regs
[translate_rreg (rI
)]),
704 4, regs
[E_FS0_REGNUM
+ fsM
]);
708 /* fmov fsM, (d8, rN) */
709 else if (instr
[0] == 0xfb && (instr
[1] & 0xfd) == 0x30)
715 Y
= (instr
[1] & 0x02) >> 1;
717 status
= target_read_memory (pc
+ 2, buf
, 2);
721 sM
= (buf
[0] & 0xf0) >> 4;
724 d8
= extract_signed_integer (&buf
[1], 1, byte_order
);
726 pv_area_store (stack
,
727 pv_add_constant (regs
[translate_rreg (rN
)], d8
),
728 4, regs
[E_FS0_REGNUM
+ fsM
]);
732 /* fmov fsM, (d24, rN) */
733 else if (instr
[0] == 0xfd && (instr
[1] & 0xfd) == 0x30)
739 Y
= (instr
[1] & 0x02) >> 1;
741 status
= target_read_memory (pc
+ 2, buf
, 4);
745 sM
= (buf
[0] & 0xf0) >> 4;
748 d24
= extract_signed_integer (&buf
[1], 3, byte_order
);
750 pv_area_store (stack
,
751 pv_add_constant (regs
[translate_rreg (rN
)], d24
),
752 4, regs
[E_FS0_REGNUM
+ fsM
]);
756 /* fmov fsM, (d32, rN) */
757 else if (instr
[0] == 0xfe && (instr
[1] & 0xfd) == 0x30)
763 Y
= (instr
[1] & 0x02) >> 1;
765 status
= target_read_memory (pc
+ 2, buf
, 5);
769 sM
= (buf
[0] & 0xf0) >> 4;
772 d32
= extract_signed_integer (&buf
[1], 4, byte_order
);
774 pv_area_store (stack
,
775 pv_add_constant (regs
[translate_rreg (rN
)], d32
),
776 4, regs
[E_FS0_REGNUM
+ fsM
]);
780 /* fmov fsM, (d8, SP) */
781 else if (instr
[0] == 0xfb && (instr
[1] & 0xfd) == 0x34)
787 Y
= (instr
[1] & 0x02) >> 1;
789 status
= target_read_memory (pc
+ 2, buf
, 2);
793 sM
= (buf
[0] & 0xf0) >> 4;
795 d8
= extract_signed_integer (&buf
[1], 1, byte_order
);
797 pv_area_store (stack
,
798 pv_add_constant (regs
[E_SP_REGNUM
], d8
),
799 4, regs
[E_FS0_REGNUM
+ fsM
]);
803 /* fmov fsM, (d24, SP) */
804 else if (instr
[0] == 0xfd && (instr
[1] & 0xfd) == 0x34)
810 Y
= (instr
[1] & 0x02) >> 1;
812 status
= target_read_memory (pc
+ 2, buf
, 4);
816 sM
= (buf
[0] & 0xf0) >> 4;
818 d24
= extract_signed_integer (&buf
[1], 3, byte_order
);
820 pv_area_store (stack
,
821 pv_add_constant (regs
[E_SP_REGNUM
], d24
),
822 4, regs
[E_FS0_REGNUM
+ fsM
]);
826 /* fmov fsM, (d32, SP) */
827 else if (instr
[0] == 0xfe && (instr
[1] & 0xfd) == 0x34)
833 Y
= (instr
[1] & 0x02) >> 1;
835 status
= target_read_memory (pc
+ 2, buf
, 5);
839 sM
= (buf
[0] & 0xf0) >> 4;
841 d32
= extract_signed_integer (&buf
[1], 4, byte_order
);
843 pv_area_store (stack
,
844 pv_add_constant (regs
[E_SP_REGNUM
], d32
),
845 4, regs
[E_FS0_REGNUM
+ fsM
]);
849 /* fmov fsM, (rN+) */
850 else if (instr
[0] == 0xf9 && (instr
[1] & 0xfd) == 0x31)
852 int fsM
, sM
, Y
, rN
, rN_regnum
;
855 Y
= (instr
[1] & 0x02) >> 1;
857 status
= target_read_memory (pc
+ 2, buf
, 1);
861 sM
= (buf
[0] & 0xf0) >> 4;
865 rN_regnum
= translate_rreg (rN
);
867 pv_area_store (stack
, regs
[rN_regnum
], 4,
868 regs
[E_FS0_REGNUM
+ fsM
]);
869 regs
[rN_regnum
] = pv_add_constant (regs
[rN_regnum
], 4);
873 /* fmov fsM, (rN+, imm8) */
874 else if (instr
[0] == 0xfb && (instr
[1] & 0xfd) == 0x31)
876 int fsM
, sM
, Y
, rN
, rN_regnum
;
880 Y
= (instr
[1] & 0x02) >> 1;
882 status
= target_read_memory (pc
+ 2, buf
, 2);
886 sM
= (buf
[0] & 0xf0) >> 4;
889 imm8
= extract_signed_integer (&buf
[1], 1, byte_order
);
891 rN_regnum
= translate_rreg (rN
);
893 pv_area_store (stack
, regs
[rN_regnum
], 4, regs
[E_FS0_REGNUM
+ fsM
]);
894 regs
[rN_regnum
] = pv_add_constant (regs
[rN_regnum
], imm8
);
898 /* fmov fsM, (rN+, imm24) */
899 else if (instr
[0] == 0xfd && (instr
[1] & 0xfd) == 0x31)
901 int fsM
, sM
, Y
, rN
, rN_regnum
;
905 Y
= (instr
[1] & 0x02) >> 1;
907 status
= target_read_memory (pc
+ 2, buf
, 4);
911 sM
= (buf
[0] & 0xf0) >> 4;
914 imm24
= extract_signed_integer (&buf
[1], 3, byte_order
);
916 rN_regnum
= translate_rreg (rN
);
918 pv_area_store (stack
, regs
[rN_regnum
], 4, regs
[E_FS0_REGNUM
+ fsM
]);
919 regs
[rN_regnum
] = pv_add_constant (regs
[rN_regnum
], imm24
);
923 /* fmov fsM, (rN+, imm32) */
924 else if (instr
[0] == 0xfe && (instr
[1] & 0xfd) == 0x31)
926 int fsM
, sM
, Y
, rN
, rN_regnum
;
930 Y
= (instr
[1] & 0x02) >> 1;
932 status
= target_read_memory (pc
+ 2, buf
, 5);
936 sM
= (buf
[0] & 0xf0) >> 4;
939 imm32
= extract_signed_integer (&buf
[1], 4, byte_order
);
941 rN_regnum
= translate_rreg (rN
);
943 pv_area_store (stack
, regs
[rN_regnum
], 4, regs
[E_FS0_REGNUM
+ fsM
]);
944 regs
[rN_regnum
] = pv_add_constant (regs
[rN_regnum
], imm32
);
949 else if ((instr
[0] & 0xf0) == 0x90)
951 int aN
= instr
[0] & 0x03;
954 imm8
= extract_signed_integer (&instr
[1], 1, byte_order
);
956 regs
[E_A0_REGNUM
+ aN
] = pv_constant (imm8
);
960 else if ((instr
[0] & 0xfc) == 0x24)
962 int aN
= instr
[0] & 0x03;
966 status
= target_read_memory (pc
+ 1, buf
, 2);
970 imm16
= extract_signed_integer (buf
, 2, byte_order
);
971 regs
[E_A0_REGNUM
+ aN
] = pv_constant (imm16
);
975 else if (instr
[0] == 0xfc && ((instr
[1] & 0xfc) == 0xdc))
977 int aN
= instr
[1] & 0x03;
981 status
= target_read_memory (pc
+ 2, buf
, 4);
985 imm32
= extract_signed_integer (buf
, 4, byte_order
);
986 regs
[E_A0_REGNUM
+ aN
] = pv_constant (imm32
);
990 else if ((instr
[0] & 0xf0) == 0x80)
992 int dN
= instr
[0] & 0x03;
995 imm8
= extract_signed_integer (&instr
[1], 1, byte_order
);
997 regs
[E_D0_REGNUM
+ dN
] = pv_constant (imm8
);
1001 else if ((instr
[0] & 0xfc) == 0x2c)
1003 int dN
= instr
[0] & 0x03;
1007 status
= target_read_memory (pc
+ 1, buf
, 2);
1011 imm16
= extract_signed_integer (buf
, 2, byte_order
);
1012 regs
[E_D0_REGNUM
+ dN
] = pv_constant (imm16
);
1016 else if (instr
[0] == 0xfc && ((instr
[1] & 0xfc) == 0xcc))
1018 int dN
= instr
[1] & 0x03;
1022 status
= target_read_memory (pc
+ 2, buf
, 4);
1026 imm32
= extract_signed_integer (buf
, 4, byte_order
);
1027 regs
[E_D0_REGNUM
+ dN
] = pv_constant (imm32
);
1032 /* We've hit some instruction that we don't recognize. Hopefully,
1033 we have enough to do prologue analysis. */
1038 /* Is the frame size (offset, really) a known constant? */
1039 if (pv_is_register (regs
[E_SP_REGNUM
], E_SP_REGNUM
))
1040 result
->frame_size
= regs
[E_SP_REGNUM
].k
;
1042 /* Was the frame pointer initialized? */
1043 if (pv_is_register (regs
[E_A3_REGNUM
], E_SP_REGNUM
))
1045 result
->has_frame_ptr
= 1;
1046 result
->frame_ptr_offset
= regs
[E_A3_REGNUM
].k
;
1049 /* Record where all the registers were saved. */
1050 pv_area_scan (stack
, check_for_saved
, (void *) result
);
1052 result
->prologue_end
= after_last_frame_setup_insn
;
1054 do_cleanups (back_to
);
1057 /* Function: skip_prologue
1058 Return the address of the first inst past the prologue of the function. */
1061 mn10300_skip_prologue (struct gdbarch
*gdbarch
, CORE_ADDR pc
)
1064 CORE_ADDR func_addr
, func_end
;
1065 struct mn10300_prologue p
;
1067 /* Try to find the extent of the function that contains PC. */
1068 if (!find_pc_partial_function (pc
, &name
, &func_addr
, &func_end
))
1071 mn10300_analyze_prologue (gdbarch
, pc
, func_end
, &p
);
1072 return p
.prologue_end
;
1075 /* Wrapper for mn10300_analyze_prologue: find the function start;
1076 use the current frame PC as the limit, then
1077 invoke mn10300_analyze_prologue and return its result. */
1078 static struct mn10300_prologue
*
1079 mn10300_analyze_frame_prologue (struct frame_info
*this_frame
,
1080 void **this_prologue_cache
)
1082 if (!*this_prologue_cache
)
1084 CORE_ADDR func_start
, stop_addr
;
1086 *this_prologue_cache
= FRAME_OBSTACK_ZALLOC (struct mn10300_prologue
);
1088 func_start
= get_frame_func (this_frame
);
1089 stop_addr
= get_frame_pc (this_frame
);
1091 /* If we couldn't find any function containing the PC, then
1092 just initialize the prologue cache, but don't do anything. */
1094 stop_addr
= func_start
;
1096 mn10300_analyze_prologue (get_frame_arch (this_frame
),
1097 func_start
, stop_addr
, *this_prologue_cache
);
1100 return *this_prologue_cache
;
1103 /* Given the next frame and a prologue cache, return this frame's
1106 mn10300_frame_base (struct frame_info
*this_frame
, void **this_prologue_cache
)
1108 struct mn10300_prologue
*p
1109 = mn10300_analyze_frame_prologue (this_frame
, this_prologue_cache
);
1111 /* In functions that use alloca, the distance between the stack
1112 pointer and the frame base varies dynamically, so we can't use
1113 the SP plus static information like prologue analysis to find the
1114 frame base. However, such functions must have a frame pointer,
1115 to be able to restore the SP on exit. So whenever we do have a
1116 frame pointer, use that to find the base. */
1117 if (p
->has_frame_ptr
)
1119 CORE_ADDR fp
= get_frame_register_unsigned (this_frame
, E_A3_REGNUM
);
1120 return fp
- p
->frame_ptr_offset
;
1124 CORE_ADDR sp
= get_frame_register_unsigned (this_frame
, E_SP_REGNUM
);
1125 return sp
- p
->frame_size
;
1129 /* Here is a dummy implementation. */
1130 static struct frame_id
1131 mn10300_dummy_id (struct gdbarch
*gdbarch
, struct frame_info
*this_frame
)
1133 CORE_ADDR sp
= get_frame_register_unsigned (this_frame
, E_SP_REGNUM
);
1134 CORE_ADDR pc
= get_frame_register_unsigned (this_frame
, E_PC_REGNUM
);
1135 return frame_id_build (sp
, pc
);
1139 mn10300_frame_this_id (struct frame_info
*this_frame
,
1140 void **this_prologue_cache
,
1141 struct frame_id
*this_id
)
1143 *this_id
= frame_id_build (mn10300_frame_base (this_frame
,
1144 this_prologue_cache
),
1145 get_frame_func (this_frame
));
1149 static struct value
*
1150 mn10300_frame_prev_register (struct frame_info
*this_frame
,
1151 void **this_prologue_cache
, int regnum
)
1153 struct gdbarch_tdep
*tdep
= gdbarch_tdep (get_frame_arch (this_frame
));
1154 struct mn10300_prologue
*p
1155 = mn10300_analyze_frame_prologue (this_frame
, this_prologue_cache
);
1156 CORE_ADDR frame_base
= mn10300_frame_base (this_frame
, this_prologue_cache
);
1157 int reg_size
= register_size (get_frame_arch (this_frame
), regnum
);
1159 if (regnum
== E_SP_REGNUM
)
1160 return frame_unwind_got_constant (this_frame
, regnum
, frame_base
);
1162 /* If prologue analysis says we saved this register somewhere,
1163 return a description of the stack slot holding it. */
1164 if (p
->reg_offset
[regnum
] != 1)
1165 return frame_unwind_got_memory (this_frame
, regnum
,
1166 frame_base
+ p
->reg_offset
[regnum
]);
1168 /* Otherwise, presume we haven't changed the value of this
1169 register, and get it from the next frame. */
1170 return frame_unwind_got_register (this_frame
, regnum
, regnum
);
1173 static const struct frame_unwind mn10300_frame_unwind
= {
1175 default_frame_unwind_stop_reason
,
1176 mn10300_frame_this_id
,
1177 mn10300_frame_prev_register
,
1179 default_frame_sniffer
1183 mn10300_unwind_pc (struct gdbarch
*gdbarch
, struct frame_info
*this_frame
)
1187 pc
= frame_unwind_register_unsigned (this_frame
, E_PC_REGNUM
);
1192 mn10300_unwind_sp (struct gdbarch
*gdbarch
, struct frame_info
*this_frame
)
1196 sp
= frame_unwind_register_unsigned (this_frame
, E_SP_REGNUM
);
1201 mn10300_frame_unwind_init (struct gdbarch
*gdbarch
)
1203 dwarf2_append_unwinders (gdbarch
);
1204 frame_unwind_append_unwinder (gdbarch
, &mn10300_frame_unwind
);
1205 set_gdbarch_dummy_id (gdbarch
, mn10300_dummy_id
);
1206 set_gdbarch_unwind_pc (gdbarch
, mn10300_unwind_pc
);
1207 set_gdbarch_unwind_sp (gdbarch
, mn10300_unwind_sp
);
1210 /* Function: push_dummy_call
1212 * Set up machine state for a target call, including
1213 * function arguments, stack, return address, etc.
1218 mn10300_push_dummy_call (struct gdbarch
*gdbarch
,
1219 struct value
*target_func
,
1220 struct regcache
*regcache
,
1222 int nargs
, struct value
**args
,
1225 CORE_ADDR struct_addr
)
1227 enum bfd_endian byte_order
= gdbarch_byte_order (gdbarch
);
1228 const int push_size
= register_size (gdbarch
, E_PC_REGNUM
);
1231 int stack_offset
= 0;
1233 const gdb_byte
*val
;
1234 gdb_byte valbuf
[MAX_REGISTER_SIZE
];
1236 /* This should be a nop, but align the stack just in case something
1237 went wrong. Stacks are four byte aligned on the mn10300. */
1240 /* Now make space on the stack for the args.
1242 XXX This doesn't appear to handle pass-by-invisible reference
1244 regs_used
= struct_return
? 1 : 0;
1245 for (len
= 0, argnum
= 0; argnum
< nargs
; argnum
++)
1247 arg_len
= (TYPE_LENGTH (value_type (args
[argnum
])) + 3) & ~3;
1248 while (regs_used
< 2 && arg_len
> 0)
1251 arg_len
-= push_size
;
1256 /* Allocate stack space. */
1262 regcache_cooked_write_unsigned (regcache
, E_D0_REGNUM
, struct_addr
);
1267 /* Push all arguments onto the stack. */
1268 for (argnum
= 0; argnum
< nargs
; argnum
++)
1270 /* FIXME what about structs? Unions? */
1271 if (TYPE_CODE (value_type (*args
)) == TYPE_CODE_STRUCT
1272 && TYPE_LENGTH (value_type (*args
)) > 8)
1274 /* Change to pointer-to-type. */
1275 arg_len
= push_size
;
1276 store_unsigned_integer (valbuf
, push_size
, byte_order
,
1277 value_address (*args
));
1282 arg_len
= TYPE_LENGTH (value_type (*args
));
1283 val
= value_contents (*args
);
1286 while (regs_used
< 2 && arg_len
> 0)
1288 regcache_cooked_write_unsigned (regcache
, regs_used
,
1289 extract_unsigned_integer (val
, push_size
, byte_order
));
1291 arg_len
-= push_size
;
1297 write_memory (sp
+ stack_offset
, val
, push_size
);
1298 arg_len
-= push_size
;
1300 stack_offset
+= push_size
;
1306 /* Make space for the flushback area. */
1309 /* Push the return address that contains the magic breakpoint. */
1311 write_memory_unsigned_integer (sp
, push_size
, byte_order
, bp_addr
);
1313 /* The CPU also writes the return address always into the
1314 MDR register on "call". */
1315 regcache_cooked_write_unsigned (regcache
, E_MDR_REGNUM
, bp_addr
);
1318 regcache_cooked_write_unsigned (regcache
, E_SP_REGNUM
, sp
);
1320 /* On the mn10300, it's possible to move some of the stack adjustment
1321 and saving of the caller-save registers out of the prologue and
1322 into the call sites. (When using gcc, this optimization can
1323 occur when using the -mrelax switch.) If this occurs, the dwarf2
1324 info will reflect this fact. We can test to see if this is the
1325 case by creating a new frame using the current stack pointer and
1326 the address of the function that we're about to call. We then
1327 unwind SP and see if it's different than the SP of our newly
1328 created frame. If the SP values are the same, the caller is not
1329 expected to allocate any additional stack. On the other hand, if
1330 the SP values are different, the difference determines the
1331 additional stack that must be allocated.
1333 Note that we don't update the return value though because that's
1334 the value of the stack just after pushing the arguments, but prior
1335 to performing the call. This value is needed in order to
1336 construct the frame ID of the dummy call. */
1338 CORE_ADDR func_addr
= find_function_addr (target_func
, NULL
);
1339 CORE_ADDR unwound_sp
1340 = mn10300_unwind_sp (gdbarch
, create_new_frame (sp
, func_addr
));
1341 if (sp
!= unwound_sp
)
1342 regcache_cooked_write_unsigned (regcache
, E_SP_REGNUM
,
1343 sp
- (unwound_sp
- sp
));
1349 /* If DWARF2 is a register number appearing in Dwarf2 debug info, then
1350 mn10300_dwarf2_reg_to_regnum (DWARF2) is the corresponding GDB
1351 register number. Why don't Dwarf2 and GDB use the same numbering?
1352 Who knows? But since people have object files lying around with
1353 the existing Dwarf2 numbering, and other people have written stubs
1354 to work with the existing GDB, neither of them can change. So we
1355 just have to cope. */
1357 mn10300_dwarf2_reg_to_regnum (struct gdbarch
*gdbarch
, int dwarf2
)
1359 /* This table is supposed to be shaped like the gdbarch_register_name
1360 initializer in gcc/config/mn10300/mn10300.h. Registers which
1361 appear in GCC's numbering, but have no counterpart in GDB's
1362 world, are marked with a -1. */
1363 static int dwarf2_to_gdb
[] = {
1364 E_D0_REGNUM
, E_D1_REGNUM
, E_D2_REGNUM
, E_D3_REGNUM
,
1365 E_A0_REGNUM
, E_A1_REGNUM
, E_A2_REGNUM
, E_A3_REGNUM
,
1368 E_E0_REGNUM
, E_E1_REGNUM
, E_E2_REGNUM
, E_E3_REGNUM
,
1369 E_E4_REGNUM
, E_E5_REGNUM
, E_E6_REGNUM
, E_E7_REGNUM
,
1371 E_FS0_REGNUM
+ 0, E_FS0_REGNUM
+ 1, E_FS0_REGNUM
+ 2, E_FS0_REGNUM
+ 3,
1372 E_FS0_REGNUM
+ 4, E_FS0_REGNUM
+ 5, E_FS0_REGNUM
+ 6, E_FS0_REGNUM
+ 7,
1374 E_FS0_REGNUM
+ 8, E_FS0_REGNUM
+ 9, E_FS0_REGNUM
+ 10, E_FS0_REGNUM
+ 11,
1375 E_FS0_REGNUM
+ 12, E_FS0_REGNUM
+ 13, E_FS0_REGNUM
+ 14, E_FS0_REGNUM
+ 15,
1377 E_FS0_REGNUM
+ 16, E_FS0_REGNUM
+ 17, E_FS0_REGNUM
+ 18, E_FS0_REGNUM
+ 19,
1378 E_FS0_REGNUM
+ 20, E_FS0_REGNUM
+ 21, E_FS0_REGNUM
+ 22, E_FS0_REGNUM
+ 23,
1380 E_FS0_REGNUM
+ 24, E_FS0_REGNUM
+ 25, E_FS0_REGNUM
+ 26, E_FS0_REGNUM
+ 27,
1381 E_FS0_REGNUM
+ 28, E_FS0_REGNUM
+ 29, E_FS0_REGNUM
+ 30, E_FS0_REGNUM
+ 31,
1383 E_MDR_REGNUM
, E_PSW_REGNUM
, E_PC_REGNUM
1387 || dwarf2
>= ARRAY_SIZE (dwarf2_to_gdb
))
1389 warning (_("Bogus register number in debug info: %d"), dwarf2
);
1393 return dwarf2_to_gdb
[dwarf2
];
1396 static struct gdbarch
*
1397 mn10300_gdbarch_init (struct gdbarch_info info
,
1398 struct gdbarch_list
*arches
)
1400 struct gdbarch
*gdbarch
;
1401 struct gdbarch_tdep
*tdep
;
1404 arches
= gdbarch_list_lookup_by_info (arches
, &info
);
1406 return arches
->gdbarch
;
1408 tdep
= xmalloc (sizeof (struct gdbarch_tdep
));
1409 gdbarch
= gdbarch_alloc (&info
, tdep
);
1411 switch (info
.bfd_arch_info
->mach
)
1414 case bfd_mach_mn10300
:
1415 set_gdbarch_register_name (gdbarch
, mn10300_generic_register_name
);
1416 tdep
->am33_mode
= 0;
1420 set_gdbarch_register_name (gdbarch
, am33_register_name
);
1421 tdep
->am33_mode
= 1;
1424 case bfd_mach_am33_2
:
1425 set_gdbarch_register_name (gdbarch
, am33_2_register_name
);
1426 tdep
->am33_mode
= 2;
1428 set_gdbarch_fp0_regnum (gdbarch
, 32);
1431 internal_error (__FILE__
, __LINE__
,
1432 _("mn10300_gdbarch_init: Unknown mn10300 variant"));
1436 /* By default, chars are unsigned. */
1437 set_gdbarch_char_signed (gdbarch
, 0);
1440 set_gdbarch_num_regs (gdbarch
, num_regs
);
1441 set_gdbarch_register_type (gdbarch
, mn10300_register_type
);
1442 set_gdbarch_skip_prologue (gdbarch
, mn10300_skip_prologue
);
1443 set_gdbarch_read_pc (gdbarch
, mn10300_read_pc
);
1444 set_gdbarch_write_pc (gdbarch
, mn10300_write_pc
);
1445 set_gdbarch_pc_regnum (gdbarch
, E_PC_REGNUM
);
1446 set_gdbarch_sp_regnum (gdbarch
, E_SP_REGNUM
);
1447 set_gdbarch_dwarf2_reg_to_regnum (gdbarch
, mn10300_dwarf2_reg_to_regnum
);
1449 /* Stack unwinding. */
1450 set_gdbarch_inner_than (gdbarch
, core_addr_lessthan
);
1452 set_gdbarch_breakpoint_from_pc (gdbarch
, mn10300_breakpoint_from_pc
);
1453 /* decr_pc_after_break? */
1455 set_gdbarch_print_insn (gdbarch
, print_insn_mn10300
);
1458 set_gdbarch_return_value (gdbarch
, mn10300_return_value
);
1460 /* Stage 3 -- get target calls working. */
1461 set_gdbarch_push_dummy_call (gdbarch
, mn10300_push_dummy_call
);
1462 /* set_gdbarch_return_value (store, extract) */
1465 mn10300_frame_unwind_init (gdbarch
);
1467 /* Hook in ABI-specific overrides, if they have been registered. */
1468 gdbarch_init_osabi (info
, gdbarch
);
1473 /* Dump out the mn10300 specific architecture information. */
1476 mn10300_dump_tdep (struct gdbarch
*gdbarch
, struct ui_file
*file
)
1478 struct gdbarch_tdep
*tdep
= gdbarch_tdep (gdbarch
);
1479 fprintf_unfiltered (file
, "mn10300_dump_tdep: am33_mode = %d\n",
1483 /* Provide a prototype to silence -Wmissing-prototypes. */
1484 extern initialize_file_ftype _initialize_mn10300_tdep
;
1487 _initialize_mn10300_tdep (void)
1489 gdbarch_register (bfd_arch_mn10300
, mn10300_gdbarch_init
, mn10300_dump_tdep
);