1 /* Target-dependent code for GDB, the GNU debugger.
3 Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
4 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
7 This file is part of GDB.
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA. */
32 #include "arch-utils.h"
37 #include "parser-defs.h"
41 #include "libbfd.h" /* for bfd_default_set_arch_mach */
42 #include "coff/internal.h" /* for libcoff.h */
43 #include "libcoff.h" /* for xcoff_data */
44 #include "coff/xcoff.h"
49 #include "solib-svr4.h"
52 #include "gdb_assert.h"
55 #include "trad-frame.h"
56 #include "frame-unwind.h"
57 #include "frame-base.h"
59 /* If the kernel has to deliver a signal, it pushes a sigcontext
60 structure on the stack and then calls the signal handler, passing
61 the address of the sigcontext in an argument register. Usually
62 the signal handler doesn't save this register, so we have to
63 access the sigcontext structure via an offset from the signal handler
65 The following constants were determined by experimentation on AIX 3.2. */
66 #define SIG_FRAME_PC_OFFSET 96
67 #define SIG_FRAME_LR_OFFSET 108
68 #define SIG_FRAME_FP_OFFSET 284
70 /* To be used by skip_prologue. */
72 struct rs6000_framedata
74 int offset; /* total size of frame --- the distance
75 by which we decrement sp to allocate
77 int saved_gpr; /* smallest # of saved gpr */
78 int saved_fpr; /* smallest # of saved fpr */
79 int saved_vr; /* smallest # of saved vr */
80 int saved_ev; /* smallest # of saved ev */
81 int alloca_reg; /* alloca register number (frame ptr) */
82 char frameless; /* true if frameless functions. */
83 char nosavedpc; /* true if pc not saved. */
84 int gpr_offset; /* offset of saved gprs from prev sp */
85 int fpr_offset; /* offset of saved fprs from prev sp */
86 int vr_offset; /* offset of saved vrs from prev sp */
87 int ev_offset; /* offset of saved evs from prev sp */
88 int lr_offset; /* offset of saved lr */
89 int cr_offset; /* offset of saved cr */
90 int vrsave_offset; /* offset of saved vrsave register */
93 /* Description of a single register. */
97 char *name; /* name of register */
98 unsigned char sz32; /* size on 32-bit arch, 0 if nonextant */
99 unsigned char sz64; /* size on 64-bit arch, 0 if nonextant */
100 unsigned char fpr; /* whether register is floating-point */
101 unsigned char pseudo; /* whether register is pseudo */
102 int spr_num; /* PowerPC SPR number, or -1 if not an SPR.
103 This is an ISA SPR number, not a GDB
107 /* Breakpoint shadows for the single step instructions will be kept here. */
109 static struct sstep_breaks
111 /* Address, or 0 if this is not in use. */
113 /* Shadow contents. */
118 /* Hook for determining the TOC address when calling functions in the
119 inferior under AIX. The initialization code in rs6000-nat.c sets
120 this hook to point to find_toc_address. */
122 CORE_ADDR (*rs6000_find_toc_address_hook) (CORE_ADDR) = NULL;
124 /* Hook to set the current architecture when starting a child process.
125 rs6000-nat.c sets this. */
127 void (*rs6000_set_host_arch_hook) (int) = NULL;
129 /* Static function prototypes */
131 static CORE_ADDR branch_dest (int opcode, int instr, CORE_ADDR pc,
133 static CORE_ADDR skip_prologue (CORE_ADDR, CORE_ADDR,
134 struct rs6000_framedata *);
136 /* Is REGNO an AltiVec register? Return 1 if so, 0 otherwise. */
138 altivec_register_p (int regno)
140 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
141 if (tdep->ppc_vr0_regnum < 0 || tdep->ppc_vrsave_regnum < 0)
144 return (regno >= tdep->ppc_vr0_regnum && regno <= tdep->ppc_vrsave_regnum);
148 /* Return true if REGNO is an SPE register, false otherwise. */
150 spe_register_p (int regno)
152 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
154 /* Is it a reference to EV0 -- EV31, and do we have those? */
155 if (tdep->ppc_ev0_regnum >= 0
156 && tdep->ppc_ev31_regnum >= 0
157 && tdep->ppc_ev0_regnum <= regno && regno <= tdep->ppc_ev31_regnum)
160 /* Is it a reference to the 64-bit accumulator, and do we have that? */
161 if (tdep->ppc_acc_regnum >= 0
162 && tdep->ppc_acc_regnum == regno)
165 /* Is it a reference to the SPE floating-point status and control register,
166 and do we have that? */
167 if (tdep->ppc_spefscr_regnum >= 0
168 && tdep->ppc_spefscr_regnum == regno)
175 /* Return non-zero if the architecture described by GDBARCH has
176 floating-point registers (f0 --- f31 and fpscr). */
178 ppc_floating_point_unit_p (struct gdbarch *gdbarch)
180 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
182 return (tdep->ppc_fp0_regnum >= 0
183 && tdep->ppc_fpscr_regnum >= 0);
187 /* Register set support functions. */
190 ppc_supply_reg (struct regcache *regcache, int regnum,
191 const char *regs, size_t offset)
193 if (regnum != -1 && offset != -1)
194 regcache_raw_supply (regcache, regnum, regs + offset);
198 ppc_collect_reg (const struct regcache *regcache, int regnum,
199 char *regs, size_t offset)
201 if (regnum != -1 && offset != -1)
202 regcache_raw_collect (regcache, regnum, regs + offset);
205 /* Supply register REGNUM in the general-purpose register set REGSET
206 from the buffer specified by GREGS and LEN to register cache
207 REGCACHE. If REGNUM is -1, do this for all registers in REGSET. */
210 ppc_supply_gregset (const struct regset *regset, struct regcache *regcache,
211 int regnum, const void *gregs, size_t len)
213 struct gdbarch *gdbarch = get_regcache_arch (regcache);
214 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
215 const struct ppc_reg_offsets *offsets = regset->descr;
219 for (i = tdep->ppc_gp0_regnum, offset = offsets->r0_offset;
220 i < tdep->ppc_gp0_regnum + ppc_num_gprs;
223 if (regnum == -1 || regnum == i)
224 ppc_supply_reg (regcache, i, gregs, offset);
227 if (regnum == -1 || regnum == PC_REGNUM)
228 ppc_supply_reg (regcache, PC_REGNUM, gregs, offsets->pc_offset);
229 if (regnum == -1 || regnum == tdep->ppc_ps_regnum)
230 ppc_supply_reg (regcache, tdep->ppc_ps_regnum,
231 gregs, offsets->ps_offset);
232 if (regnum == -1 || regnum == tdep->ppc_cr_regnum)
233 ppc_supply_reg (regcache, tdep->ppc_cr_regnum,
234 gregs, offsets->cr_offset);
235 if (regnum == -1 || regnum == tdep->ppc_lr_regnum)
236 ppc_supply_reg (regcache, tdep->ppc_lr_regnum,
237 gregs, offsets->lr_offset);
238 if (regnum == -1 || regnum == tdep->ppc_ctr_regnum)
239 ppc_supply_reg (regcache, tdep->ppc_ctr_regnum,
240 gregs, offsets->ctr_offset);
241 if (regnum == -1 || regnum == tdep->ppc_xer_regnum)
242 ppc_supply_reg (regcache, tdep->ppc_xer_regnum,
243 gregs, offsets->cr_offset);
244 if (regnum == -1 || regnum == tdep->ppc_mq_regnum)
245 ppc_supply_reg (regcache, tdep->ppc_mq_regnum, gregs, offsets->mq_offset);
248 /* Supply register REGNUM in the floating-point register set REGSET
249 from the buffer specified by FPREGS and LEN to register cache
250 REGCACHE. If REGNUM is -1, do this for all registers in REGSET. */
253 ppc_supply_fpregset (const struct regset *regset, struct regcache *regcache,
254 int regnum, const void *fpregs, size_t len)
256 struct gdbarch *gdbarch = get_regcache_arch (regcache);
257 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
258 const struct ppc_reg_offsets *offsets = regset->descr;
262 gdb_assert (ppc_floating_point_unit_p (gdbarch));
264 offset = offsets->f0_offset;
265 for (i = tdep->ppc_fp0_regnum;
266 i < tdep->ppc_fp0_regnum + ppc_num_fprs;
269 if (regnum == -1 || regnum == i)
270 ppc_supply_reg (regcache, i, fpregs, offset);
273 if (regnum == -1 || regnum == tdep->ppc_fpscr_regnum)
274 ppc_supply_reg (regcache, tdep->ppc_fpscr_regnum,
275 fpregs, offsets->fpscr_offset);
278 /* Collect register REGNUM in the general-purpose register set
279 REGSET. from register cache REGCACHE into the buffer specified by
280 GREGS and LEN. If REGNUM is -1, do this for all registers in
284 ppc_collect_gregset (const struct regset *regset,
285 const struct regcache *regcache,
286 int regnum, void *gregs, size_t len)
288 struct gdbarch *gdbarch = get_regcache_arch (regcache);
289 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
290 const struct ppc_reg_offsets *offsets = regset->descr;
294 offset = offsets->r0_offset;
295 for (i = tdep->ppc_gp0_regnum;
296 i < tdep->ppc_gp0_regnum + ppc_num_gprs;
299 if (regnum == -1 || regnum == i)
300 ppc_collect_reg (regcache, i, gregs, offset);
303 if (regnum == -1 || regnum == PC_REGNUM)
304 ppc_collect_reg (regcache, PC_REGNUM, gregs, offsets->pc_offset);
305 if (regnum == -1 || regnum == tdep->ppc_ps_regnum)
306 ppc_collect_reg (regcache, tdep->ppc_ps_regnum,
307 gregs, offsets->ps_offset);
308 if (regnum == -1 || regnum == tdep->ppc_cr_regnum)
309 ppc_collect_reg (regcache, tdep->ppc_cr_regnum,
310 gregs, offsets->cr_offset);
311 if (regnum == -1 || regnum == tdep->ppc_lr_regnum)
312 ppc_collect_reg (regcache, tdep->ppc_lr_regnum,
313 gregs, offsets->lr_offset);
314 if (regnum == -1 || regnum == tdep->ppc_ctr_regnum)
315 ppc_collect_reg (regcache, tdep->ppc_ctr_regnum,
316 gregs, offsets->ctr_offset);
317 if (regnum == -1 || regnum == tdep->ppc_xer_regnum)
318 ppc_collect_reg (regcache, tdep->ppc_xer_regnum,
319 gregs, offsets->xer_offset);
320 if (regnum == -1 || regnum == tdep->ppc_mq_regnum)
321 ppc_collect_reg (regcache, tdep->ppc_mq_regnum,
322 gregs, offsets->mq_offset);
325 /* Collect register REGNUM in the floating-point register set
326 REGSET. from register cache REGCACHE into the buffer specified by
327 FPREGS and LEN. If REGNUM is -1, do this for all registers in
331 ppc_collect_fpregset (const struct regset *regset,
332 const struct regcache *regcache,
333 int regnum, void *fpregs, size_t len)
335 struct gdbarch *gdbarch = get_regcache_arch (regcache);
336 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
337 const struct ppc_reg_offsets *offsets = regset->descr;
341 gdb_assert (ppc_floating_point_unit_p (gdbarch));
343 offset = offsets->f0_offset;
344 for (i = tdep->ppc_fp0_regnum;
345 i <= tdep->ppc_fp0_regnum + ppc_num_fprs;
348 if (regnum == -1 || regnum == i)
349 ppc_collect_reg (regcache, regnum, fpregs, offset);
352 if (regnum == -1 || regnum == tdep->ppc_fpscr_regnum)
353 ppc_collect_reg (regcache, tdep->ppc_fpscr_regnum,
354 fpregs, offsets->fpscr_offset);
358 /* Read a LEN-byte address from debugged memory address MEMADDR. */
361 read_memory_addr (CORE_ADDR memaddr, int len)
363 return read_memory_unsigned_integer (memaddr, len);
367 rs6000_skip_prologue (CORE_ADDR pc)
369 struct rs6000_framedata frame;
370 pc = skip_prologue (pc, 0, &frame);
375 /* Fill in fi->saved_regs */
377 struct frame_extra_info
379 /* Functions calling alloca() change the value of the stack
380 pointer. We need to use initial stack pointer (which is saved in
381 r31 by gcc) in such cases. If a compiler emits traceback table,
382 then we should use the alloca register specified in traceback
384 CORE_ADDR initial_sp; /* initial stack pointer. */
387 /* Get the ith function argument for the current function. */
389 rs6000_fetch_pointer_argument (struct frame_info *frame, int argi,
393 get_frame_register (frame, 3 + argi, &addr);
397 /* Calculate the destination of a branch/jump. Return -1 if not a branch. */
400 branch_dest (int opcode, int instr, CORE_ADDR pc, CORE_ADDR safety)
407 absolute = (int) ((instr >> 1) & 1);
412 immediate = ((instr & ~3) << 6) >> 6; /* br unconditional */
416 dest = pc + immediate;
420 immediate = ((instr & ~3) << 16) >> 16; /* br conditional */
424 dest = pc + immediate;
428 ext_op = (instr >> 1) & 0x3ff;
430 if (ext_op == 16) /* br conditional register */
432 dest = read_register (gdbarch_tdep (current_gdbarch)->ppc_lr_regnum) & ~3;
434 /* If we are about to return from a signal handler, dest is
435 something like 0x3c90. The current frame is a signal handler
436 caller frame, upon completion of the sigreturn system call
437 execution will return to the saved PC in the frame. */
438 if (dest < TEXT_SEGMENT_BASE)
440 struct frame_info *fi;
442 fi = get_current_frame ();
444 dest = read_memory_addr (get_frame_base (fi) + SIG_FRAME_PC_OFFSET,
445 gdbarch_tdep (current_gdbarch)->wordsize);
449 else if (ext_op == 528) /* br cond to count reg */
451 dest = read_register (gdbarch_tdep (current_gdbarch)->ppc_ctr_regnum) & ~3;
453 /* If we are about to execute a system call, dest is something
454 like 0x22fc or 0x3b00. Upon completion the system call
455 will return to the address in the link register. */
456 if (dest < TEXT_SEGMENT_BASE)
457 dest = read_register (gdbarch_tdep (current_gdbarch)->ppc_lr_regnum) & ~3;
466 return (dest < TEXT_SEGMENT_BASE) ? safety : dest;
470 /* Sequence of bytes for breakpoint instruction. */
472 const static unsigned char *
473 rs6000_breakpoint_from_pc (CORE_ADDR *bp_addr, int *bp_size)
475 static unsigned char big_breakpoint[] = { 0x7d, 0x82, 0x10, 0x08 };
476 static unsigned char little_breakpoint[] = { 0x08, 0x10, 0x82, 0x7d };
478 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
479 return big_breakpoint;
481 return little_breakpoint;
485 /* AIX does not support PT_STEP. Simulate it. */
488 rs6000_software_single_step (enum target_signal signal,
489 int insert_breakpoints_p)
493 const char *breakp = rs6000_breakpoint_from_pc (&dummy, &breakp_sz);
499 if (insert_breakpoints_p)
504 insn = read_memory_integer (loc, 4);
506 breaks[0] = loc + breakp_sz;
508 breaks[1] = branch_dest (opcode, insn, loc, breaks[0]);
510 /* Don't put two breakpoints on the same address. */
511 if (breaks[1] == breaks[0])
514 stepBreaks[1].address = 0;
516 for (ii = 0; ii < 2; ++ii)
519 /* ignore invalid breakpoint. */
520 if (breaks[ii] == -1)
522 target_insert_breakpoint (breaks[ii], stepBreaks[ii].data);
523 stepBreaks[ii].address = breaks[ii];
530 /* remove step breakpoints. */
531 for (ii = 0; ii < 2; ++ii)
532 if (stepBreaks[ii].address != 0)
533 target_remove_breakpoint (stepBreaks[ii].address,
534 stepBreaks[ii].data);
536 errno = 0; /* FIXME, don't ignore errors! */
537 /* What errors? {read,write}_memory call error(). */
541 /* return pc value after skipping a function prologue and also return
542 information about a function frame.
544 in struct rs6000_framedata fdata:
545 - frameless is TRUE, if function does not have a frame.
546 - nosavedpc is TRUE, if function does not save %pc value in its frame.
547 - offset is the initial size of this stack frame --- the amount by
548 which we decrement the sp to allocate the frame.
549 - saved_gpr is the number of the first saved gpr.
550 - saved_fpr is the number of the first saved fpr.
551 - saved_vr is the number of the first saved vr.
552 - saved_ev is the number of the first saved ev.
553 - alloca_reg is the number of the register used for alloca() handling.
555 - gpr_offset is the offset of the first saved gpr from the previous frame.
556 - fpr_offset is the offset of the first saved fpr from the previous frame.
557 - vr_offset is the offset of the first saved vr from the previous frame.
558 - ev_offset is the offset of the first saved ev from the previous frame.
559 - lr_offset is the offset of the saved lr
560 - cr_offset is the offset of the saved cr
561 - vrsave_offset is the offset of the saved vrsave register
564 #define SIGNED_SHORT(x) \
565 ((sizeof (short) == 2) \
566 ? ((int)(short)(x)) \
567 : ((int)((((x) & 0xffff) ^ 0x8000) - 0x8000)))
569 #define GET_SRC_REG(x) (((x) >> 21) & 0x1f)
571 /* Limit the number of skipped non-prologue instructions, as the examining
572 of the prologue is expensive. */
573 static int max_skip_non_prologue_insns = 10;
575 /* Given PC representing the starting address of a function, and
576 LIM_PC which is the (sloppy) limit to which to scan when looking
577 for a prologue, attempt to further refine this limit by using
578 the line data in the symbol table. If successful, a better guess
579 on where the prologue ends is returned, otherwise the previous
580 value of lim_pc is returned. */
582 /* FIXME: cagney/2004-02-14: This function and logic have largely been
583 superseded by skip_prologue_using_sal. */
586 refine_prologue_limit (CORE_ADDR pc, CORE_ADDR lim_pc)
588 struct symtab_and_line prologue_sal;
590 prologue_sal = find_pc_line (pc, 0);
591 if (prologue_sal.line != 0)
594 CORE_ADDR addr = prologue_sal.end;
596 /* Handle the case in which compiler's optimizer/scheduler
597 has moved instructions into the prologue. We scan ahead
598 in the function looking for address ranges whose corresponding
599 line number is less than or equal to the first one that we
600 found for the function. (It can be less than when the
601 scheduler puts a body instruction before the first prologue
603 for (i = 2 * max_skip_non_prologue_insns;
604 i > 0 && (lim_pc == 0 || addr < lim_pc);
607 struct symtab_and_line sal;
609 sal = find_pc_line (addr, 0);
612 if (sal.line <= prologue_sal.line
613 && sal.symtab == prologue_sal.symtab)
620 if (lim_pc == 0 || prologue_sal.end < lim_pc)
621 lim_pc = prologue_sal.end;
626 /* Return nonzero if the given instruction OP can be part of the prologue
627 of a function and saves a parameter on the stack. FRAMEP should be
628 set if one of the previous instructions in the function has set the
632 store_param_on_stack_p (unsigned long op, int framep, int *r0_contains_arg)
634 /* Move parameters from argument registers to temporary register. */
635 if ((op & 0xfc0007fe) == 0x7c000378) /* mr(.) Rx,Ry */
637 /* Rx must be scratch register r0. */
638 const int rx_regno = (op >> 16) & 31;
639 /* Ry: Only r3 - r10 are used for parameter passing. */
640 const int ry_regno = GET_SRC_REG (op);
642 if (rx_regno == 0 && ry_regno >= 3 && ry_regno <= 10)
644 *r0_contains_arg = 1;
651 /* Save a General Purpose Register on stack. */
653 if ((op & 0xfc1f0003) == 0xf8010000 || /* std Rx,NUM(r1) */
654 (op & 0xfc1f0000) == 0xd8010000) /* stfd Rx,NUM(r1) */
656 /* Rx: Only r3 - r10 are used for parameter passing. */
657 const int rx_regno = GET_SRC_REG (op);
659 return (rx_regno >= 3 && rx_regno <= 10);
662 /* Save a General Purpose Register on stack via the Frame Pointer. */
665 ((op & 0xfc1f0000) == 0x901f0000 || /* st rx,NUM(r31) */
666 (op & 0xfc1f0000) == 0x981f0000 || /* stb Rx,NUM(r31) */
667 (op & 0xfc1f0000) == 0xd81f0000)) /* stfd Rx,NUM(r31) */
669 /* Rx: Usually, only r3 - r10 are used for parameter passing.
670 However, the compiler sometimes uses r0 to hold an argument. */
671 const int rx_regno = GET_SRC_REG (op);
673 return ((rx_regno >= 3 && rx_regno <= 10)
674 || (rx_regno == 0 && *r0_contains_arg));
677 if ((op & 0xfc1f0000) == 0xfc010000) /* frsp, fp?,NUM(r1) */
679 /* Only f2 - f8 are used for parameter passing. */
680 const int src_regno = GET_SRC_REG (op);
682 return (src_regno >= 2 && src_regno <= 8);
685 if (framep && ((op & 0xfc1f0000) == 0xfc1f0000)) /* frsp, fp?,NUM(r31) */
687 /* Only f2 - f8 are used for parameter passing. */
688 const int src_regno = GET_SRC_REG (op);
690 return (src_regno >= 2 && src_regno <= 8);
693 /* Not an insn that saves a parameter on stack. */
698 skip_prologue (CORE_ADDR pc, CORE_ADDR lim_pc, struct rs6000_framedata *fdata)
700 CORE_ADDR orig_pc = pc;
701 CORE_ADDR last_prologue_pc = pc;
702 CORE_ADDR li_found_pc = 0;
706 long vr_saved_offset = 0;
715 int minimal_toc_loaded = 0;
716 int prev_insn_was_prologue_insn = 1;
717 int num_skip_non_prologue_insns = 0;
718 int r0_contains_arg = 0;
719 const struct bfd_arch_info *arch_info = gdbarch_bfd_arch_info (current_gdbarch);
720 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
722 /* Attempt to find the end of the prologue when no limit is specified.
723 Note that refine_prologue_limit() has been written so that it may
724 be used to "refine" the limits of non-zero PC values too, but this
725 is only safe if we 1) trust the line information provided by the
726 compiler and 2) iterate enough to actually find the end of the
729 It may become a good idea at some point (for both performance and
730 accuracy) to unconditionally call refine_prologue_limit(). But,
731 until we can make a clear determination that this is beneficial,
732 we'll play it safe and only use it to obtain a limit when none
733 has been specified. */
735 lim_pc = refine_prologue_limit (pc, lim_pc);
737 memset (fdata, 0, sizeof (struct rs6000_framedata));
738 fdata->saved_gpr = -1;
739 fdata->saved_fpr = -1;
740 fdata->saved_vr = -1;
741 fdata->saved_ev = -1;
742 fdata->alloca_reg = -1;
743 fdata->frameless = 1;
744 fdata->nosavedpc = 1;
748 /* Sometimes it isn't clear if an instruction is a prologue
749 instruction or not. When we encounter one of these ambiguous
750 cases, we'll set prev_insn_was_prologue_insn to 0 (false).
751 Otherwise, we'll assume that it really is a prologue instruction. */
752 if (prev_insn_was_prologue_insn)
753 last_prologue_pc = pc;
755 /* Stop scanning if we've hit the limit. */
756 if (lim_pc != 0 && pc >= lim_pc)
759 prev_insn_was_prologue_insn = 1;
761 /* Fetch the instruction and convert it to an integer. */
762 if (target_read_memory (pc, buf, 4))
764 op = extract_signed_integer (buf, 4);
766 if ((op & 0xfc1fffff) == 0x7c0802a6)
768 /* Since shared library / PIC code, which needs to get its
769 address at runtime, can appear to save more than one link
783 remember just the first one, but skip over additional
786 lr_reg = (op & 0x03e00000);
791 else if ((op & 0xfc1fffff) == 0x7c000026)
793 cr_reg = (op & 0x03e00000);
799 else if ((op & 0xfc1f0000) == 0xd8010000)
800 { /* stfd Rx,NUM(r1) */
801 reg = GET_SRC_REG (op);
802 if (fdata->saved_fpr == -1 || fdata->saved_fpr > reg)
804 fdata->saved_fpr = reg;
805 fdata->fpr_offset = SIGNED_SHORT (op) + offset;
810 else if (((op & 0xfc1f0000) == 0xbc010000) || /* stm Rx, NUM(r1) */
811 (((op & 0xfc1f0000) == 0x90010000 || /* st rx,NUM(r1) */
812 (op & 0xfc1f0003) == 0xf8010000) && /* std rx,NUM(r1) */
813 (op & 0x03e00000) >= 0x01a00000)) /* rx >= r13 */
816 reg = GET_SRC_REG (op);
817 if (fdata->saved_gpr == -1 || fdata->saved_gpr > reg)
819 fdata->saved_gpr = reg;
820 if ((op & 0xfc1f0003) == 0xf8010000)
822 fdata->gpr_offset = SIGNED_SHORT (op) + offset;
827 else if ((op & 0xffff0000) == 0x60000000)
830 /* Allow nops in the prologue, but do not consider them to
831 be part of the prologue unless followed by other prologue
833 prev_insn_was_prologue_insn = 0;
837 else if ((op & 0xffff0000) == 0x3c000000)
838 { /* addis 0,0,NUM, used
840 fdata->offset = (op & 0x0000ffff) << 16;
841 fdata->frameless = 0;
846 else if ((op & 0xffff0000) == 0x60000000)
847 { /* ori 0,0,NUM, 2nd ha
848 lf of >= 32k frames */
849 fdata->offset |= (op & 0x0000ffff);
850 fdata->frameless = 0;
855 else if (lr_reg != -1 &&
856 /* std Rx, NUM(r1) || stdu Rx, NUM(r1) */
857 (((op & 0xffff0000) == (lr_reg | 0xf8010000)) ||
858 /* stw Rx, NUM(r1) */
859 ((op & 0xffff0000) == (lr_reg | 0x90010000)) ||
860 /* stwu Rx, NUM(r1) */
861 ((op & 0xffff0000) == (lr_reg | 0x94010000))))
862 { /* where Rx == lr */
863 fdata->lr_offset = offset;
864 fdata->nosavedpc = 0;
866 if ((op & 0xfc000003) == 0xf8000000 || /* std */
867 (op & 0xfc000000) == 0x90000000) /* stw */
869 /* Does not update r1, so add displacement to lr_offset. */
870 fdata->lr_offset += SIGNED_SHORT (op);
875 else if (cr_reg != -1 &&
876 /* std Rx, NUM(r1) || stdu Rx, NUM(r1) */
877 (((op & 0xffff0000) == (cr_reg | 0xf8010000)) ||
878 /* stw Rx, NUM(r1) */
879 ((op & 0xffff0000) == (cr_reg | 0x90010000)) ||
880 /* stwu Rx, NUM(r1) */
881 ((op & 0xffff0000) == (cr_reg | 0x94010000))))
882 { /* where Rx == cr */
883 fdata->cr_offset = offset;
885 if ((op & 0xfc000003) == 0xf8000000 ||
886 (op & 0xfc000000) == 0x90000000)
888 /* Does not update r1, so add displacement to cr_offset. */
889 fdata->cr_offset += SIGNED_SHORT (op);
894 else if (op == 0x48000005)
900 else if (op == 0x48000004)
905 else if ((op & 0xffff0000) == 0x3fc00000 || /* addis 30,0,foo@ha, used
906 in V.4 -mminimal-toc */
907 (op & 0xffff0000) == 0x3bde0000)
908 { /* addi 30,30,foo@l */
912 else if ((op & 0xfc000001) == 0x48000001)
916 fdata->frameless = 0;
917 /* Don't skip over the subroutine call if it is not within
918 the first three instructions of the prologue. */
919 if ((pc - orig_pc) > 8)
922 op = read_memory_integer (pc + 4, 4);
924 /* At this point, make sure this is not a trampoline
925 function (a function that simply calls another functions,
926 and nothing else). If the next is not a nop, this branch
927 was part of the function prologue. */
929 if (op == 0x4def7b82 || op == 0) /* crorc 15, 15, 15 */
930 break; /* don't skip over
935 /* update stack pointer */
936 else if ((op & 0xfc1f0000) == 0x94010000)
937 { /* stu rX,NUM(r1) || stwu rX,NUM(r1) */
938 fdata->frameless = 0;
939 fdata->offset = SIGNED_SHORT (op);
940 offset = fdata->offset;
943 else if ((op & 0xfc1f016a) == 0x7c01016e)
944 { /* stwux rX,r1,rY */
945 /* no way to figure out what r1 is going to be */
946 fdata->frameless = 0;
947 offset = fdata->offset;
950 else if ((op & 0xfc1f0003) == 0xf8010001)
951 { /* stdu rX,NUM(r1) */
952 fdata->frameless = 0;
953 fdata->offset = SIGNED_SHORT (op & ~3UL);
954 offset = fdata->offset;
957 else if ((op & 0xfc1f016a) == 0x7c01016a)
958 { /* stdux rX,r1,rY */
959 /* no way to figure out what r1 is going to be */
960 fdata->frameless = 0;
961 offset = fdata->offset;
964 /* Load up minimal toc pointer */
965 else if (((op >> 22) == 0x20f || /* l r31,... or l r30,... */
966 (op >> 22) == 0x3af) /* ld r31,... or ld r30,... */
967 && !minimal_toc_loaded)
969 minimal_toc_loaded = 1;
972 /* move parameters from argument registers to local variable
975 else if ((op & 0xfc0007fe) == 0x7c000378 && /* mr(.) Rx,Ry */
976 (((op >> 21) & 31) >= 3) && /* R3 >= Ry >= R10 */
977 (((op >> 21) & 31) <= 10) &&
978 ((long) ((op >> 16) & 31) >= fdata->saved_gpr)) /* Rx: local var reg */
982 /* store parameters in stack */
984 /* Move parameters from argument registers to temporary register. */
985 else if (store_param_on_stack_p (op, framep, &r0_contains_arg))
989 /* Set up frame pointer */
991 else if (op == 0x603f0000 /* oril r31, r1, 0x0 */
994 fdata->frameless = 0;
996 fdata->alloca_reg = (tdep->ppc_gp0_regnum + 31);
999 /* Another way to set up the frame pointer. */
1001 else if ((op & 0xfc1fffff) == 0x38010000)
1002 { /* addi rX, r1, 0x0 */
1003 fdata->frameless = 0;
1005 fdata->alloca_reg = (tdep->ppc_gp0_regnum
1006 + ((op & ~0x38010000) >> 21));
1009 /* AltiVec related instructions. */
1010 /* Store the vrsave register (spr 256) in another register for
1011 later manipulation, or load a register into the vrsave
1012 register. 2 instructions are used: mfvrsave and
1013 mtvrsave. They are shorthand notation for mfspr Rn, SPR256
1014 and mtspr SPR256, Rn. */
1015 /* mfspr Rn SPR256 == 011111 nnnnn 0000001000 01010100110
1016 mtspr SPR256 Rn == 011111 nnnnn 0000001000 01110100110 */
1017 else if ((op & 0xfc1fffff) == 0x7c0042a6) /* mfvrsave Rn */
1019 vrsave_reg = GET_SRC_REG (op);
1022 else if ((op & 0xfc1fffff) == 0x7c0043a6) /* mtvrsave Rn */
1026 /* Store the register where vrsave was saved to onto the stack:
1027 rS is the register where vrsave was stored in a previous
1029 /* 100100 sssss 00001 dddddddd dddddddd */
1030 else if ((op & 0xfc1f0000) == 0x90010000) /* stw rS, d(r1) */
1032 if (vrsave_reg == GET_SRC_REG (op))
1034 fdata->vrsave_offset = SIGNED_SHORT (op) + offset;
1039 /* Compute the new value of vrsave, by modifying the register
1040 where vrsave was saved to. */
1041 else if (((op & 0xfc000000) == 0x64000000) /* oris Ra, Rs, UIMM */
1042 || ((op & 0xfc000000) == 0x60000000))/* ori Ra, Rs, UIMM */
1046 /* li r0, SIMM (short for addi r0, 0, SIMM). This is the first
1047 in a pair of insns to save the vector registers on the
1049 /* 001110 00000 00000 iiii iiii iiii iiii */
1050 /* 001110 01110 00000 iiii iiii iiii iiii */
1051 else if ((op & 0xffff0000) == 0x38000000 /* li r0, SIMM */
1052 || (op & 0xffff0000) == 0x39c00000) /* li r14, SIMM */
1054 if ((op & 0xffff0000) == 0x38000000)
1055 r0_contains_arg = 0;
1057 vr_saved_offset = SIGNED_SHORT (op);
1059 /* This insn by itself is not part of the prologue, unless
1060 if part of the pair of insns mentioned above. So do not
1061 record this insn as part of the prologue yet. */
1062 prev_insn_was_prologue_insn = 0;
1064 /* Store vector register S at (r31+r0) aligned to 16 bytes. */
1065 /* 011111 sssss 11111 00000 00111001110 */
1066 else if ((op & 0xfc1fffff) == 0x7c1f01ce) /* stvx Vs, R31, R0 */
1068 if (pc == (li_found_pc + 4))
1070 vr_reg = GET_SRC_REG (op);
1071 /* If this is the first vector reg to be saved, or if
1072 it has a lower number than others previously seen,
1073 reupdate the frame info. */
1074 if (fdata->saved_vr == -1 || fdata->saved_vr > vr_reg)
1076 fdata->saved_vr = vr_reg;
1077 fdata->vr_offset = vr_saved_offset + offset;
1079 vr_saved_offset = -1;
1084 /* End AltiVec related instructions. */
1086 /* Start BookE related instructions. */
1087 /* Store gen register S at (r31+uimm).
1088 Any register less than r13 is volatile, so we don't care. */
1089 /* 000100 sssss 11111 iiiii 01100100001 */
1090 else if (arch_info->mach == bfd_mach_ppc_e500
1091 && (op & 0xfc1f07ff) == 0x101f0321) /* evstdd Rs,uimm(R31) */
1093 if ((op & 0x03e00000) >= 0x01a00000) /* Rs >= r13 */
1096 ev_reg = GET_SRC_REG (op);
1097 imm = (op >> 11) & 0x1f;
1098 ev_offset = imm * 8;
1099 /* If this is the first vector reg to be saved, or if
1100 it has a lower number than others previously seen,
1101 reupdate the frame info. */
1102 if (fdata->saved_ev == -1 || fdata->saved_ev > ev_reg)
1104 fdata->saved_ev = ev_reg;
1105 fdata->ev_offset = ev_offset + offset;
1110 /* Store gen register rS at (r1+rB). */
1111 /* 000100 sssss 00001 bbbbb 01100100000 */
1112 else if (arch_info->mach == bfd_mach_ppc_e500
1113 && (op & 0xffe007ff) == 0x13e00320) /* evstddx RS,R1,Rb */
1115 if (pc == (li_found_pc + 4))
1117 ev_reg = GET_SRC_REG (op);
1118 /* If this is the first vector reg to be saved, or if
1119 it has a lower number than others previously seen,
1120 reupdate the frame info. */
1121 /* We know the contents of rB from the previous instruction. */
1122 if (fdata->saved_ev == -1 || fdata->saved_ev > ev_reg)
1124 fdata->saved_ev = ev_reg;
1125 fdata->ev_offset = vr_saved_offset + offset;
1127 vr_saved_offset = -1;
1133 /* Store gen register r31 at (rA+uimm). */
1134 /* 000100 11111 aaaaa iiiii 01100100001 */
1135 else if (arch_info->mach == bfd_mach_ppc_e500
1136 && (op & 0xffe007ff) == 0x13e00321) /* evstdd R31,Ra,UIMM */
1138 /* Wwe know that the source register is 31 already, but
1139 it can't hurt to compute it. */
1140 ev_reg = GET_SRC_REG (op);
1141 ev_offset = ((op >> 11) & 0x1f) * 8;
1142 /* If this is the first vector reg to be saved, or if
1143 it has a lower number than others previously seen,
1144 reupdate the frame info. */
1145 if (fdata->saved_ev == -1 || fdata->saved_ev > ev_reg)
1147 fdata->saved_ev = ev_reg;
1148 fdata->ev_offset = ev_offset + offset;
1153 /* Store gen register S at (r31+r0).
1154 Store param on stack when offset from SP bigger than 4 bytes. */
1155 /* 000100 sssss 11111 00000 01100100000 */
1156 else if (arch_info->mach == bfd_mach_ppc_e500
1157 && (op & 0xfc1fffff) == 0x101f0320) /* evstddx Rs,R31,R0 */
1159 if (pc == (li_found_pc + 4))
1161 if ((op & 0x03e00000) >= 0x01a00000)
1163 ev_reg = GET_SRC_REG (op);
1164 /* If this is the first vector reg to be saved, or if
1165 it has a lower number than others previously seen,
1166 reupdate the frame info. */
1167 /* We know the contents of r0 from the previous
1169 if (fdata->saved_ev == -1 || fdata->saved_ev > ev_reg)
1171 fdata->saved_ev = ev_reg;
1172 fdata->ev_offset = vr_saved_offset + offset;
1176 vr_saved_offset = -1;
1181 /* End BookE related instructions. */
1185 /* Not a recognized prologue instruction.
1186 Handle optimizer code motions into the prologue by continuing
1187 the search if we have no valid frame yet or if the return
1188 address is not yet saved in the frame. */
1189 if (fdata->frameless == 0
1190 && (lr_reg == -1 || fdata->nosavedpc == 0))
1193 if (op == 0x4e800020 /* blr */
1194 || op == 0x4e800420) /* bctr */
1195 /* Do not scan past epilogue in frameless functions or
1198 if ((op & 0xf4000000) == 0x40000000) /* bxx */
1199 /* Never skip branches. */
1202 if (num_skip_non_prologue_insns++ > max_skip_non_prologue_insns)
1203 /* Do not scan too many insns, scanning insns is expensive with
1207 /* Continue scanning. */
1208 prev_insn_was_prologue_insn = 0;
1214 /* I have problems with skipping over __main() that I need to address
1215 * sometime. Previously, I used to use misc_function_vector which
1216 * didn't work as well as I wanted to be. -MGO */
1218 /* If the first thing after skipping a prolog is a branch to a function,
1219 this might be a call to an initializer in main(), introduced by gcc2.
1220 We'd like to skip over it as well. Fortunately, xlc does some extra
1221 work before calling a function right after a prologue, thus we can
1222 single out such gcc2 behaviour. */
1225 if ((op & 0xfc000001) == 0x48000001)
1226 { /* bl foo, an initializer function? */
1227 op = read_memory_integer (pc + 4, 4);
1229 if (op == 0x4def7b82)
1230 { /* cror 0xf, 0xf, 0xf (nop) */
1232 /* Check and see if we are in main. If so, skip over this
1233 initializer function as well. */
1235 tmp = find_pc_misc_function (pc);
1237 && strcmp (misc_function_vector[tmp].name, main_name ()) == 0)
1243 fdata->offset = -fdata->offset;
1244 return last_prologue_pc;
1248 /*************************************************************************
1249 Support for creating pushing a dummy frame into the stack, and popping
1251 *************************************************************************/
1254 /* All the ABI's require 16 byte alignment. */
1256 rs6000_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr)
1258 return (addr & -16);
1261 /* Pass the arguments in either registers, or in the stack. In RS/6000,
1262 the first eight words of the argument list (that might be less than
1263 eight parameters if some parameters occupy more than one word) are
1264 passed in r3..r10 registers. float and double parameters are
1265 passed in fpr's, in addition to that. Rest of the parameters if any
1266 are passed in user stack. There might be cases in which half of the
1267 parameter is copied into registers, the other half is pushed into
1270 Stack must be aligned on 64-bit boundaries when synthesizing
1273 If the function is returning a structure, then the return address is passed
1274 in r3, then the first 7 words of the parameters can be passed in registers,
1275 starting from r4. */
1278 rs6000_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
1279 struct regcache *regcache, CORE_ADDR bp_addr,
1280 int nargs, struct value **args, CORE_ADDR sp,
1281 int struct_return, CORE_ADDR struct_addr)
1283 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
1286 int argno; /* current argument number */
1287 int argbytes; /* current argument byte */
1288 char tmp_buffer[50];
1289 int f_argno = 0; /* current floating point argno */
1290 int wordsize = gdbarch_tdep (current_gdbarch)->wordsize;
1291 CORE_ADDR func_addr = find_function_addr (function, NULL);
1293 struct value *arg = 0;
1298 /* The calling convention this function implements assumes the
1299 processor has floating-point registers. We shouldn't be using it
1300 on PPC variants that lack them. */
1301 gdb_assert (ppc_floating_point_unit_p (current_gdbarch));
1303 /* The first eight words of ther arguments are passed in registers.
1304 Copy them appropriately. */
1307 /* If the function is returning a `struct', then the first word
1308 (which will be passed in r3) is used for struct return address.
1309 In that case we should advance one word and start from r4
1310 register to copy parameters. */
1313 regcache_raw_write_unsigned (regcache, tdep->ppc_gp0_regnum + 3,
1319 effectively indirect call... gcc does...
1321 return_val example( float, int);
1324 float in fp0, int in r3
1325 offset of stack on overflow 8/16
1326 for varargs, must go by type.
1328 float in r3&r4, int in r5
1329 offset of stack on overflow different
1331 return in r3 or f0. If no float, must study how gcc emulates floats;
1332 pay attention to arg promotion.
1333 User may have to cast\args to handle promotion correctly
1334 since gdb won't know if prototype supplied or not.
1337 for (argno = 0, argbytes = 0; argno < nargs && ii < 8; ++ii)
1339 int reg_size = DEPRECATED_REGISTER_RAW_SIZE (ii + 3);
1342 type = check_typedef (VALUE_TYPE (arg));
1343 len = TYPE_LENGTH (type);
1345 if (TYPE_CODE (type) == TYPE_CODE_FLT)
1348 /* Floating point arguments are passed in fpr's, as well as gpr's.
1349 There are 13 fpr's reserved for passing parameters. At this point
1350 there is no way we would run out of them. */
1353 printf_unfiltered ("Fatal Error: a floating point parameter "
1354 "#%d with a size > 8 is found!\n", argno);
1356 memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE
1357 (tdep->ppc_fp0_regnum + 1 + f_argno)],
1358 VALUE_CONTENTS (arg),
1366 /* Argument takes more than one register. */
1367 while (argbytes < len)
1369 memset (&deprecated_registers[DEPRECATED_REGISTER_BYTE (ii + 3)], 0,
1371 memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (ii + 3)],
1372 ((char *) VALUE_CONTENTS (arg)) + argbytes,
1373 (len - argbytes) > reg_size
1374 ? reg_size : len - argbytes);
1375 ++ii, argbytes += reg_size;
1378 goto ran_out_of_registers_for_arguments;
1385 /* Argument can fit in one register. No problem. */
1386 int adj = TARGET_BYTE_ORDER == BFD_ENDIAN_BIG ? reg_size - len : 0;
1387 memset (&deprecated_registers[DEPRECATED_REGISTER_BYTE (ii + 3)], 0, reg_size);
1388 memcpy ((char *)&deprecated_registers[DEPRECATED_REGISTER_BYTE (ii + 3)] + adj,
1389 VALUE_CONTENTS (arg), len);
1394 ran_out_of_registers_for_arguments:
1396 saved_sp = read_sp ();
1398 /* Location for 8 parameters are always reserved. */
1401 /* Another six words for back chain, TOC register, link register, etc. */
1404 /* Stack pointer must be quadword aligned. */
1407 /* If there are more arguments, allocate space for them in
1408 the stack, then push them starting from the ninth one. */
1410 if ((argno < nargs) || argbytes)
1416 space += ((len - argbytes + 3) & -4);
1422 for (; jj < nargs; ++jj)
1424 struct value *val = args[jj];
1425 space += ((TYPE_LENGTH (VALUE_TYPE (val))) + 3) & -4;
1428 /* Add location required for the rest of the parameters. */
1429 space = (space + 15) & -16;
1432 /* This is another instance we need to be concerned about
1433 securing our stack space. If we write anything underneath %sp
1434 (r1), we might conflict with the kernel who thinks he is free
1435 to use this area. So, update %sp first before doing anything
1438 regcache_raw_write_signed (regcache, SP_REGNUM, sp);
1440 /* If the last argument copied into the registers didn't fit there
1441 completely, push the rest of it into stack. */
1445 write_memory (sp + 24 + (ii * 4),
1446 ((char *) VALUE_CONTENTS (arg)) + argbytes,
1449 ii += ((len - argbytes + 3) & -4) / 4;
1452 /* Push the rest of the arguments into stack. */
1453 for (; argno < nargs; ++argno)
1457 type = check_typedef (VALUE_TYPE (arg));
1458 len = TYPE_LENGTH (type);
1461 /* Float types should be passed in fpr's, as well as in the
1463 if (TYPE_CODE (type) == TYPE_CODE_FLT && f_argno < 13)
1467 printf_unfiltered ("Fatal Error: a floating point parameter"
1468 " #%d with a size > 8 is found!\n", argno);
1470 memcpy (&(deprecated_registers
1471 [DEPRECATED_REGISTER_BYTE
1472 (tdep->ppc_fp0_regnum + 1 + f_argno)]),
1473 VALUE_CONTENTS (arg),
1478 write_memory (sp + 24 + (ii * 4),
1479 (char *) VALUE_CONTENTS (arg),
1481 ii += ((len + 3) & -4) / 4;
1485 /* Set the stack pointer. According to the ABI, the SP is meant to
1486 be set _before_ the corresponding stack space is used. On AIX,
1487 this even applies when the target has been completely stopped!
1488 Not doing this can lead to conflicts with the kernel which thinks
1489 that it still has control over this not-yet-allocated stack
1491 regcache_raw_write_signed (regcache, SP_REGNUM, sp);
1493 /* Set back chain properly. */
1494 store_unsigned_integer (tmp_buffer, 4, saved_sp);
1495 write_memory (sp, tmp_buffer, 4);
1497 /* Point the inferior function call's return address at the dummy's
1499 regcache_raw_write_signed (regcache, tdep->ppc_lr_regnum, bp_addr);
1501 /* Set the TOC register, get the value from the objfile reader
1502 which, in turn, gets it from the VMAP table. */
1503 if (rs6000_find_toc_address_hook != NULL)
1505 CORE_ADDR tocvalue = (*rs6000_find_toc_address_hook) (func_addr);
1506 regcache_raw_write_signed (regcache, tdep->ppc_toc_regnum, tocvalue);
1509 target_store_registers (-1);
1513 /* PowerOpen always puts structures in memory. Vectors, which were
1514 added later, do get returned in a register though. */
1517 rs6000_use_struct_convention (int gcc_p, struct type *value_type)
1519 if ((TYPE_LENGTH (value_type) == 16 || TYPE_LENGTH (value_type) == 8)
1520 && TYPE_VECTOR (value_type))
1526 rs6000_extract_return_value (struct type *valtype, char *regbuf, char *valbuf)
1529 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
1531 /* The calling convention this function implements assumes the
1532 processor has floating-point registers. We shouldn't be using it
1533 on PPC variants that lack them. */
1534 gdb_assert (ppc_floating_point_unit_p (current_gdbarch));
1536 if (TYPE_CODE (valtype) == TYPE_CODE_FLT)
1539 /* floats and doubles are returned in fpr1. fpr's have a size of 8 bytes.
1540 We need to truncate the return value into float size (4 byte) if
1543 convert_typed_floating (®buf[DEPRECATED_REGISTER_BYTE
1544 (tdep->ppc_fp0_regnum + 1)],
1545 builtin_type_double,
1549 else if (TYPE_CODE (valtype) == TYPE_CODE_ARRAY
1550 && TYPE_LENGTH (valtype) == 16
1551 && TYPE_VECTOR (valtype))
1553 memcpy (valbuf, regbuf + DEPRECATED_REGISTER_BYTE (tdep->ppc_vr0_regnum + 2),
1554 TYPE_LENGTH (valtype));
1558 /* return value is copied starting from r3. */
1559 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
1560 && TYPE_LENGTH (valtype) < DEPRECATED_REGISTER_RAW_SIZE (3))
1561 offset = DEPRECATED_REGISTER_RAW_SIZE (3) - TYPE_LENGTH (valtype);
1564 regbuf + DEPRECATED_REGISTER_BYTE (3) + offset,
1565 TYPE_LENGTH (valtype));
1569 /* Return whether handle_inferior_event() should proceed through code
1570 starting at PC in function NAME when stepping.
1572 The AIX -bbigtoc linker option generates functions @FIX0, @FIX1, etc. to
1573 handle memory references that are too distant to fit in instructions
1574 generated by the compiler. For example, if 'foo' in the following
1579 is greater than 32767, the linker might replace the lwz with a branch to
1580 somewhere in @FIX1 that does the load in 2 instructions and then branches
1581 back to where execution should continue.
1583 GDB should silently step over @FIX code, just like AIX dbx does.
1584 Unfortunately, the linker uses the "b" instruction for the branches,
1585 meaning that the link register doesn't get set. Therefore, GDB's usual
1586 step_over_function() mechanism won't work.
1588 Instead, use the IN_SOLIB_RETURN_TRAMPOLINE and SKIP_TRAMPOLINE_CODE hooks
1589 in handle_inferior_event() to skip past @FIX code. */
1592 rs6000_in_solib_return_trampoline (CORE_ADDR pc, char *name)
1594 return name && !strncmp (name, "@FIX", 4);
1597 /* Skip code that the user doesn't want to see when stepping:
1599 1. Indirect function calls use a piece of trampoline code to do context
1600 switching, i.e. to set the new TOC table. Skip such code if we are on
1601 its first instruction (as when we have single-stepped to here).
1603 2. Skip shared library trampoline code (which is different from
1604 indirect function call trampolines).
1606 3. Skip bigtoc fixup code.
1608 Result is desired PC to step until, or NULL if we are not in
1609 code that should be skipped. */
1612 rs6000_skip_trampoline_code (CORE_ADDR pc)
1614 unsigned int ii, op;
1616 CORE_ADDR solib_target_pc;
1617 struct minimal_symbol *msymbol;
1619 static unsigned trampoline_code[] =
1621 0x800b0000, /* l r0,0x0(r11) */
1622 0x90410014, /* st r2,0x14(r1) */
1623 0x7c0903a6, /* mtctr r0 */
1624 0x804b0004, /* l r2,0x4(r11) */
1625 0x816b0008, /* l r11,0x8(r11) */
1626 0x4e800420, /* bctr */
1627 0x4e800020, /* br */
1631 /* Check for bigtoc fixup code. */
1632 msymbol = lookup_minimal_symbol_by_pc (pc);
1633 if (msymbol && rs6000_in_solib_return_trampoline (pc, DEPRECATED_SYMBOL_NAME (msymbol)))
1635 /* Double-check that the third instruction from PC is relative "b". */
1636 op = read_memory_integer (pc + 8, 4);
1637 if ((op & 0xfc000003) == 0x48000000)
1639 /* Extract bits 6-29 as a signed 24-bit relative word address and
1640 add it to the containing PC. */
1641 rel = ((int)(op << 6) >> 6);
1642 return pc + 8 + rel;
1646 /* If pc is in a shared library trampoline, return its target. */
1647 solib_target_pc = find_solib_trampoline_target (pc);
1648 if (solib_target_pc)
1649 return solib_target_pc;
1651 for (ii = 0; trampoline_code[ii]; ++ii)
1653 op = read_memory_integer (pc + (ii * 4), 4);
1654 if (op != trampoline_code[ii])
1657 ii = read_register (11); /* r11 holds destination addr */
1658 pc = read_memory_addr (ii, gdbarch_tdep (current_gdbarch)->wordsize); /* (r11) value */
1662 /* Return the size of register REG when words are WORDSIZE bytes long. If REG
1663 isn't available with that word size, return 0. */
1666 regsize (const struct reg *reg, int wordsize)
1668 return wordsize == 8 ? reg->sz64 : reg->sz32;
1671 /* Return the name of register number N, or null if no such register exists
1672 in the current architecture. */
1675 rs6000_register_name (int n)
1677 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
1678 const struct reg *reg = tdep->regs + n;
1680 if (!regsize (reg, tdep->wordsize))
1685 /* Return the GDB type object for the "standard" data type
1686 of data in register N. */
1688 static struct type *
1689 rs6000_register_type (struct gdbarch *gdbarch, int n)
1691 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1692 const struct reg *reg = tdep->regs + n;
1695 return builtin_type_double;
1698 int size = regsize (reg, tdep->wordsize);
1702 return builtin_type_int0;
1704 return builtin_type_uint32;
1706 if (tdep->ppc_ev0_regnum <= n && n <= tdep->ppc_ev31_regnum)
1707 return builtin_type_vec64;
1709 return builtin_type_uint64;
1712 return builtin_type_vec128;
1715 internal_error (__FILE__, __LINE__, "Register %d size %d unknown",
1721 /* The register format for RS/6000 floating point registers is always
1722 double, we need a conversion if the memory format is float. */
1725 rs6000_convert_register_p (int regnum, struct type *type)
1727 const struct reg *reg = gdbarch_tdep (current_gdbarch)->regs + regnum;
1730 && TYPE_CODE (type) == TYPE_CODE_FLT
1731 && TYPE_LENGTH (type) != TYPE_LENGTH (builtin_type_double));
1735 rs6000_register_to_value (struct frame_info *frame,
1740 const struct reg *reg = gdbarch_tdep (current_gdbarch)->regs + regnum;
1741 char from[MAX_REGISTER_SIZE];
1743 gdb_assert (reg->fpr);
1744 gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLT);
1746 get_frame_register (frame, regnum, from);
1747 convert_typed_floating (from, builtin_type_double, to, type);
1751 rs6000_value_to_register (struct frame_info *frame,
1756 const struct reg *reg = gdbarch_tdep (current_gdbarch)->regs + regnum;
1757 char to[MAX_REGISTER_SIZE];
1759 gdb_assert (reg->fpr);
1760 gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLT);
1762 convert_typed_floating (from, type, to, builtin_type_double);
1763 put_frame_register (frame, regnum, to);
1767 e500_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
1768 int reg_nr, void *buffer)
1772 char temp_buffer[MAX_REGISTER_SIZE];
1773 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1775 if (reg_nr >= tdep->ppc_gp0_regnum
1776 && reg_nr < tdep->ppc_gp0_regnum + ppc_num_gprs)
1778 base_regnum = reg_nr - tdep->ppc_gp0_regnum + tdep->ppc_ev0_regnum;
1780 /* Build the value in the provided buffer. */
1781 /* Read the raw register of which this one is the lower portion. */
1782 regcache_raw_read (regcache, base_regnum, temp_buffer);
1783 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
1785 memcpy ((char *) buffer, temp_buffer + offset, 4);
1790 e500_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
1791 int reg_nr, const void *buffer)
1795 char temp_buffer[MAX_REGISTER_SIZE];
1796 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1798 if (reg_nr >= tdep->ppc_gp0_regnum
1799 && reg_nr < tdep->ppc_gp0_regnum + ppc_num_gprs)
1801 base_regnum = reg_nr - tdep->ppc_gp0_regnum + tdep->ppc_ev0_regnum;
1802 /* reg_nr is 32 bit here, and base_regnum is 64 bits. */
1803 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
1806 /* Let's read the value of the base register into a temporary
1807 buffer, so that overwriting the last four bytes with the new
1808 value of the pseudo will leave the upper 4 bytes unchanged. */
1809 regcache_raw_read (regcache, base_regnum, temp_buffer);
1811 /* Write as an 8 byte quantity. */
1812 memcpy (temp_buffer + offset, (char *) buffer, 4);
1813 regcache_raw_write (regcache, base_regnum, temp_buffer);
1817 /* Convert a DBX STABS register number to a GDB register number. */
1819 rs6000_stab_reg_to_regnum (int num)
1821 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
1823 if (0 <= num && num <= 31)
1824 return tdep->ppc_gp0_regnum + num;
1825 else if (32 <= num && num <= 63)
1826 /* FIXME: jimb/2004-05-05: What should we do when the debug info
1827 specifies registers the architecture doesn't have? Our
1828 callers don't check the value we return. */
1829 return tdep->ppc_fp0_regnum + (num - 32);
1830 else if (77 <= num && num <= 108)
1831 return tdep->ppc_vr0_regnum + (num - 77);
1832 else if (1200 <= num && num < 1200 + 32)
1833 return tdep->ppc_ev0_regnum + (num - 1200);
1838 return tdep->ppc_mq_regnum;
1840 return tdep->ppc_lr_regnum;
1842 return tdep->ppc_ctr_regnum;
1844 return tdep->ppc_xer_regnum;
1846 return tdep->ppc_vrsave_regnum;
1848 return tdep->ppc_vrsave_regnum - 1; /* vscr */
1850 return tdep->ppc_acc_regnum;
1852 return tdep->ppc_spefscr_regnum;
1859 /* Convert a Dwarf 2 register number to a GDB register number. */
1861 rs6000_dwarf2_reg_to_regnum (int num)
1863 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
1865 if (0 <= num && num <= 31)
1866 return tdep->ppc_gp0_regnum + num;
1867 else if (32 <= num && num <= 63)
1868 /* FIXME: jimb/2004-05-05: What should we do when the debug info
1869 specifies registers the architecture doesn't have? Our
1870 callers don't check the value we return. */
1871 return tdep->ppc_fp0_regnum + (num - 32);
1872 else if (1124 <= num && num < 1124 + 32)
1873 return tdep->ppc_vr0_regnum + (num - 1124);
1874 else if (1200 <= num && num < 1200 + 32)
1875 return tdep->ppc_ev0_regnum + (num - 1200);
1880 return tdep->ppc_vrsave_regnum - 1; /* vscr */
1882 return tdep->ppc_acc_regnum;
1884 return tdep->ppc_mq_regnum;
1886 return tdep->ppc_xer_regnum;
1888 return tdep->ppc_lr_regnum;
1890 return tdep->ppc_ctr_regnum;
1892 return tdep->ppc_vrsave_regnum;
1894 return tdep->ppc_spefscr_regnum;
1902 rs6000_store_return_value (struct type *type,
1903 struct regcache *regcache,
1906 struct gdbarch *gdbarch = get_regcache_arch (regcache);
1907 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1910 /* The calling convention this function implements assumes the
1911 processor has floating-point registers. We shouldn't be using it
1912 on PPC variants that lack them. */
1913 gdb_assert (ppc_floating_point_unit_p (gdbarch));
1915 if (TYPE_CODE (type) == TYPE_CODE_FLT)
1916 /* Floating point values are returned starting from FPR1 and up.
1917 Say a double_double_double type could be returned in
1918 FPR1/FPR2/FPR3 triple. */
1919 regnum = tdep->ppc_fp0_regnum + 1;
1920 else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
1922 if (TYPE_LENGTH (type) == 16
1923 && TYPE_VECTOR (type))
1924 regnum = tdep->ppc_vr0_regnum + 2;
1929 /* Everything else is returned in GPR3 and up. */
1930 regnum = tdep->ppc_gp0_regnum + 3;
1933 size_t bytes_written = 0;
1935 while (bytes_written < TYPE_LENGTH (type))
1937 /* How much of this value can we write to this register? */
1938 size_t bytes_to_write = min (TYPE_LENGTH (type) - bytes_written,
1939 register_size (gdbarch, regnum));
1940 regcache_cooked_write_part (regcache, regnum,
1942 (char *) valbuf + bytes_written);
1944 bytes_written += bytes_to_write;
1950 /* Extract from an array REGBUF containing the (raw) register state
1951 the address in which a function should return its structure value,
1952 as a CORE_ADDR (or an expression that can be used as one). */
1955 rs6000_extract_struct_value_address (struct regcache *regcache)
1957 /* FIXME: cagney/2002-09-26: PR gdb/724: When making an inferior
1958 function call GDB knows the address of the struct return value
1959 and hence, should not need to call this function. Unfortunately,
1960 the current call_function_by_hand() code only saves the most
1961 recent struct address leading to occasional calls. The code
1962 should instead maintain a stack of such addresses (in the dummy
1964 /* NOTE: cagney/2002-09-26: Return 0 which indicates that we've
1965 really got no idea where the return value is being stored. While
1966 r3, on function entry, contained the address it will have since
1967 been reused (scratch) and hence wouldn't be valid */
1971 /* Hook called when a new child process is started. */
1974 rs6000_create_inferior (int pid)
1976 if (rs6000_set_host_arch_hook)
1977 rs6000_set_host_arch_hook (pid);
1980 /* Support for CONVERT_FROM_FUNC_PTR_ADDR (ARCH, ADDR, TARG).
1982 Usually a function pointer's representation is simply the address
1983 of the function. On the RS/6000 however, a function pointer is
1984 represented by a pointer to a TOC entry. This TOC entry contains
1985 three words, the first word is the address of the function, the
1986 second word is the TOC pointer (r2), and the third word is the
1987 static chain value. Throughout GDB it is currently assumed that a
1988 function pointer contains the address of the function, which is not
1989 easy to fix. In addition, the conversion of a function address to
1990 a function pointer would require allocation of a TOC entry in the
1991 inferior's memory space, with all its drawbacks. To be able to
1992 call C++ virtual methods in the inferior (which are called via
1993 function pointers), find_function_addr uses this function to get the
1994 function address from a function pointer. */
1996 /* Return real function address if ADDR (a function pointer) is in the data
1997 space and is therefore a special function pointer. */
2000 rs6000_convert_from_func_ptr_addr (struct gdbarch *gdbarch,
2002 struct target_ops *targ)
2004 struct obj_section *s;
2006 s = find_pc_section (addr);
2007 if (s && s->the_bfd_section->flags & SEC_CODE)
2010 /* ADDR is in the data space, so it's a special function pointer. */
2011 return read_memory_addr (addr, gdbarch_tdep (current_gdbarch)->wordsize);
2015 /* Handling the various POWER/PowerPC variants. */
2018 /* The arrays here called registers_MUMBLE hold information about available
2021 For each family of PPC variants, I've tried to isolate out the
2022 common registers and put them up front, so that as long as you get
2023 the general family right, GDB will correctly identify the registers
2024 common to that family. The common register sets are:
2026 For the 60x family: hid0 hid1 iabr dabr pir
2028 For the 505 and 860 family: eie eid nri
2030 For the 403 and 403GC: icdbdr esr dear evpr cdbcr tsr tcr pit tbhi
2031 tblo srr2 srr3 dbsr dbcr iac1 iac2 dac1 dac2 dccr iccr pbl1
2034 Most of these register groups aren't anything formal. I arrived at
2035 them by looking at the registers that occurred in more than one
2038 Note: kevinb/2002-04-30: Support for the fpscr register was added
2039 during April, 2002. Slot 70 is being used for PowerPC and slot 71
2040 for Power. For PowerPC, slot 70 was unused and was already in the
2041 PPC_UISA_SPRS which is ideally where fpscr should go. For Power,
2042 slot 70 was being used for "mq", so the next available slot (71)
2043 was chosen. It would have been nice to be able to make the
2044 register numbers the same across processor cores, but this wasn't
2045 possible without either 1) renumbering some registers for some
2046 processors or 2) assigning fpscr to a really high slot that's
2047 larger than any current register number. Doing (1) is bad because
2048 existing stubs would break. Doing (2) is undesirable because it
2049 would introduce a really large gap between fpscr and the rest of
2050 the registers for most processors. */
2052 /* Convenience macros for populating register arrays. */
2054 /* Within another macro, convert S to a string. */
2058 /* Return a struct reg defining register NAME that's 32 bits on 32-bit systems
2059 and 64 bits on 64-bit systems. */
2060 #define R(name) { STR(name), 4, 8, 0, 0, -1 }
2062 /* Return a struct reg defining register NAME that's 32 bits on all
2064 #define R4(name) { STR(name), 4, 4, 0, 0, -1 }
2066 /* Return a struct reg defining register NAME that's 64 bits on all
2068 #define R8(name) { STR(name), 8, 8, 0, 0, -1 }
2070 /* Return a struct reg defining register NAME that's 128 bits on all
2072 #define R16(name) { STR(name), 16, 16, 0, 0, -1 }
2074 /* Return a struct reg defining floating-point register NAME. */
2075 #define F(name) { STR(name), 8, 8, 1, 0, -1 }
2077 /* Return a struct reg defining a pseudo register NAME. */
2078 #define P(name) { STR(name), 4, 8, 0, 1, -1 }
2080 /* Return a struct reg defining register NAME that's 32 bits on 32-bit
2081 systems and that doesn't exist on 64-bit systems. */
2082 #define R32(name) { STR(name), 4, 0, 0, 0, -1 }
2084 /* Return a struct reg defining register NAME that's 64 bits on 64-bit
2085 systems and that doesn't exist on 32-bit systems. */
2086 #define R64(name) { STR(name), 0, 8, 0, 0, -1 }
2088 /* Return a struct reg placeholder for a register that doesn't exist. */
2089 #define R0 { 0, 0, 0, 0, 0, -1 }
2091 /* Return a struct reg defining an SPR named NAME that is 32 bits on
2092 32-bit systems and 64 bits on 64-bit systems. */
2093 #define S(name) { STR(name), 4, 8, 0, 0, ppc_spr_ ## name }
2095 /* Return a struct reg defining an SPR named NAME that is 32 bits on
2097 #define S4(name) { STR(name), 4, 4, 0, 0, ppc_spr_ ## name }
2099 /* Return a struct reg defining an SPR named NAME that is 32 bits on
2100 all systems, and whose SPR number is NUMBER. */
2101 #define SN4(name, number) { STR(name), 4, 4, 0, 0, (number) }
2103 /* Return a struct reg defining an SPR named NAME that's 64 bits on
2104 64-bit systems and that doesn't exist on 32-bit systems. */
2105 #define S64(name) { STR(name), 0, 8, 0, 0, ppc_spr_ ## name }
2107 /* UISA registers common across all architectures, including POWER. */
2109 #define COMMON_UISA_REGS \
2110 /* 0 */ R(r0), R(r1), R(r2), R(r3), R(r4), R(r5), R(r6), R(r7), \
2111 /* 8 */ R(r8), R(r9), R(r10),R(r11),R(r12),R(r13),R(r14),R(r15), \
2112 /* 16 */ R(r16),R(r17),R(r18),R(r19),R(r20),R(r21),R(r22),R(r23), \
2113 /* 24 */ R(r24),R(r25),R(r26),R(r27),R(r28),R(r29),R(r30),R(r31), \
2114 /* 32 */ F(f0), F(f1), F(f2), F(f3), F(f4), F(f5), F(f6), F(f7), \
2115 /* 40 */ F(f8), F(f9), F(f10),F(f11),F(f12),F(f13),F(f14),F(f15), \
2116 /* 48 */ F(f16),F(f17),F(f18),F(f19),F(f20),F(f21),F(f22),F(f23), \
2117 /* 56 */ F(f24),F(f25),F(f26),F(f27),F(f28),F(f29),F(f30),F(f31), \
2118 /* 64 */ R(pc), R(ps)
2120 /* UISA-level SPRs for PowerPC. */
2121 #define PPC_UISA_SPRS \
2122 /* 66 */ R4(cr), S(lr), S(ctr), S4(xer), R4(fpscr)
2124 /* UISA-level SPRs for PowerPC without floating point support. */
2125 #define PPC_UISA_NOFP_SPRS \
2126 /* 66 */ R4(cr), S(lr), S(ctr), S4(xer), R0
2128 /* Segment registers, for PowerPC. */
2129 #define PPC_SEGMENT_REGS \
2130 /* 71 */ R32(sr0), R32(sr1), R32(sr2), R32(sr3), \
2131 /* 75 */ R32(sr4), R32(sr5), R32(sr6), R32(sr7), \
2132 /* 79 */ R32(sr8), R32(sr9), R32(sr10), R32(sr11), \
2133 /* 83 */ R32(sr12), R32(sr13), R32(sr14), R32(sr15)
2135 /* OEA SPRs for PowerPC. */
2136 #define PPC_OEA_SPRS \
2138 /* 88 */ S(ibat0u), S(ibat0l), S(ibat1u), S(ibat1l), \
2139 /* 92 */ S(ibat2u), S(ibat2l), S(ibat3u), S(ibat3l), \
2140 /* 96 */ S(dbat0u), S(dbat0l), S(dbat1u), S(dbat1l), \
2141 /* 100 */ S(dbat2u), S(dbat2l), S(dbat3u), S(dbat3l), \
2142 /* 104 */ S(sdr1), S64(asr), S(dar), S4(dsisr), \
2143 /* 108 */ S(sprg0), S(sprg1), S(sprg2), S(sprg3), \
2144 /* 112 */ S(srr0), S(srr1), S(tbl), S(tbu), \
2145 /* 116 */ S4(dec), S(dabr), S4(ear)
2147 /* AltiVec registers. */
2148 #define PPC_ALTIVEC_REGS \
2149 /*119*/R16(vr0), R16(vr1), R16(vr2), R16(vr3), R16(vr4), R16(vr5), R16(vr6), R16(vr7), \
2150 /*127*/R16(vr8), R16(vr9), R16(vr10),R16(vr11),R16(vr12),R16(vr13),R16(vr14),R16(vr15), \
2151 /*135*/R16(vr16),R16(vr17),R16(vr18),R16(vr19),R16(vr20),R16(vr21),R16(vr22),R16(vr23), \
2152 /*143*/R16(vr24),R16(vr25),R16(vr26),R16(vr27),R16(vr28),R16(vr29),R16(vr30),R16(vr31), \
2153 /*151*/R4(vscr), R4(vrsave)
2155 /* Vectors of hi-lo general purpose registers. */
2156 #define PPC_EV_REGS \
2157 /* 0*/R8(ev0), R8(ev1), R8(ev2), R8(ev3), R8(ev4), R8(ev5), R8(ev6), R8(ev7), \
2158 /* 8*/R8(ev8), R8(ev9), R8(ev10),R8(ev11),R8(ev12),R8(ev13),R8(ev14),R8(ev15), \
2159 /*16*/R8(ev16),R8(ev17),R8(ev18),R8(ev19),R8(ev20),R8(ev21),R8(ev22),R8(ev23), \
2160 /*24*/R8(ev24),R8(ev25),R8(ev26),R8(ev27),R8(ev28),R8(ev29),R8(ev30),R8(ev31)
2162 /* Lower half of the EV registers. */
2163 #define PPC_GPRS_PSEUDO_REGS \
2164 /* 0 */ P(r0), P(r1), P(r2), P(r3), P(r4), P(r5), P(r6), P(r7), \
2165 /* 8 */ P(r8), P(r9), P(r10),P(r11),P(r12),P(r13),P(r14),P(r15), \
2166 /* 16 */ P(r16),P(r17),P(r18),P(r19),P(r20),P(r21),P(r22),P(r23), \
2167 /* 24 */ P(r24),P(r25),P(r26),P(r27),P(r28),P(r29),P(r30),P(r31)
2169 /* IBM POWER (pre-PowerPC) architecture, user-level view. We only cover
2170 user-level SPR's. */
2171 static const struct reg registers_power[] =
2174 /* 66 */ R4(cnd), S(lr), S(cnt), S4(xer), S4(mq),
2178 /* PowerPC UISA - a PPC processor as viewed by user-level code. A UISA-only
2179 view of the PowerPC. */
2180 static const struct reg registers_powerpc[] =
2189 Some notes about the "tcr" special-purpose register:
2190 - On the 403 and 403GC, SPR 986 is named "tcr", and it controls the
2191 403's programmable interval timer, fixed interval timer, and
2193 - On the 602, SPR 984 is named "tcr", and it controls the 602's
2194 watchdog timer, and nothing else.
2196 Some of the fields are similar between the two, but they're not
2197 compatible with each other. Since the two variants have different
2198 registers, with different numbers, but the same name, we can't
2199 splice the register name to get the SPR number. */
2200 static const struct reg registers_403[] =
2206 /* 119 */ S(icdbdr), S(esr), S(dear), S(evpr),
2207 /* 123 */ S(cdbcr), S(tsr), SN4(tcr, ppc_spr_403_tcr), S(pit),
2208 /* 127 */ S(tbhi), S(tblo), S(srr2), S(srr3),
2209 /* 131 */ S(dbsr), S(dbcr), S(iac1), S(iac2),
2210 /* 135 */ S(dac1), S(dac2), S(dccr), S(iccr),
2211 /* 139 */ S(pbl1), S(pbu1), S(pbl2), S(pbu2)
2214 /* IBM PowerPC 403GC.
2215 See the comments about 'tcr' for the 403, above. */
2216 static const struct reg registers_403GC[] =
2222 /* 119 */ S(icdbdr), S(esr), S(dear), S(evpr),
2223 /* 123 */ S(cdbcr), S(tsr), SN4(tcr, ppc_spr_403_tcr), S(pit),
2224 /* 127 */ S(tbhi), S(tblo), S(srr2), S(srr3),
2225 /* 131 */ S(dbsr), S(dbcr), S(iac1), S(iac2),
2226 /* 135 */ S(dac1), S(dac2), S(dccr), S(iccr),
2227 /* 139 */ S(pbl1), S(pbu1), S(pbl2), S(pbu2),
2228 /* 143 */ S(zpr), S(pid), S(sgr), S(dcwr),
2229 /* 147 */ S(tbhu), S(tblu)
2232 /* Motorola PowerPC 505. */
2233 static const struct reg registers_505[] =
2239 /* 119 */ S(eie), S(eid), S(nri)
2242 /* Motorola PowerPC 860 or 850. */
2243 static const struct reg registers_860[] =
2249 /* 119 */ S(eie), S(eid), S(nri), S(cmpa),
2250 /* 123 */ S(cmpb), S(cmpc), S(cmpd), S(icr),
2251 /* 127 */ S(der), S(counta), S(countb), S(cmpe),
2252 /* 131 */ S(cmpf), S(cmpg), S(cmph), S(lctrl1),
2253 /* 135 */ S(lctrl2), S(ictrl), S(bar), S(ic_cst),
2254 /* 139 */ S(ic_adr), S(ic_dat), S(dc_cst), S(dc_adr),
2255 /* 143 */ S(dc_dat), S(dpdr), S(dpir), S(immr),
2256 /* 147 */ S(mi_ctr), S(mi_ap), S(mi_epn), S(mi_twc),
2257 /* 151 */ S(mi_rpn), S(md_ctr), S(m_casid), S(md_ap),
2258 /* 155 */ S(md_epn), S(m_twb), S(md_twc), S(md_rpn),
2259 /* 159 */ S(m_tw), S(mi_dbcam), S(mi_dbram0), S(mi_dbram1),
2260 /* 163 */ S(md_dbcam), S(md_dbram0), S(md_dbram1)
2263 /* Motorola PowerPC 601. Note that the 601 has different register numbers
2264 for reading and writing RTCU and RTCL. However, how one reads and writes a
2265 register is the stub's problem. */
2266 static const struct reg registers_601[] =
2272 /* 119 */ S(hid0), S(hid1), S(iabr), S(dabr),
2273 /* 123 */ S(pir), S(mq), S(rtcu), S(rtcl)
2276 /* Motorola PowerPC 602.
2277 See the notes under the 403 about 'tcr'. */
2278 static const struct reg registers_602[] =
2284 /* 119 */ S(hid0), S(hid1), S(iabr), R0,
2285 /* 123 */ R0, SN4(tcr, ppc_spr_602_tcr), S(ibr), S(esasrr),
2286 /* 127 */ S(sebr), S(ser), S(sp), S(lt)
2289 /* Motorola/IBM PowerPC 603 or 603e. */
2290 static const struct reg registers_603[] =
2296 /* 119 */ S(hid0), S(hid1), S(iabr), R0,
2297 /* 123 */ R0, S(dmiss), S(dcmp), S(hash1),
2298 /* 127 */ S(hash2), S(imiss), S(icmp), S(rpa)
2301 /* Motorola PowerPC 604 or 604e. */
2302 static const struct reg registers_604[] =
2308 /* 119 */ S(hid0), S(hid1), S(iabr), S(dabr),
2309 /* 123 */ S(pir), S(mmcr0), S(pmc1), S(pmc2),
2310 /* 127 */ S(sia), S(sda)
2313 /* Motorola/IBM PowerPC 750 or 740. */
2314 static const struct reg registers_750[] =
2320 /* 119 */ S(hid0), S(hid1), S(iabr), S(dabr),
2321 /* 123 */ R0, S(ummcr0), S(upmc1), S(upmc2),
2322 /* 127 */ S(usia), S(ummcr1), S(upmc3), S(upmc4),
2323 /* 131 */ S(mmcr0), S(pmc1), S(pmc2), S(sia),
2324 /* 135 */ S(mmcr1), S(pmc3), S(pmc4), S(l2cr),
2325 /* 139 */ S(ictc), S(thrm1), S(thrm2), S(thrm3)
2329 /* Motorola PowerPC 7400. */
2330 static const struct reg registers_7400[] =
2332 /* gpr0-gpr31, fpr0-fpr31 */
2334 /* cr, lr, ctr, xer, fpscr */
2339 /* vr0-vr31, vrsave, vscr */
2341 /* FIXME? Add more registers? */
2344 /* Motorola e500. */
2345 static const struct reg registers_e500[] =
2348 /* cr, lr, ctr, xer, "" */
2352 R8(acc), S4(spefscr),
2353 /* NOTE: Add new registers here the end of the raw register
2354 list and just before the first pseudo register. */
2356 PPC_GPRS_PSEUDO_REGS
2359 /* Information about a particular processor variant. */
2363 /* Name of this variant. */
2366 /* English description of the variant. */
2369 /* bfd_arch_info.arch corresponding to variant. */
2370 enum bfd_architecture arch;
2372 /* bfd_arch_info.mach corresponding to variant. */
2375 /* Number of real registers. */
2378 /* Number of pseudo registers. */
2381 /* Number of total registers (the sum of nregs and npregs). */
2384 /* Table of register names; registers[R] is the name of the register
2386 const struct reg *regs;
2389 #define tot_num_registers(list) (sizeof (list) / sizeof((list)[0]))
2392 num_registers (const struct reg *reg_list, int num_tot_regs)
2397 for (i = 0; i < num_tot_regs; i++)
2398 if (!reg_list[i].pseudo)
2405 num_pseudo_registers (const struct reg *reg_list, int num_tot_regs)
2410 for (i = 0; i < num_tot_regs; i++)
2411 if (reg_list[i].pseudo)
2417 /* Information in this table comes from the following web sites:
2418 IBM: http://www.chips.ibm.com:80/products/embedded/
2419 Motorola: http://www.mot.com/SPS/PowerPC/
2421 I'm sure I've got some of the variant descriptions not quite right.
2422 Please report any inaccuracies you find to GDB's maintainer.
2424 If you add entries to this table, please be sure to allow the new
2425 value as an argument to the --with-cpu flag, in configure.in. */
2427 static struct variant variants[] =
2430 {"powerpc", "PowerPC user-level", bfd_arch_powerpc,
2431 bfd_mach_ppc, -1, -1, tot_num_registers (registers_powerpc),
2433 {"power", "POWER user-level", bfd_arch_rs6000,
2434 bfd_mach_rs6k, -1, -1, tot_num_registers (registers_power),
2436 {"403", "IBM PowerPC 403", bfd_arch_powerpc,
2437 bfd_mach_ppc_403, -1, -1, tot_num_registers (registers_403),
2439 {"601", "Motorola PowerPC 601", bfd_arch_powerpc,
2440 bfd_mach_ppc_601, -1, -1, tot_num_registers (registers_601),
2442 {"602", "Motorola PowerPC 602", bfd_arch_powerpc,
2443 bfd_mach_ppc_602, -1, -1, tot_num_registers (registers_602),
2445 {"603", "Motorola/IBM PowerPC 603 or 603e", bfd_arch_powerpc,
2446 bfd_mach_ppc_603, -1, -1, tot_num_registers (registers_603),
2448 {"604", "Motorola PowerPC 604 or 604e", bfd_arch_powerpc,
2449 604, -1, -1, tot_num_registers (registers_604),
2451 {"403GC", "IBM PowerPC 403GC", bfd_arch_powerpc,
2452 bfd_mach_ppc_403gc, -1, -1, tot_num_registers (registers_403GC),
2454 {"505", "Motorola PowerPC 505", bfd_arch_powerpc,
2455 bfd_mach_ppc_505, -1, -1, tot_num_registers (registers_505),
2457 {"860", "Motorola PowerPC 860 or 850", bfd_arch_powerpc,
2458 bfd_mach_ppc_860, -1, -1, tot_num_registers (registers_860),
2460 {"750", "Motorola/IBM PowerPC 750 or 740", bfd_arch_powerpc,
2461 bfd_mach_ppc_750, -1, -1, tot_num_registers (registers_750),
2463 {"7400", "Motorola/IBM PowerPC 7400 (G4)", bfd_arch_powerpc,
2464 bfd_mach_ppc_7400, -1, -1, tot_num_registers (registers_7400),
2466 {"e500", "Motorola PowerPC e500", bfd_arch_powerpc,
2467 bfd_mach_ppc_e500, -1, -1, tot_num_registers (registers_e500),
2471 {"powerpc64", "PowerPC 64-bit user-level", bfd_arch_powerpc,
2472 bfd_mach_ppc64, -1, -1, tot_num_registers (registers_powerpc),
2474 {"620", "Motorola PowerPC 620", bfd_arch_powerpc,
2475 bfd_mach_ppc_620, -1, -1, tot_num_registers (registers_powerpc),
2477 {"630", "Motorola PowerPC 630", bfd_arch_powerpc,
2478 bfd_mach_ppc_630, -1, -1, tot_num_registers (registers_powerpc),
2480 {"a35", "PowerPC A35", bfd_arch_powerpc,
2481 bfd_mach_ppc_a35, -1, -1, tot_num_registers (registers_powerpc),
2483 {"rs64ii", "PowerPC rs64ii", bfd_arch_powerpc,
2484 bfd_mach_ppc_rs64ii, -1, -1, tot_num_registers (registers_powerpc),
2486 {"rs64iii", "PowerPC rs64iii", bfd_arch_powerpc,
2487 bfd_mach_ppc_rs64iii, -1, -1, tot_num_registers (registers_powerpc),
2490 /* FIXME: I haven't checked the register sets of the following. */
2491 {"rs1", "IBM POWER RS1", bfd_arch_rs6000,
2492 bfd_mach_rs6k_rs1, -1, -1, tot_num_registers (registers_power),
2494 {"rsc", "IBM POWER RSC", bfd_arch_rs6000,
2495 bfd_mach_rs6k_rsc, -1, -1, tot_num_registers (registers_power),
2497 {"rs2", "IBM POWER RS2", bfd_arch_rs6000,
2498 bfd_mach_rs6k_rs2, -1, -1, tot_num_registers (registers_power),
2501 {0, 0, 0, 0, 0, 0, 0, 0}
2504 /* Initialize the number of registers and pseudo registers in each variant. */
2507 init_variants (void)
2511 for (v = variants; v->name; v++)
2514 v->nregs = num_registers (v->regs, v->num_tot_regs);
2515 if (v->npregs == -1)
2516 v->npregs = num_pseudo_registers (v->regs, v->num_tot_regs);
2520 /* Return the variant corresponding to architecture ARCH and machine number
2521 MACH. If no such variant exists, return null. */
2523 static const struct variant *
2524 find_variant_by_arch (enum bfd_architecture arch, unsigned long mach)
2526 const struct variant *v;
2528 for (v = variants; v->name; v++)
2529 if (arch == v->arch && mach == v->mach)
2536 gdb_print_insn_powerpc (bfd_vma memaddr, disassemble_info *info)
2538 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
2539 return print_insn_big_powerpc (memaddr, info);
2541 return print_insn_little_powerpc (memaddr, info);
2545 rs6000_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
2547 return frame_unwind_register_unsigned (next_frame, PC_REGNUM);
2550 static struct frame_id
2551 rs6000_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame)
2553 return frame_id_build (frame_unwind_register_unsigned (next_frame,
2555 frame_pc_unwind (next_frame));
2558 struct rs6000_frame_cache
2561 CORE_ADDR initial_sp;
2562 struct trad_frame_saved_reg *saved_regs;
2565 static struct rs6000_frame_cache *
2566 rs6000_frame_cache (struct frame_info *next_frame, void **this_cache)
2568 struct rs6000_frame_cache *cache;
2569 struct gdbarch *gdbarch = get_frame_arch (next_frame);
2570 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
2571 struct rs6000_framedata fdata;
2572 int wordsize = tdep->wordsize;
2574 if ((*this_cache) != NULL)
2575 return (*this_cache);
2576 cache = FRAME_OBSTACK_ZALLOC (struct rs6000_frame_cache);
2577 (*this_cache) = cache;
2578 cache->saved_regs = trad_frame_alloc_saved_regs (next_frame);
2580 skip_prologue (frame_func_unwind (next_frame), frame_pc_unwind (next_frame),
2583 /* If there were any saved registers, figure out parent's stack
2585 /* The following is true only if the frame doesn't have a call to
2588 if (fdata.saved_fpr == 0
2589 && fdata.saved_gpr == 0
2590 && fdata.saved_vr == 0
2591 && fdata.saved_ev == 0
2592 && fdata.lr_offset == 0
2593 && fdata.cr_offset == 0
2594 && fdata.vr_offset == 0
2595 && fdata.ev_offset == 0)
2596 cache->base = frame_unwind_register_unsigned (next_frame, SP_REGNUM);
2599 /* NOTE: cagney/2002-04-14: The ->frame points to the inner-most
2600 address of the current frame. Things might be easier if the
2601 ->frame pointed to the outer-most address of the frame. In
2602 the mean time, the address of the prev frame is used as the
2603 base address of this frame. */
2604 cache->base = frame_unwind_register_unsigned (next_frame, SP_REGNUM);
2605 if (!fdata.frameless)
2606 /* Frameless really means stackless. */
2607 cache->base = read_memory_addr (cache->base, wordsize);
2609 trad_frame_set_value (cache->saved_regs, SP_REGNUM, cache->base);
2611 /* if != -1, fdata.saved_fpr is the smallest number of saved_fpr.
2612 All fpr's from saved_fpr to fp31 are saved. */
2614 if (fdata.saved_fpr >= 0)
2617 CORE_ADDR fpr_addr = cache->base + fdata.fpr_offset;
2619 /* If skip_prologue says floating-point registers were saved,
2620 but the current architecture has no floating-point registers,
2621 then that's strange. But we have no indices to even record
2622 the addresses under, so we just ignore it. */
2623 if (ppc_floating_point_unit_p (gdbarch))
2624 for (i = fdata.saved_fpr; i < ppc_num_fprs; i++)
2626 cache->saved_regs[tdep->ppc_fp0_regnum + i].addr = fpr_addr;
2631 /* if != -1, fdata.saved_gpr is the smallest number of saved_gpr.
2632 All gpr's from saved_gpr to gpr31 are saved. */
2634 if (fdata.saved_gpr >= 0)
2637 CORE_ADDR gpr_addr = cache->base + fdata.gpr_offset;
2638 for (i = fdata.saved_gpr; i < ppc_num_gprs; i++)
2640 cache->saved_regs[tdep->ppc_gp0_regnum + i].addr = gpr_addr;
2641 gpr_addr += wordsize;
2645 /* if != -1, fdata.saved_vr is the smallest number of saved_vr.
2646 All vr's from saved_vr to vr31 are saved. */
2647 if (tdep->ppc_vr0_regnum != -1 && tdep->ppc_vrsave_regnum != -1)
2649 if (fdata.saved_vr >= 0)
2652 CORE_ADDR vr_addr = cache->base + fdata.vr_offset;
2653 for (i = fdata.saved_vr; i < 32; i++)
2655 cache->saved_regs[tdep->ppc_vr0_regnum + i].addr = vr_addr;
2656 vr_addr += register_size (gdbarch, tdep->ppc_vr0_regnum);
2661 /* if != -1, fdata.saved_ev is the smallest number of saved_ev.
2662 All vr's from saved_ev to ev31 are saved. ????? */
2663 if (tdep->ppc_ev0_regnum != -1 && tdep->ppc_ev31_regnum != -1)
2665 if (fdata.saved_ev >= 0)
2668 CORE_ADDR ev_addr = cache->base + fdata.ev_offset;
2669 for (i = fdata.saved_ev; i < ppc_num_gprs; i++)
2671 cache->saved_regs[tdep->ppc_ev0_regnum + i].addr = ev_addr;
2672 cache->saved_regs[tdep->ppc_gp0_regnum + i].addr = ev_addr + 4;
2673 ev_addr += register_size (gdbarch, tdep->ppc_ev0_regnum);
2678 /* If != 0, fdata.cr_offset is the offset from the frame that
2680 if (fdata.cr_offset != 0)
2681 cache->saved_regs[tdep->ppc_cr_regnum].addr = cache->base + fdata.cr_offset;
2683 /* If != 0, fdata.lr_offset is the offset from the frame that
2685 if (fdata.lr_offset != 0)
2686 cache->saved_regs[tdep->ppc_lr_regnum].addr = cache->base + fdata.lr_offset;
2687 /* The PC is found in the link register. */
2688 cache->saved_regs[PC_REGNUM] = cache->saved_regs[tdep->ppc_lr_regnum];
2690 /* If != 0, fdata.vrsave_offset is the offset from the frame that
2691 holds the VRSAVE. */
2692 if (fdata.vrsave_offset != 0)
2693 cache->saved_regs[tdep->ppc_vrsave_regnum].addr = cache->base + fdata.vrsave_offset;
2695 if (fdata.alloca_reg < 0)
2696 /* If no alloca register used, then fi->frame is the value of the
2697 %sp for this frame, and it is good enough. */
2698 cache->initial_sp = frame_unwind_register_unsigned (next_frame, SP_REGNUM);
2700 cache->initial_sp = frame_unwind_register_unsigned (next_frame,
2707 rs6000_frame_this_id (struct frame_info *next_frame, void **this_cache,
2708 struct frame_id *this_id)
2710 struct rs6000_frame_cache *info = rs6000_frame_cache (next_frame,
2712 (*this_id) = frame_id_build (info->base, frame_func_unwind (next_frame));
2716 rs6000_frame_prev_register (struct frame_info *next_frame,
2718 int regnum, int *optimizedp,
2719 enum lval_type *lvalp, CORE_ADDR *addrp,
2720 int *realnump, void *valuep)
2722 struct rs6000_frame_cache *info = rs6000_frame_cache (next_frame,
2724 trad_frame_prev_register (next_frame, info->saved_regs, regnum,
2725 optimizedp, lvalp, addrp, realnump, valuep);
2728 static const struct frame_unwind rs6000_frame_unwind =
2731 rs6000_frame_this_id,
2732 rs6000_frame_prev_register
2735 static const struct frame_unwind *
2736 rs6000_frame_sniffer (struct frame_info *next_frame)
2738 return &rs6000_frame_unwind;
2744 rs6000_frame_base_address (struct frame_info *next_frame,
2747 struct rs6000_frame_cache *info = rs6000_frame_cache (next_frame,
2749 return info->initial_sp;
2752 static const struct frame_base rs6000_frame_base = {
2753 &rs6000_frame_unwind,
2754 rs6000_frame_base_address,
2755 rs6000_frame_base_address,
2756 rs6000_frame_base_address
2759 static const struct frame_base *
2760 rs6000_frame_base_sniffer (struct frame_info *next_frame)
2762 return &rs6000_frame_base;
2765 /* Initialize the current architecture based on INFO. If possible, re-use an
2766 architecture from ARCHES, which is a list of architectures already created
2767 during this debugging session.
2769 Called e.g. at program startup, when reading a core file, and when reading
2772 static struct gdbarch *
2773 rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
2775 struct gdbarch *gdbarch;
2776 struct gdbarch_tdep *tdep;
2777 int wordsize, from_xcoff_exec, from_elf_exec, i, off;
2779 const struct variant *v;
2780 enum bfd_architecture arch;
2786 from_xcoff_exec = info.abfd && info.abfd->format == bfd_object &&
2787 bfd_get_flavour (info.abfd) == bfd_target_xcoff_flavour;
2789 from_elf_exec = info.abfd && info.abfd->format == bfd_object &&
2790 bfd_get_flavour (info.abfd) == bfd_target_elf_flavour;
2792 sysv_abi = info.abfd && bfd_get_flavour (info.abfd) == bfd_target_elf_flavour;
2794 /* Check word size. If INFO is from a binary file, infer it from
2795 that, else choose a likely default. */
2796 if (from_xcoff_exec)
2798 if (bfd_xcoff_is_xcoff64 (info.abfd))
2803 else if (from_elf_exec)
2805 if (elf_elfheader (info.abfd)->e_ident[EI_CLASS] == ELFCLASS64)
2812 if (info.bfd_arch_info != NULL && info.bfd_arch_info->bits_per_word != 0)
2813 wordsize = info.bfd_arch_info->bits_per_word /
2814 info.bfd_arch_info->bits_per_byte;
2819 /* Find a candidate among extant architectures. */
2820 for (arches = gdbarch_list_lookup_by_info (arches, &info);
2822 arches = gdbarch_list_lookup_by_info (arches->next, &info))
2824 /* Word size in the various PowerPC bfd_arch_info structs isn't
2825 meaningful, because 64-bit CPUs can run in 32-bit mode. So, perform
2826 separate word size check. */
2827 tdep = gdbarch_tdep (arches->gdbarch);
2828 if (tdep && tdep->wordsize == wordsize)
2829 return arches->gdbarch;
2832 /* None found, create a new architecture from INFO, whose bfd_arch_info
2833 validity depends on the source:
2834 - executable useless
2835 - rs6000_host_arch() good
2837 - "set arch" trust blindly
2838 - GDB startup useless but harmless */
2840 if (!from_xcoff_exec)
2842 arch = info.bfd_arch_info->arch;
2843 mach = info.bfd_arch_info->mach;
2847 arch = bfd_arch_powerpc;
2848 bfd_default_set_arch_mach (&abfd, arch, 0);
2849 info.bfd_arch_info = bfd_get_arch_info (&abfd);
2850 mach = info.bfd_arch_info->mach;
2852 tdep = xmalloc (sizeof (struct gdbarch_tdep));
2853 tdep->wordsize = wordsize;
2855 /* For e500 executables, the apuinfo section is of help here. Such
2856 section contains the identifier and revision number of each
2857 Application-specific Processing Unit that is present on the
2858 chip. The content of the section is determined by the assembler
2859 which looks at each instruction and determines which unit (and
2860 which version of it) can execute it. In our case we just look for
2861 the existance of the section. */
2865 sect = bfd_get_section_by_name (info.abfd, ".PPC.EMB.apuinfo");
2868 arch = info.bfd_arch_info->arch;
2869 mach = bfd_mach_ppc_e500;
2870 bfd_default_set_arch_mach (&abfd, arch, mach);
2871 info.bfd_arch_info = bfd_get_arch_info (&abfd);
2875 gdbarch = gdbarch_alloc (&info, tdep);
2877 /* Initialize the number of real and pseudo registers in each variant. */
2880 /* Choose variant. */
2881 v = find_variant_by_arch (arch, mach);
2885 tdep->regs = v->regs;
2887 tdep->ppc_gp0_regnum = 0;
2888 tdep->ppc_gprs_pseudo_p = 0;
2889 tdep->ppc_toc_regnum = 2;
2890 tdep->ppc_ps_regnum = 65;
2891 tdep->ppc_cr_regnum = 66;
2892 tdep->ppc_lr_regnum = 67;
2893 tdep->ppc_ctr_regnum = 68;
2894 tdep->ppc_xer_regnum = 69;
2895 if (v->mach == bfd_mach_ppc_601)
2896 tdep->ppc_mq_regnum = 124;
2897 else if (arch == bfd_arch_rs6000)
2898 tdep->ppc_mq_regnum = 70;
2900 tdep->ppc_mq_regnum = -1;
2901 tdep->ppc_fp0_regnum = 32;
2902 tdep->ppc_fpscr_regnum = (arch == bfd_arch_rs6000) ? 71 : 70;
2903 tdep->ppc_sr0_regnum = 71;
2904 tdep->ppc_vr0_regnum = -1;
2905 tdep->ppc_vrsave_regnum = -1;
2906 tdep->ppc_ev0_regnum = -1;
2907 tdep->ppc_ev31_regnum = -1;
2908 tdep->ppc_acc_regnum = -1;
2909 tdep->ppc_spefscr_regnum = -1;
2911 set_gdbarch_pc_regnum (gdbarch, 64);
2912 set_gdbarch_sp_regnum (gdbarch, 1);
2913 set_gdbarch_deprecated_fp_regnum (gdbarch, 1);
2914 if (sysv_abi && wordsize == 8)
2915 set_gdbarch_return_value (gdbarch, ppc64_sysv_abi_return_value);
2916 else if (sysv_abi && wordsize == 4)
2917 set_gdbarch_return_value (gdbarch, ppc_sysv_abi_return_value);
2920 set_gdbarch_deprecated_extract_return_value (gdbarch, rs6000_extract_return_value);
2921 set_gdbarch_store_return_value (gdbarch, rs6000_store_return_value);
2924 /* Set lr_frame_offset. */
2926 tdep->lr_frame_offset = 16;
2928 tdep->lr_frame_offset = 4;
2930 tdep->lr_frame_offset = 8;
2932 if (v->arch == bfd_arch_rs6000)
2933 tdep->ppc_sr0_regnum = -1;
2934 else if (v->arch == bfd_arch_powerpc)
2938 tdep->ppc_vr0_regnum = 71;
2939 tdep->ppc_vrsave_regnum = 104;
2941 case bfd_mach_ppc_7400:
2942 tdep->ppc_vr0_regnum = 119;
2943 tdep->ppc_vrsave_regnum = 152;
2945 case bfd_mach_ppc_e500:
2946 tdep->ppc_gp0_regnum = 41;
2947 tdep->ppc_gprs_pseudo_p = 1;
2948 tdep->ppc_toc_regnum = -1;
2949 tdep->ppc_ps_regnum = 1;
2950 tdep->ppc_cr_regnum = 2;
2951 tdep->ppc_lr_regnum = 3;
2952 tdep->ppc_ctr_regnum = 4;
2953 tdep->ppc_xer_regnum = 5;
2954 tdep->ppc_ev0_regnum = 7;
2955 tdep->ppc_ev31_regnum = 38;
2956 tdep->ppc_fp0_regnum = -1;
2957 tdep->ppc_fpscr_regnum = -1;
2958 tdep->ppc_sr0_regnum = -1;
2959 tdep->ppc_acc_regnum = 39;
2960 tdep->ppc_spefscr_regnum = 40;
2961 set_gdbarch_pc_regnum (gdbarch, 0);
2962 set_gdbarch_sp_regnum (gdbarch, tdep->ppc_gp0_regnum + 1);
2963 set_gdbarch_deprecated_fp_regnum (gdbarch, tdep->ppc_gp0_regnum + 1);
2964 set_gdbarch_pseudo_register_read (gdbarch, e500_pseudo_register_read);
2965 set_gdbarch_pseudo_register_write (gdbarch, e500_pseudo_register_write);
2968 case bfd_mach_ppc64:
2969 case bfd_mach_ppc_620:
2970 case bfd_mach_ppc_630:
2971 case bfd_mach_ppc_a35:
2972 case bfd_mach_ppc_rs64ii:
2973 case bfd_mach_ppc_rs64iii:
2974 /* These processor's register sets don't have segment registers. */
2975 tdep->ppc_sr0_regnum = -1;
2979 internal_error (__FILE__, __LINE__,
2980 "rs6000_gdbarch_init: "
2981 "received unexpected BFD 'arch' value");
2983 /* Sanity check on registers. */
2984 gdb_assert (strcmp (tdep->regs[tdep->ppc_gp0_regnum].name, "r0") == 0);
2986 /* Select instruction printer. */
2987 if (arch == bfd_arch_rs6000)
2988 set_gdbarch_print_insn (gdbarch, print_insn_rs6000);
2990 set_gdbarch_print_insn (gdbarch, gdb_print_insn_powerpc);
2992 set_gdbarch_write_pc (gdbarch, generic_target_write_pc);
2994 set_gdbarch_num_regs (gdbarch, v->nregs);
2995 set_gdbarch_num_pseudo_regs (gdbarch, v->npregs);
2996 set_gdbarch_register_name (gdbarch, rs6000_register_name);
2997 set_gdbarch_register_type (gdbarch, rs6000_register_type);
2999 set_gdbarch_ptr_bit (gdbarch, wordsize * TARGET_CHAR_BIT);
3000 set_gdbarch_short_bit (gdbarch, 2 * TARGET_CHAR_BIT);
3001 set_gdbarch_int_bit (gdbarch, 4 * TARGET_CHAR_BIT);
3002 set_gdbarch_long_bit (gdbarch, wordsize * TARGET_CHAR_BIT);
3003 set_gdbarch_long_long_bit (gdbarch, 8 * TARGET_CHAR_BIT);
3004 set_gdbarch_float_bit (gdbarch, 4 * TARGET_CHAR_BIT);
3005 set_gdbarch_double_bit (gdbarch, 8 * TARGET_CHAR_BIT);
3007 set_gdbarch_long_double_bit (gdbarch, 16 * TARGET_CHAR_BIT);
3009 set_gdbarch_long_double_bit (gdbarch, 8 * TARGET_CHAR_BIT);
3010 set_gdbarch_char_signed (gdbarch, 0);
3012 set_gdbarch_frame_align (gdbarch, rs6000_frame_align);
3013 if (sysv_abi && wordsize == 8)
3015 set_gdbarch_frame_red_zone_size (gdbarch, 288);
3016 else if (!sysv_abi && wordsize == 4)
3017 /* PowerOpen / AIX 32 bit. The saved area or red zone consists of
3018 19 4 byte GPRS + 18 8 byte FPRs giving a total of 220 bytes.
3019 Problem is, 220 isn't frame (16 byte) aligned. Round it up to
3021 set_gdbarch_frame_red_zone_size (gdbarch, 224);
3023 set_gdbarch_convert_register_p (gdbarch, rs6000_convert_register_p);
3024 set_gdbarch_register_to_value (gdbarch, rs6000_register_to_value);
3025 set_gdbarch_value_to_register (gdbarch, rs6000_value_to_register);
3027 set_gdbarch_stab_reg_to_regnum (gdbarch, rs6000_stab_reg_to_regnum);
3028 set_gdbarch_dwarf2_reg_to_regnum (gdbarch, rs6000_dwarf2_reg_to_regnum);
3029 /* Note: kevinb/2002-04-12: I'm not convinced that rs6000_push_arguments()
3030 is correct for the SysV ABI when the wordsize is 8, but I'm also
3031 fairly certain that ppc_sysv_abi_push_arguments() will give even
3032 worse results since it only works for 32-bit code. So, for the moment,
3033 we're better off calling rs6000_push_arguments() since it works for
3034 64-bit code. At some point in the future, this matter needs to be
3036 if (sysv_abi && wordsize == 4)
3037 set_gdbarch_push_dummy_call (gdbarch, ppc_sysv_abi_push_dummy_call);
3038 else if (sysv_abi && wordsize == 8)
3039 set_gdbarch_push_dummy_call (gdbarch, ppc64_sysv_abi_push_dummy_call);
3041 set_gdbarch_push_dummy_call (gdbarch, rs6000_push_dummy_call);
3043 set_gdbarch_deprecated_extract_struct_value_address (gdbarch, rs6000_extract_struct_value_address);
3045 set_gdbarch_skip_prologue (gdbarch, rs6000_skip_prologue);
3046 set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
3047 set_gdbarch_breakpoint_from_pc (gdbarch, rs6000_breakpoint_from_pc);
3049 /* Handle the 64-bit SVR4 minimal-symbol convention of using "FN"
3050 for the descriptor and ".FN" for the entry-point -- a user
3051 specifying "break FN" will unexpectedly end up with a breakpoint
3052 on the descriptor and not the function. This architecture method
3053 transforms any breakpoints on descriptors into breakpoints on the
3054 corresponding entry point. */
3055 if (sysv_abi && wordsize == 8)
3056 set_gdbarch_adjust_breakpoint_address (gdbarch, ppc64_sysv_abi_adjust_breakpoint_address);
3058 /* Not sure on this. FIXMEmgo */
3059 set_gdbarch_frame_args_skip (gdbarch, 8);
3062 set_gdbarch_deprecated_use_struct_convention (gdbarch, rs6000_use_struct_convention);
3066 /* Handle RS/6000 function pointers (which are really function
3068 set_gdbarch_convert_from_func_ptr_addr (gdbarch,
3069 rs6000_convert_from_func_ptr_addr);
3072 /* Helpers for function argument information. */
3073 set_gdbarch_fetch_pointer_argument (gdbarch, rs6000_fetch_pointer_argument);
3075 /* Hook in ABI-specific overrides, if they have been registered. */
3076 gdbarch_init_osabi (info, gdbarch);
3080 case GDB_OSABI_NETBSD_AOUT:
3081 case GDB_OSABI_NETBSD_ELF:
3082 case GDB_OSABI_UNKNOWN:
3083 case GDB_OSABI_LINUX:
3084 set_gdbarch_unwind_pc (gdbarch, rs6000_unwind_pc);
3085 frame_unwind_append_sniffer (gdbarch, rs6000_frame_sniffer);
3086 set_gdbarch_unwind_dummy_id (gdbarch, rs6000_unwind_dummy_id);
3087 frame_base_append_sniffer (gdbarch, rs6000_frame_base_sniffer);
3090 set_gdbarch_believe_pcc_promotion (gdbarch, 1);
3092 set_gdbarch_unwind_pc (gdbarch, rs6000_unwind_pc);
3093 frame_unwind_append_sniffer (gdbarch, rs6000_frame_sniffer);
3094 set_gdbarch_unwind_dummy_id (gdbarch, rs6000_unwind_dummy_id);
3095 frame_base_append_sniffer (gdbarch, rs6000_frame_base_sniffer);
3098 if (from_xcoff_exec)
3100 /* NOTE: jimix/2003-06-09: This test should really check for
3101 GDB_OSABI_AIX when that is defined and becomes
3102 available. (Actually, once things are properly split apart,
3103 the test goes away.) */
3104 /* RS6000/AIX does not support PT_STEP. Has to be simulated. */
3105 set_gdbarch_software_single_step (gdbarch, rs6000_software_single_step);
3112 rs6000_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
3114 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
3119 /* FIXME: Dump gdbarch_tdep. */
3122 static struct cmd_list_element *info_powerpc_cmdlist = NULL;
3125 rs6000_info_powerpc_command (char *args, int from_tty)
3127 help_list (info_powerpc_cmdlist, "info powerpc ", class_info, gdb_stdout);
3130 /* Initialization code. */
3132 extern initialize_file_ftype _initialize_rs6000_tdep; /* -Wmissing-prototypes */
3135 _initialize_rs6000_tdep (void)
3137 gdbarch_register (bfd_arch_rs6000, rs6000_gdbarch_init, rs6000_dump_tdep);
3138 gdbarch_register (bfd_arch_powerpc, rs6000_gdbarch_init, rs6000_dump_tdep);
3140 /* Add root prefix command for "info powerpc" commands */
3141 add_prefix_cmd ("powerpc", class_info, rs6000_info_powerpc_command,
3142 "Various POWERPC info specific commands.",
3143 &info_powerpc_cmdlist, "info powerpc ", 0, &infolist);