1 /* Target-dependent code for GDB, the GNU debugger.
2 Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
3 1998, 1999, 2000, 2001, 2002
4 Free Software Foundation, Inc.
6 This file is part of GDB.
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA. */
32 #include "arch-utils.h"
36 #include "parser-defs.h"
38 #include "libbfd.h" /* for bfd_default_set_arch_mach */
39 #include "coff/internal.h" /* for libcoff.h */
40 #include "libcoff.h" /* for xcoff_data */
41 #include "coff/xcoff.h"
46 #include "solib-svr4.h"
49 /* If the kernel has to deliver a signal, it pushes a sigcontext
50 structure on the stack and then calls the signal handler, passing
51 the address of the sigcontext in an argument register. Usually
52 the signal handler doesn't save this register, so we have to
53 access the sigcontext structure via an offset from the signal handler
55 The following constants were determined by experimentation on AIX 3.2. */
56 #define SIG_FRAME_PC_OFFSET 96
57 #define SIG_FRAME_LR_OFFSET 108
58 #define SIG_FRAME_FP_OFFSET 284
60 /* To be used by skip_prologue. */
62 struct rs6000_framedata
64 int offset; /* total size of frame --- the distance
65 by which we decrement sp to allocate
67 int saved_gpr; /* smallest # of saved gpr */
68 int saved_fpr; /* smallest # of saved fpr */
69 int saved_vr; /* smallest # of saved vr */
70 int alloca_reg; /* alloca register number (frame ptr) */
71 char frameless; /* true if frameless functions. */
72 char nosavedpc; /* true if pc not saved. */
73 int gpr_offset; /* offset of saved gprs from prev sp */
74 int fpr_offset; /* offset of saved fprs from prev sp */
75 int vr_offset; /* offset of saved vrs from prev sp */
76 int lr_offset; /* offset of saved lr */
77 int cr_offset; /* offset of saved cr */
78 int vrsave_offset; /* offset of saved vrsave register */
81 /* Description of a single register. */
85 char *name; /* name of register */
86 unsigned char sz32; /* size on 32-bit arch, 0 if nonextant */
87 unsigned char sz64; /* size on 64-bit arch, 0 if nonextant */
88 unsigned char fpr; /* whether register is floating-point */
91 /* Breakpoint shadows for the single step instructions will be kept here. */
93 static struct sstep_breaks
95 /* Address, or 0 if this is not in use. */
97 /* Shadow contents. */
102 /* Hook for determining the TOC address when calling functions in the
103 inferior under AIX. The initialization code in rs6000-nat.c sets
104 this hook to point to find_toc_address. */
106 CORE_ADDR (*rs6000_find_toc_address_hook) (CORE_ADDR) = NULL;
108 /* Hook to set the current architecture when starting a child process.
109 rs6000-nat.c sets this. */
111 void (*rs6000_set_host_arch_hook) (int) = NULL;
113 /* Static function prototypes */
115 static CORE_ADDR branch_dest (int opcode, int instr, CORE_ADDR pc,
117 static CORE_ADDR skip_prologue (CORE_ADDR, CORE_ADDR,
118 struct rs6000_framedata *);
119 static void frame_get_saved_regs (struct frame_info * fi,
120 struct rs6000_framedata * fdatap);
121 static CORE_ADDR frame_initial_stack_address (struct frame_info *);
123 /* Read a LEN-byte address from debugged memory address MEMADDR. */
126 read_memory_addr (CORE_ADDR memaddr, int len)
128 return read_memory_unsigned_integer (memaddr, len);
132 rs6000_skip_prologue (CORE_ADDR pc)
134 struct rs6000_framedata frame;
135 pc = skip_prologue (pc, 0, &frame);
140 /* Fill in fi->saved_regs */
142 struct frame_extra_info
144 /* Functions calling alloca() change the value of the stack
145 pointer. We need to use initial stack pointer (which is saved in
146 r31 by gcc) in such cases. If a compiler emits traceback table,
147 then we should use the alloca register specified in traceback
149 CORE_ADDR initial_sp; /* initial stack pointer. */
153 rs6000_init_extra_frame_info (int fromleaf, struct frame_info *fi)
155 fi->extra_info = (struct frame_extra_info *)
156 frame_obstack_alloc (sizeof (struct frame_extra_info));
157 fi->extra_info->initial_sp = 0;
158 if (fi->next != (CORE_ADDR) 0
159 && fi->pc < TEXT_SEGMENT_BASE)
160 /* We're in get_prev_frame */
161 /* and this is a special signal frame. */
162 /* (fi->pc will be some low address in the kernel, */
163 /* to which the signal handler returns). */
164 fi->signal_handler_caller = 1;
167 /* Put here the code to store, into a struct frame_saved_regs,
168 the addresses of the saved registers of frame described by FRAME_INFO.
169 This includes special registers such as pc and fp saved in special
170 ways in the stack frame. sp is even more special:
171 the address we return for it IS the sp for the next frame. */
173 /* In this implementation for RS/6000, we do *not* save sp. I am
174 not sure if it will be needed. The following function takes care of gpr's
178 rs6000_frame_init_saved_regs (struct frame_info *fi)
180 frame_get_saved_regs (fi, NULL);
184 rs6000_frame_args_address (struct frame_info *fi)
186 if (fi->extra_info->initial_sp != 0)
187 return fi->extra_info->initial_sp;
189 return frame_initial_stack_address (fi);
192 /* Immediately after a function call, return the saved pc.
193 Can't go through the frames for this because on some machines
194 the new frame is not set up until the new function executes
195 some instructions. */
198 rs6000_saved_pc_after_call (struct frame_info *fi)
200 return read_register (gdbarch_tdep (current_gdbarch)->ppc_lr_regnum);
203 /* Calculate the destination of a branch/jump. Return -1 if not a branch. */
206 branch_dest (int opcode, int instr, CORE_ADDR pc, CORE_ADDR safety)
213 absolute = (int) ((instr >> 1) & 1);
218 immediate = ((instr & ~3) << 6) >> 6; /* br unconditional */
222 dest = pc + immediate;
226 immediate = ((instr & ~3) << 16) >> 16; /* br conditional */
230 dest = pc + immediate;
234 ext_op = (instr >> 1) & 0x3ff;
236 if (ext_op == 16) /* br conditional register */
238 dest = read_register (gdbarch_tdep (current_gdbarch)->ppc_lr_regnum) & ~3;
240 /* If we are about to return from a signal handler, dest is
241 something like 0x3c90. The current frame is a signal handler
242 caller frame, upon completion of the sigreturn system call
243 execution will return to the saved PC in the frame. */
244 if (dest < TEXT_SEGMENT_BASE)
246 struct frame_info *fi;
248 fi = get_current_frame ();
250 dest = read_memory_addr (fi->frame + SIG_FRAME_PC_OFFSET,
251 gdbarch_tdep (current_gdbarch)->wordsize);
255 else if (ext_op == 528) /* br cond to count reg */
257 dest = read_register (gdbarch_tdep (current_gdbarch)->ppc_ctr_regnum) & ~3;
259 /* If we are about to execute a system call, dest is something
260 like 0x22fc or 0x3b00. Upon completion the system call
261 will return to the address in the link register. */
262 if (dest < TEXT_SEGMENT_BASE)
263 dest = read_register (gdbarch_tdep (current_gdbarch)->ppc_lr_regnum) & ~3;
272 return (dest < TEXT_SEGMENT_BASE) ? safety : dest;
276 /* Sequence of bytes for breakpoint instruction. */
278 #define BIG_BREAKPOINT { 0x7d, 0x82, 0x10, 0x08 }
279 #define LITTLE_BREAKPOINT { 0x08, 0x10, 0x82, 0x7d }
281 const static unsigned char *
282 rs6000_breakpoint_from_pc (CORE_ADDR *bp_addr, int *bp_size)
284 static unsigned char big_breakpoint[] = BIG_BREAKPOINT;
285 static unsigned char little_breakpoint[] = LITTLE_BREAKPOINT;
287 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
288 return big_breakpoint;
290 return little_breakpoint;
294 /* AIX does not support PT_STEP. Simulate it. */
297 rs6000_software_single_step (enum target_signal signal,
298 int insert_breakpoints_p)
302 const char *breakp = rs6000_breakpoint_from_pc (&dummy, &breakp_sz);
308 if (insert_breakpoints_p)
313 insn = read_memory_integer (loc, 4);
315 breaks[0] = loc + breakp_sz;
317 breaks[1] = branch_dest (opcode, insn, loc, breaks[0]);
319 /* Don't put two breakpoints on the same address. */
320 if (breaks[1] == breaks[0])
323 stepBreaks[1].address = 0;
325 for (ii = 0; ii < 2; ++ii)
328 /* ignore invalid breakpoint. */
329 if (breaks[ii] == -1)
331 target_insert_breakpoint (breaks[ii], stepBreaks[ii].data);
332 stepBreaks[ii].address = breaks[ii];
339 /* remove step breakpoints. */
340 for (ii = 0; ii < 2; ++ii)
341 if (stepBreaks[ii].address != 0)
342 target_remove_breakpoint (stepBreaks[ii].address,
343 stepBreaks[ii].data);
345 errno = 0; /* FIXME, don't ignore errors! */
346 /* What errors? {read,write}_memory call error(). */
350 /* return pc value after skipping a function prologue and also return
351 information about a function frame.
353 in struct rs6000_framedata fdata:
354 - frameless is TRUE, if function does not have a frame.
355 - nosavedpc is TRUE, if function does not save %pc value in its frame.
356 - offset is the initial size of this stack frame --- the amount by
357 which we decrement the sp to allocate the frame.
358 - saved_gpr is the number of the first saved gpr.
359 - saved_fpr is the number of the first saved fpr.
360 - saved_vr is the number of the first saved vr.
361 - alloca_reg is the number of the register used for alloca() handling.
363 - gpr_offset is the offset of the first saved gpr from the previous frame.
364 - fpr_offset is the offset of the first saved fpr from the previous frame.
365 - vr_offset is the offset of the first saved vr from the previous frame.
366 - lr_offset is the offset of the saved lr
367 - cr_offset is the offset of the saved cr
368 - vrsave_offset is the offset of the saved vrsave register
371 #define SIGNED_SHORT(x) \
372 ((sizeof (short) == 2) \
373 ? ((int)(short)(x)) \
374 : ((int)((((x) & 0xffff) ^ 0x8000) - 0x8000)))
376 #define GET_SRC_REG(x) (((x) >> 21) & 0x1f)
378 /* Limit the number of skipped non-prologue instructions, as the examining
379 of the prologue is expensive. */
380 static int max_skip_non_prologue_insns = 10;
382 /* Given PC representing the starting address of a function, and
383 LIM_PC which is the (sloppy) limit to which to scan when looking
384 for a prologue, attempt to further refine this limit by using
385 the line data in the symbol table. If successful, a better guess
386 on where the prologue ends is returned, otherwise the previous
387 value of lim_pc is returned. */
389 refine_prologue_limit (CORE_ADDR pc, CORE_ADDR lim_pc)
391 struct symtab_and_line prologue_sal;
393 prologue_sal = find_pc_line (pc, 0);
394 if (prologue_sal.line != 0)
397 CORE_ADDR addr = prologue_sal.end;
399 /* Handle the case in which compiler's optimizer/scheduler
400 has moved instructions into the prologue. We scan ahead
401 in the function looking for address ranges whose corresponding
402 line number is less than or equal to the first one that we
403 found for the function. (It can be less than when the
404 scheduler puts a body instruction before the first prologue
406 for (i = 2 * max_skip_non_prologue_insns;
407 i > 0 && (lim_pc == 0 || addr < lim_pc);
410 struct symtab_and_line sal;
412 sal = find_pc_line (addr, 0);
415 if (sal.line <= prologue_sal.line
416 && sal.symtab == prologue_sal.symtab)
423 if (lim_pc == 0 || prologue_sal.end < lim_pc)
424 lim_pc = prologue_sal.end;
431 skip_prologue (CORE_ADDR pc, CORE_ADDR lim_pc, struct rs6000_framedata *fdata)
433 CORE_ADDR orig_pc = pc;
434 CORE_ADDR last_prologue_pc = pc;
435 CORE_ADDR li_found_pc = 0;
439 long vr_saved_offset = 0;
446 int minimal_toc_loaded = 0;
447 int prev_insn_was_prologue_insn = 1;
448 int num_skip_non_prologue_insns = 0;
450 /* Attempt to find the end of the prologue when no limit is specified.
451 Note that refine_prologue_limit() has been written so that it may
452 be used to "refine" the limits of non-zero PC values too, but this
453 is only safe if we 1) trust the line information provided by the
454 compiler and 2) iterate enough to actually find the end of the
457 It may become a good idea at some point (for both performance and
458 accuracy) to unconditionally call refine_prologue_limit(). But,
459 until we can make a clear determination that this is beneficial,
460 we'll play it safe and only use it to obtain a limit when none
461 has been specified. */
463 lim_pc = refine_prologue_limit (pc, lim_pc);
465 memset (fdata, 0, sizeof (struct rs6000_framedata));
466 fdata->saved_gpr = -1;
467 fdata->saved_fpr = -1;
468 fdata->saved_vr = -1;
469 fdata->alloca_reg = -1;
470 fdata->frameless = 1;
471 fdata->nosavedpc = 1;
475 /* Sometimes it isn't clear if an instruction is a prologue
476 instruction or not. When we encounter one of these ambiguous
477 cases, we'll set prev_insn_was_prologue_insn to 0 (false).
478 Otherwise, we'll assume that it really is a prologue instruction. */
479 if (prev_insn_was_prologue_insn)
480 last_prologue_pc = pc;
482 /* Stop scanning if we've hit the limit. */
483 if (lim_pc != 0 && pc >= lim_pc)
486 prev_insn_was_prologue_insn = 1;
488 /* Fetch the instruction and convert it to an integer. */
489 if (target_read_memory (pc, buf, 4))
491 op = extract_signed_integer (buf, 4);
493 if ((op & 0xfc1fffff) == 0x7c0802a6)
495 lr_reg = (op & 0x03e00000) | 0x90010000;
499 else if ((op & 0xfc1fffff) == 0x7c000026)
501 cr_reg = (op & 0x03e00000) | 0x90010000;
505 else if ((op & 0xfc1f0000) == 0xd8010000)
506 { /* stfd Rx,NUM(r1) */
507 reg = GET_SRC_REG (op);
508 if (fdata->saved_fpr == -1 || fdata->saved_fpr > reg)
510 fdata->saved_fpr = reg;
511 fdata->fpr_offset = SIGNED_SHORT (op) + offset;
516 else if (((op & 0xfc1f0000) == 0xbc010000) || /* stm Rx, NUM(r1) */
517 (((op & 0xfc1f0000) == 0x90010000 || /* st rx,NUM(r1) */
518 (op & 0xfc1f0003) == 0xf8010000) && /* std rx,NUM(r1) */
519 (op & 0x03e00000) >= 0x01a00000)) /* rx >= r13 */
522 reg = GET_SRC_REG (op);
523 if (fdata->saved_gpr == -1 || fdata->saved_gpr > reg)
525 fdata->saved_gpr = reg;
526 if ((op & 0xfc1f0003) == 0xf8010000)
528 fdata->gpr_offset = SIGNED_SHORT (op) + offset;
533 else if ((op & 0xffff0000) == 0x60000000)
536 /* Allow nops in the prologue, but do not consider them to
537 be part of the prologue unless followed by other prologue
539 prev_insn_was_prologue_insn = 0;
543 else if ((op & 0xffff0000) == 0x3c000000)
544 { /* addis 0,0,NUM, used
546 fdata->offset = (op & 0x0000ffff) << 16;
547 fdata->frameless = 0;
551 else if ((op & 0xffff0000) == 0x60000000)
552 { /* ori 0,0,NUM, 2nd ha
553 lf of >= 32k frames */
554 fdata->offset |= (op & 0x0000ffff);
555 fdata->frameless = 0;
559 else if (lr_reg != -1 && (op & 0xffff0000) == lr_reg)
562 fdata->lr_offset = SIGNED_SHORT (op) + offset;
563 fdata->nosavedpc = 0;
568 else if (cr_reg != -1 && (op & 0xffff0000) == cr_reg)
571 fdata->cr_offset = SIGNED_SHORT (op) + offset;
576 else if (op == 0x48000005)
582 else if (op == 0x48000004)
587 else if ((op & 0xffff0000) == 0x3fc00000 || /* addis 30,0,foo@ha, used
588 in V.4 -mminimal-toc */
589 (op & 0xffff0000) == 0x3bde0000)
590 { /* addi 30,30,foo@l */
594 else if ((op & 0xfc000001) == 0x48000001)
598 fdata->frameless = 0;
599 /* Don't skip over the subroutine call if it is not within
600 the first three instructions of the prologue. */
601 if ((pc - orig_pc) > 8)
604 op = read_memory_integer (pc + 4, 4);
606 /* At this point, make sure this is not a trampoline
607 function (a function that simply calls another functions,
608 and nothing else). If the next is not a nop, this branch
609 was part of the function prologue. */
611 if (op == 0x4def7b82 || op == 0) /* crorc 15, 15, 15 */
612 break; /* don't skip over
616 /* update stack pointer */
618 else if ((op & 0xffff0000) == 0x94210000 || /* stu r1,NUM(r1) */
619 (op & 0xffff0003) == 0xf8210001) /* stdu r1,NUM(r1) */
621 fdata->frameless = 0;
622 if ((op & 0xffff0003) == 0xf8210001)
624 fdata->offset = SIGNED_SHORT (op);
625 offset = fdata->offset;
629 else if (op == 0x7c21016e)
631 fdata->frameless = 0;
632 offset = fdata->offset;
635 /* Load up minimal toc pointer */
637 else if ((op >> 22) == 0x20f
638 && !minimal_toc_loaded)
639 { /* l r31,... or l r30,... */
640 minimal_toc_loaded = 1;
643 /* move parameters from argument registers to local variable
646 else if ((op & 0xfc0007fe) == 0x7c000378 && /* mr(.) Rx,Ry */
647 (((op >> 21) & 31) >= 3) && /* R3 >= Ry >= R10 */
648 (((op >> 21) & 31) <= 10) &&
649 (((op >> 16) & 31) >= fdata->saved_gpr)) /* Rx: local var reg */
653 /* store parameters in stack */
655 else if ((op & 0xfc1f0003) == 0xf8010000 || /* std rx,NUM(r1) */
656 (op & 0xfc1f0000) == 0xd8010000 || /* stfd Rx,NUM(r1) */
657 (op & 0xfc1f0000) == 0xfc010000) /* frsp, fp?,NUM(r1) */
661 /* store parameters in stack via frame pointer */
664 ((op & 0xfc1f0000) == 0x901f0000 || /* st rx,NUM(r1) */
665 (op & 0xfc1f0000) == 0xd81f0000 || /* stfd Rx,NUM(r1) */
666 (op & 0xfc1f0000) == 0xfc1f0000))
667 { /* frsp, fp?,NUM(r1) */
670 /* Set up frame pointer */
672 else if (op == 0x603f0000 /* oril r31, r1, 0x0 */
675 fdata->frameless = 0;
677 fdata->alloca_reg = 31;
680 /* Another way to set up the frame pointer. */
682 else if ((op & 0xfc1fffff) == 0x38010000)
683 { /* addi rX, r1, 0x0 */
684 fdata->frameless = 0;
686 fdata->alloca_reg = (op & ~0x38010000) >> 21;
689 /* AltiVec related instructions. */
690 /* Store the vrsave register (spr 256) in another register for
691 later manipulation, or load a register into the vrsave
692 register. 2 instructions are used: mfvrsave and
693 mtvrsave. They are shorthand notation for mfspr Rn, SPR256
694 and mtspr SPR256, Rn. */
695 /* mfspr Rn SPR256 == 011111 nnnnn 0000001000 01010100110
696 mtspr SPR256 Rn == 011111 nnnnn 0000001000 01110100110 */
697 else if ((op & 0xfc1fffff) == 0x7c0042a6) /* mfvrsave Rn */
699 vrsave_reg = GET_SRC_REG (op);
702 else if ((op & 0xfc1fffff) == 0x7c0043a6) /* mtvrsave Rn */
706 /* Store the register where vrsave was saved to onto the stack:
707 rS is the register where vrsave was stored in a previous
709 /* 100100 sssss 00001 dddddddd dddddddd */
710 else if ((op & 0xfc1f0000) == 0x90010000) /* stw rS, d(r1) */
712 if (vrsave_reg == GET_SRC_REG (op))
714 fdata->vrsave_offset = SIGNED_SHORT (op) + offset;
719 /* Compute the new value of vrsave, by modifying the register
720 where vrsave was saved to. */
721 else if (((op & 0xfc000000) == 0x64000000) /* oris Ra, Rs, UIMM */
722 || ((op & 0xfc000000) == 0x60000000))/* ori Ra, Rs, UIMM */
726 /* li r0, SIMM (short for addi r0, 0, SIMM). This is the first
727 in a pair of insns to save the vector registers on the
729 /* 001110 00000 00000 iiii iiii iiii iiii */
730 else if ((op & 0xffff0000) == 0x38000000) /* li r0, SIMM */
733 vr_saved_offset = SIGNED_SHORT (op);
735 /* Store vector register S at (r31+r0) aligned to 16 bytes. */
736 /* 011111 sssss 11111 00000 00111001110 */
737 else if ((op & 0xfc1fffff) == 0x7c1f01ce) /* stvx Vs, R31, R0 */
739 if (pc == (li_found_pc + 4))
741 vr_reg = GET_SRC_REG (op);
742 /* If this is the first vector reg to be saved, or if
743 it has a lower number than others previously seen,
744 reupdate the frame info. */
745 if (fdata->saved_vr == -1 || fdata->saved_vr > vr_reg)
747 fdata->saved_vr = vr_reg;
748 fdata->vr_offset = vr_saved_offset + offset;
750 vr_saved_offset = -1;
755 /* End AltiVec related instructions. */
758 /* Not a recognized prologue instruction.
759 Handle optimizer code motions into the prologue by continuing
760 the search if we have no valid frame yet or if the return
761 address is not yet saved in the frame. */
762 if (fdata->frameless == 0
763 && (lr_reg == -1 || fdata->nosavedpc == 0))
766 if (op == 0x4e800020 /* blr */
767 || op == 0x4e800420) /* bctr */
768 /* Do not scan past epilogue in frameless functions or
771 if ((op & 0xf4000000) == 0x40000000) /* bxx */
772 /* Never skip branches. */
775 if (num_skip_non_prologue_insns++ > max_skip_non_prologue_insns)
776 /* Do not scan too many insns, scanning insns is expensive with
780 /* Continue scanning. */
781 prev_insn_was_prologue_insn = 0;
787 /* I have problems with skipping over __main() that I need to address
788 * sometime. Previously, I used to use misc_function_vector which
789 * didn't work as well as I wanted to be. -MGO */
791 /* If the first thing after skipping a prolog is a branch to a function,
792 this might be a call to an initializer in main(), introduced by gcc2.
793 We'd like to skip over it as well. Fortunately, xlc does some extra
794 work before calling a function right after a prologue, thus we can
795 single out such gcc2 behaviour. */
798 if ((op & 0xfc000001) == 0x48000001)
799 { /* bl foo, an initializer function? */
800 op = read_memory_integer (pc + 4, 4);
802 if (op == 0x4def7b82)
803 { /* cror 0xf, 0xf, 0xf (nop) */
805 /* check and see if we are in main. If so, skip over this initializer
808 tmp = find_pc_misc_function (pc);
809 if (tmp >= 0 && STREQ (misc_function_vector[tmp].name, main_name ()))
815 fdata->offset = -fdata->offset;
816 return last_prologue_pc;
820 /*************************************************************************
821 Support for creating pushing a dummy frame into the stack, and popping
823 *************************************************************************/
826 /* Pop the innermost frame, go back to the caller. */
829 rs6000_pop_frame (void)
831 CORE_ADDR pc, lr, sp, prev_sp, addr; /* %pc, %lr, %sp */
832 struct rs6000_framedata fdata;
833 struct frame_info *frame = get_current_frame ();
837 sp = FRAME_FP (frame);
839 if (PC_IN_CALL_DUMMY (frame->pc, frame->frame, frame->frame))
841 generic_pop_dummy_frame ();
842 flush_cached_frames ();
846 /* Make sure that all registers are valid. */
847 read_register_bytes (0, NULL, REGISTER_BYTES);
849 /* figure out previous %pc value. If the function is frameless, it is
850 still in the link register, otherwise walk the frames and retrieve the
851 saved %pc value in the previous frame. */
853 addr = get_pc_function_start (frame->pc);
854 (void) skip_prologue (addr, frame->pc, &fdata);
856 wordsize = gdbarch_tdep (current_gdbarch)->wordsize;
860 prev_sp = read_memory_addr (sp, wordsize);
861 if (fdata.lr_offset == 0)
862 lr = read_register (gdbarch_tdep (current_gdbarch)->ppc_lr_regnum);
864 lr = read_memory_addr (prev_sp + fdata.lr_offset, wordsize);
866 /* reset %pc value. */
867 write_register (PC_REGNUM, lr);
869 /* reset register values if any was saved earlier. */
871 if (fdata.saved_gpr != -1)
873 addr = prev_sp + fdata.gpr_offset;
874 for (ii = fdata.saved_gpr; ii <= 31; ++ii)
876 read_memory (addr, ®isters[REGISTER_BYTE (ii)], wordsize);
881 if (fdata.saved_fpr != -1)
883 addr = prev_sp + fdata.fpr_offset;
884 for (ii = fdata.saved_fpr; ii <= 31; ++ii)
886 read_memory (addr, ®isters[REGISTER_BYTE (ii + FP0_REGNUM)], 8);
891 write_register (SP_REGNUM, prev_sp);
892 target_store_registers (-1);
893 flush_cached_frames ();
896 /* Fixup the call sequence of a dummy function, with the real function
897 address. Its arguments will be passed by gdb. */
900 rs6000_fix_call_dummy (char *dummyname, CORE_ADDR pc, CORE_ADDR fun,
901 int nargs, struct value **args, struct type *type,
905 CORE_ADDR target_addr;
907 if (rs6000_find_toc_address_hook != NULL)
909 CORE_ADDR tocvalue = (*rs6000_find_toc_address_hook) (fun);
910 write_register (gdbarch_tdep (current_gdbarch)->ppc_toc_regnum,
915 /* Pass the arguments in either registers, or in the stack. In RS/6000,
916 the first eight words of the argument list (that might be less than
917 eight parameters if some parameters occupy more than one word) are
918 passed in r3..r10 registers. float and double parameters are
919 passed in fpr's, in addition to that. Rest of the parameters if any
920 are passed in user stack. There might be cases in which half of the
921 parameter is copied into registers, the other half is pushed into
924 Stack must be aligned on 64-bit boundaries when synthesizing
927 If the function is returning a structure, then the return address is passed
928 in r3, then the first 7 words of the parameters can be passed in registers,
932 rs6000_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
933 int struct_return, CORE_ADDR struct_addr)
937 int argno; /* current argument number */
938 int argbytes; /* current argument byte */
940 int f_argno = 0; /* current floating point argno */
941 int wordsize = gdbarch_tdep (current_gdbarch)->wordsize;
943 struct value *arg = 0;
948 /* The first eight words of ther arguments are passed in registers. Copy
951 If the function is returning a `struct', then the first word (which
952 will be passed in r3) is used for struct return address. In that
953 case we should advance one word and start from r4 register to copy
956 ii = struct_return ? 1 : 0;
959 effectively indirect call... gcc does...
961 return_val example( float, int);
964 float in fp0, int in r3
965 offset of stack on overflow 8/16
966 for varargs, must go by type.
968 float in r3&r4, int in r5
969 offset of stack on overflow different
971 return in r3 or f0. If no float, must study how gcc emulates floats;
972 pay attention to arg promotion.
973 User may have to cast\args to handle promotion correctly
974 since gdb won't know if prototype supplied or not.
977 for (argno = 0, argbytes = 0; argno < nargs && ii < 8; ++ii)
979 int reg_size = REGISTER_RAW_SIZE (ii + 3);
982 type = check_typedef (VALUE_TYPE (arg));
983 len = TYPE_LENGTH (type);
985 if (TYPE_CODE (type) == TYPE_CODE_FLT)
988 /* floating point arguments are passed in fpr's, as well as gpr's.
989 There are 13 fpr's reserved for passing parameters. At this point
990 there is no way we would run out of them. */
994 "Fatal Error: a floating point parameter #%d with a size > 8 is found!\n", argno);
996 memcpy (®isters[REGISTER_BYTE (FP0_REGNUM + 1 + f_argno)],
997 VALUE_CONTENTS (arg),
1005 /* Argument takes more than one register. */
1006 while (argbytes < len)
1008 memset (®isters[REGISTER_BYTE (ii + 3)], 0, reg_size);
1009 memcpy (®isters[REGISTER_BYTE (ii + 3)],
1010 ((char *) VALUE_CONTENTS (arg)) + argbytes,
1011 (len - argbytes) > reg_size
1012 ? reg_size : len - argbytes);
1013 ++ii, argbytes += reg_size;
1016 goto ran_out_of_registers_for_arguments;
1022 { /* Argument can fit in one register. No problem. */
1023 int adj = TARGET_BYTE_ORDER == BFD_ENDIAN_BIG ? reg_size - len : 0;
1024 memset (®isters[REGISTER_BYTE (ii + 3)], 0, reg_size);
1025 memcpy ((char *)®isters[REGISTER_BYTE (ii + 3)] + adj,
1026 VALUE_CONTENTS (arg), len);
1031 ran_out_of_registers_for_arguments:
1033 saved_sp = read_sp ();
1035 /* location for 8 parameters are always reserved. */
1038 /* another six words for back chain, TOC register, link register, etc. */
1041 /* stack pointer must be quadword aligned */
1044 /* if there are more arguments, allocate space for them in
1045 the stack, then push them starting from the ninth one. */
1047 if ((argno < nargs) || argbytes)
1053 space += ((len - argbytes + 3) & -4);
1059 for (; jj < nargs; ++jj)
1061 struct value *val = args[jj];
1062 space += ((TYPE_LENGTH (VALUE_TYPE (val))) + 3) & -4;
1065 /* add location required for the rest of the parameters */
1066 space = (space + 15) & -16;
1069 /* This is another instance we need to be concerned about securing our
1070 stack space. If we write anything underneath %sp (r1), we might conflict
1071 with the kernel who thinks he is free to use this area. So, update %sp
1072 first before doing anything else. */
1074 write_register (SP_REGNUM, sp);
1076 /* if the last argument copied into the registers didn't fit there
1077 completely, push the rest of it into stack. */
1081 write_memory (sp + 24 + (ii * 4),
1082 ((char *) VALUE_CONTENTS (arg)) + argbytes,
1085 ii += ((len - argbytes + 3) & -4) / 4;
1088 /* push the rest of the arguments into stack. */
1089 for (; argno < nargs; ++argno)
1093 type = check_typedef (VALUE_TYPE (arg));
1094 len = TYPE_LENGTH (type);
1097 /* float types should be passed in fpr's, as well as in the stack. */
1098 if (TYPE_CODE (type) == TYPE_CODE_FLT && f_argno < 13)
1103 "Fatal Error: a floating point parameter #%d with a size > 8 is found!\n", argno);
1105 memcpy (®isters[REGISTER_BYTE (FP0_REGNUM + 1 + f_argno)],
1106 VALUE_CONTENTS (arg),
1111 write_memory (sp + 24 + (ii * 4), (char *) VALUE_CONTENTS (arg), len);
1112 ii += ((len + 3) & -4) / 4;
1116 /* Secure stack areas first, before doing anything else. */
1117 write_register (SP_REGNUM, sp);
1119 /* set back chain properly */
1120 store_address (tmp_buffer, 4, saved_sp);
1121 write_memory (sp, tmp_buffer, 4);
1123 target_store_registers (-1);
1127 /* Function: ppc_push_return_address (pc, sp)
1128 Set up the return address for the inferior function call. */
1131 ppc_push_return_address (CORE_ADDR pc, CORE_ADDR sp)
1133 write_register (gdbarch_tdep (current_gdbarch)->ppc_lr_regnum,
1134 CALL_DUMMY_ADDRESS ());
1138 /* Extract a function return value of type TYPE from raw register array
1139 REGBUF, and copy that return value into VALBUF in virtual format. */
1142 rs6000_extract_return_value (struct type *valtype, char *regbuf, char *valbuf)
1145 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
1147 if (TYPE_CODE (valtype) == TYPE_CODE_FLT)
1152 /* floats and doubles are returned in fpr1. fpr's have a size of 8 bytes.
1153 We need to truncate the return value into float size (4 byte) if
1156 if (TYPE_LENGTH (valtype) > 4) /* this is a double */
1158 ®buf[REGISTER_BYTE (FP0_REGNUM + 1)],
1159 TYPE_LENGTH (valtype));
1162 memcpy (&dd, ®buf[REGISTER_BYTE (FP0_REGNUM + 1)], 8);
1164 memcpy (valbuf, &ff, sizeof (float));
1167 else if (TYPE_CODE (valtype) == TYPE_CODE_ARRAY
1168 && TYPE_LENGTH (valtype) == 16
1169 && TYPE_VECTOR (valtype))
1171 memcpy (valbuf, regbuf + REGISTER_BYTE (tdep->ppc_vr0_regnum + 2),
1172 TYPE_LENGTH (valtype));
1176 /* return value is copied starting from r3. */
1177 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
1178 && TYPE_LENGTH (valtype) < REGISTER_RAW_SIZE (3))
1179 offset = REGISTER_RAW_SIZE (3) - TYPE_LENGTH (valtype);
1182 regbuf + REGISTER_BYTE (3) + offset,
1183 TYPE_LENGTH (valtype));
1187 /* Keep structure return address in this variable.
1188 FIXME: This is a horrid kludge which should not be allowed to continue
1189 living. This only allows a single nested call to a structure-returning
1192 static CORE_ADDR rs6000_struct_return_address;
1194 /* Return whether handle_inferior_event() should proceed through code
1195 starting at PC in function NAME when stepping.
1197 The AIX -bbigtoc linker option generates functions @FIX0, @FIX1, etc. to
1198 handle memory references that are too distant to fit in instructions
1199 generated by the compiler. For example, if 'foo' in the following
1204 is greater than 32767, the linker might replace the lwz with a branch to
1205 somewhere in @FIX1 that does the load in 2 instructions and then branches
1206 back to where execution should continue.
1208 GDB should silently step over @FIX code, just like AIX dbx does.
1209 Unfortunately, the linker uses the "b" instruction for the branches,
1210 meaning that the link register doesn't get set. Therefore, GDB's usual
1211 step_over_function() mechanism won't work.
1213 Instead, use the IN_SOLIB_RETURN_TRAMPOLINE and SKIP_TRAMPOLINE_CODE hooks
1214 in handle_inferior_event() to skip past @FIX code. */
1217 rs6000_in_solib_return_trampoline (CORE_ADDR pc, char *name)
1219 return name && !strncmp (name, "@FIX", 4);
1222 /* Skip code that the user doesn't want to see when stepping:
1224 1. Indirect function calls use a piece of trampoline code to do context
1225 switching, i.e. to set the new TOC table. Skip such code if we are on
1226 its first instruction (as when we have single-stepped to here).
1228 2. Skip shared library trampoline code (which is different from
1229 indirect function call trampolines).
1231 3. Skip bigtoc fixup code.
1233 Result is desired PC to step until, or NULL if we are not in
1234 code that should be skipped. */
1237 rs6000_skip_trampoline_code (CORE_ADDR pc)
1239 register unsigned int ii, op;
1241 CORE_ADDR solib_target_pc;
1242 struct minimal_symbol *msymbol;
1244 static unsigned trampoline_code[] =
1246 0x800b0000, /* l r0,0x0(r11) */
1247 0x90410014, /* st r2,0x14(r1) */
1248 0x7c0903a6, /* mtctr r0 */
1249 0x804b0004, /* l r2,0x4(r11) */
1250 0x816b0008, /* l r11,0x8(r11) */
1251 0x4e800420, /* bctr */
1252 0x4e800020, /* br */
1256 /* Check for bigtoc fixup code. */
1257 msymbol = lookup_minimal_symbol_by_pc (pc);
1258 if (msymbol && rs6000_in_solib_return_trampoline (pc, SYMBOL_NAME (msymbol)))
1260 /* Double-check that the third instruction from PC is relative "b". */
1261 op = read_memory_integer (pc + 8, 4);
1262 if ((op & 0xfc000003) == 0x48000000)
1264 /* Extract bits 6-29 as a signed 24-bit relative word address and
1265 add it to the containing PC. */
1266 rel = ((int)(op << 6) >> 6);
1267 return pc + 8 + rel;
1271 /* If pc is in a shared library trampoline, return its target. */
1272 solib_target_pc = find_solib_trampoline_target (pc);
1273 if (solib_target_pc)
1274 return solib_target_pc;
1276 for (ii = 0; trampoline_code[ii]; ++ii)
1278 op = read_memory_integer (pc + (ii * 4), 4);
1279 if (op != trampoline_code[ii])
1282 ii = read_register (11); /* r11 holds destination addr */
1283 pc = read_memory_addr (ii, gdbarch_tdep (current_gdbarch)->wordsize); /* (r11) value */
1287 /* Determines whether the function FI has a frame on the stack or not. */
1290 rs6000_frameless_function_invocation (struct frame_info *fi)
1292 CORE_ADDR func_start;
1293 struct rs6000_framedata fdata;
1295 /* Don't even think about framelessness except on the innermost frame
1296 or if the function was interrupted by a signal. */
1297 if (fi->next != NULL && !fi->next->signal_handler_caller)
1300 func_start = get_pc_function_start (fi->pc);
1302 /* If we failed to find the start of the function, it is a mistake
1303 to inspect the instructions. */
1307 /* A frame with a zero PC is usually created by dereferencing a NULL
1308 function pointer, normally causing an immediate core dump of the
1309 inferior. Mark function as frameless, as the inferior has no chance
1310 of setting up a stack frame. */
1317 (void) skip_prologue (func_start, fi->pc, &fdata);
1318 return fdata.frameless;
1321 /* Return the PC saved in a frame */
1324 rs6000_frame_saved_pc (struct frame_info *fi)
1326 CORE_ADDR func_start;
1327 struct rs6000_framedata fdata;
1328 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
1329 int wordsize = tdep->wordsize;
1331 if (fi->signal_handler_caller)
1332 return read_memory_addr (fi->frame + SIG_FRAME_PC_OFFSET, wordsize);
1334 if (PC_IN_CALL_DUMMY (fi->pc, fi->frame, fi->frame))
1335 return generic_read_register_dummy (fi->pc, fi->frame, PC_REGNUM);
1337 func_start = get_pc_function_start (fi->pc);
1339 /* If we failed to find the start of the function, it is a mistake
1340 to inspect the instructions. */
1344 (void) skip_prologue (func_start, fi->pc, &fdata);
1346 if (fdata.lr_offset == 0 && fi->next != NULL)
1348 if (fi->next->signal_handler_caller)
1349 return read_memory_addr (fi->next->frame + SIG_FRAME_LR_OFFSET,
1352 return read_memory_addr (FRAME_CHAIN (fi) + tdep->lr_frame_offset,
1356 if (fdata.lr_offset == 0)
1357 return read_register (gdbarch_tdep (current_gdbarch)->ppc_lr_regnum);
1359 return read_memory_addr (FRAME_CHAIN (fi) + fdata.lr_offset, wordsize);
1362 /* If saved registers of frame FI are not known yet, read and cache them.
1363 &FDATAP contains rs6000_framedata; TDATAP can be NULL,
1364 in which case the framedata are read. */
1367 frame_get_saved_regs (struct frame_info *fi, struct rs6000_framedata *fdatap)
1369 CORE_ADDR frame_addr;
1370 struct rs6000_framedata work_fdata;
1371 struct gdbarch_tdep * tdep = gdbarch_tdep (current_gdbarch);
1372 int wordsize = tdep->wordsize;
1379 fdatap = &work_fdata;
1380 (void) skip_prologue (get_pc_function_start (fi->pc), fi->pc, fdatap);
1383 frame_saved_regs_zalloc (fi);
1385 /* If there were any saved registers, figure out parent's stack
1387 /* The following is true only if the frame doesn't have a call to
1390 if (fdatap->saved_fpr == 0
1391 && fdatap->saved_gpr == 0
1392 && fdatap->saved_vr == 0
1393 && fdatap->lr_offset == 0
1394 && fdatap->cr_offset == 0
1395 && fdatap->vr_offset == 0)
1398 /* NOTE: cagney/2002-04-14: The ->frame points to the inner-most
1399 address of the current frame. Things might be easier if the
1400 ->frame pointed to the outer-most address of the frame. In the
1401 mean time, the address of the prev frame is used as the base
1402 address of this frame. */
1403 frame_addr = FRAME_CHAIN (fi);
1405 /* if != -1, fdatap->saved_fpr is the smallest number of saved_fpr.
1406 All fpr's from saved_fpr to fp31 are saved. */
1408 if (fdatap->saved_fpr >= 0)
1411 CORE_ADDR fpr_addr = frame_addr + fdatap->fpr_offset;
1412 for (i = fdatap->saved_fpr; i < 32; i++)
1414 fi->saved_regs[FP0_REGNUM + i] = fpr_addr;
1419 /* if != -1, fdatap->saved_gpr is the smallest number of saved_gpr.
1420 All gpr's from saved_gpr to gpr31 are saved. */
1422 if (fdatap->saved_gpr >= 0)
1425 CORE_ADDR gpr_addr = frame_addr + fdatap->gpr_offset;
1426 for (i = fdatap->saved_gpr; i < 32; i++)
1428 fi->saved_regs[i] = gpr_addr;
1429 gpr_addr += wordsize;
1433 /* if != -1, fdatap->saved_vr is the smallest number of saved_vr.
1434 All vr's from saved_vr to vr31 are saved. */
1435 if (tdep->ppc_vr0_regnum != -1 && tdep->ppc_vrsave_regnum != -1)
1437 if (fdatap->saved_vr >= 0)
1440 CORE_ADDR vr_addr = frame_addr + fdatap->vr_offset;
1441 for (i = fdatap->saved_vr; i < 32; i++)
1443 fi->saved_regs[tdep->ppc_vr0_regnum + i] = vr_addr;
1444 vr_addr += REGISTER_RAW_SIZE (tdep->ppc_vr0_regnum);
1449 /* If != 0, fdatap->cr_offset is the offset from the frame that holds
1451 if (fdatap->cr_offset != 0)
1452 fi->saved_regs[tdep->ppc_cr_regnum] = frame_addr + fdatap->cr_offset;
1454 /* If != 0, fdatap->lr_offset is the offset from the frame that holds
1456 if (fdatap->lr_offset != 0)
1457 fi->saved_regs[tdep->ppc_lr_regnum] = frame_addr + fdatap->lr_offset;
1459 /* If != 0, fdatap->vrsave_offset is the offset from the frame that holds
1461 if (fdatap->vrsave_offset != 0)
1462 fi->saved_regs[tdep->ppc_vrsave_regnum] = frame_addr + fdatap->vrsave_offset;
1465 /* Return the address of a frame. This is the inital %sp value when the frame
1466 was first allocated. For functions calling alloca(), it might be saved in
1467 an alloca register. */
1470 frame_initial_stack_address (struct frame_info *fi)
1473 struct rs6000_framedata fdata;
1474 struct frame_info *callee_fi;
1476 /* if the initial stack pointer (frame address) of this frame is known,
1479 if (fi->extra_info->initial_sp)
1480 return fi->extra_info->initial_sp;
1482 /* find out if this function is using an alloca register.. */
1484 (void) skip_prologue (get_pc_function_start (fi->pc), fi->pc, &fdata);
1486 /* if saved registers of this frame are not known yet, read and cache them. */
1488 if (!fi->saved_regs)
1489 frame_get_saved_regs (fi, &fdata);
1491 /* If no alloca register used, then fi->frame is the value of the %sp for
1492 this frame, and it is good enough. */
1494 if (fdata.alloca_reg < 0)
1496 fi->extra_info->initial_sp = fi->frame;
1497 return fi->extra_info->initial_sp;
1500 /* There is an alloca register, use its value, in the current frame,
1501 as the initial stack pointer. */
1503 char *tmpbuf = alloca (MAX_REGISTER_RAW_SIZE);
1504 if (frame_register_read (fi, fdata.alloca_reg, tmpbuf))
1506 fi->extra_info->initial_sp
1507 = extract_unsigned_integer (tmpbuf,
1508 REGISTER_RAW_SIZE (fdata.alloca_reg));
1511 /* NOTE: cagney/2002-04-17: At present the only time
1512 frame_register_read will fail is when the register isn't
1513 available. If that does happen, use the frame. */
1514 fi->extra_info->initial_sp = fi->frame;
1516 return fi->extra_info->initial_sp;
1519 /* Describe the pointer in each stack frame to the previous stack frame
1522 /* FRAME_CHAIN takes a frame's nominal address
1523 and produces the frame's chain-pointer. */
1525 /* In the case of the RS/6000, the frame's nominal address
1526 is the address of a 4-byte word containing the calling frame's address. */
1529 rs6000_frame_chain (struct frame_info *thisframe)
1531 CORE_ADDR fp, fpp, lr;
1532 int wordsize = gdbarch_tdep (current_gdbarch)->wordsize;
1534 if (PC_IN_CALL_DUMMY (thisframe->pc, thisframe->frame, thisframe->frame))
1535 return thisframe->frame; /* dummy frame same as caller's frame */
1537 if (inside_entry_file (thisframe->pc) ||
1538 thisframe->pc == entry_point_address ())
1541 if (thisframe->signal_handler_caller)
1542 fp = read_memory_addr (thisframe->frame + SIG_FRAME_FP_OFFSET,
1544 else if (thisframe->next != NULL
1545 && thisframe->next->signal_handler_caller
1546 && FRAMELESS_FUNCTION_INVOCATION (thisframe))
1547 /* A frameless function interrupted by a signal did not change the
1549 fp = FRAME_FP (thisframe);
1551 fp = read_memory_addr ((thisframe)->frame, wordsize);
1553 lr = read_register (gdbarch_tdep (current_gdbarch)->ppc_lr_regnum);
1554 if (lr == entry_point_address ())
1555 if (fp != 0 && (fpp = read_memory_addr (fp, wordsize)) != 0)
1556 if (PC_IN_CALL_DUMMY (lr, fpp, fpp))
1562 /* Return the size of register REG when words are WORDSIZE bytes long. If REG
1563 isn't available with that word size, return 0. */
1566 regsize (const struct reg *reg, int wordsize)
1568 return wordsize == 8 ? reg->sz64 : reg->sz32;
1571 /* Return the name of register number N, or null if no such register exists
1572 in the current architecture. */
1575 rs6000_register_name (int n)
1577 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
1578 const struct reg *reg = tdep->regs + n;
1580 if (!regsize (reg, tdep->wordsize))
1585 /* Index within `registers' of the first byte of the space for
1589 rs6000_register_byte (int n)
1591 return gdbarch_tdep (current_gdbarch)->regoff[n];
1594 /* Return the number of bytes of storage in the actual machine representation
1595 for register N if that register is available, else return 0. */
1598 rs6000_register_raw_size (int n)
1600 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
1601 const struct reg *reg = tdep->regs + n;
1602 return regsize (reg, tdep->wordsize);
1605 /* Return the GDB type object for the "standard" data type
1606 of data in register N. */
1608 static struct type *
1609 rs6000_register_virtual_type (int n)
1611 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
1612 const struct reg *reg = tdep->regs + n;
1615 return builtin_type_double;
1618 int size = regsize (reg, tdep->wordsize);
1622 return builtin_type_int64;
1625 return builtin_type_vec128;
1628 return builtin_type_int32;
1634 /* For the PowerPC, it appears that the debug info marks float parameters as
1635 floats regardless of whether the function is prototyped, but the actual
1636 values are always passed in as doubles. Tell gdb to always assume that
1637 floats are passed as doubles and then converted in the callee. */
1640 rs6000_coerce_float_to_double (struct type *formal, struct type *actual)
1645 /* Return whether register N requires conversion when moving from raw format
1648 The register format for RS/6000 floating point registers is always
1649 double, we need a conversion if the memory format is float. */
1652 rs6000_register_convertible (int n)
1654 const struct reg *reg = gdbarch_tdep (current_gdbarch)->regs + n;
1658 /* Convert data from raw format for register N in buffer FROM
1659 to virtual format with type TYPE in buffer TO. */
1662 rs6000_register_convert_to_virtual (int n, struct type *type,
1663 char *from, char *to)
1665 if (TYPE_LENGTH (type) != REGISTER_RAW_SIZE (n))
1667 double val = extract_floating (from, REGISTER_RAW_SIZE (n));
1668 store_floating (to, TYPE_LENGTH (type), val);
1671 memcpy (to, from, REGISTER_RAW_SIZE (n));
1674 /* Convert data from virtual format with type TYPE in buffer FROM
1675 to raw format for register N in buffer TO. */
1678 rs6000_register_convert_to_raw (struct type *type, int n,
1679 char *from, char *to)
1681 if (TYPE_LENGTH (type) != REGISTER_RAW_SIZE (n))
1683 double val = extract_floating (from, TYPE_LENGTH (type));
1684 store_floating (to, REGISTER_RAW_SIZE (n), val);
1687 memcpy (to, from, REGISTER_RAW_SIZE (n));
1691 altivec_register_p (int regno)
1693 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
1694 if (tdep->ppc_vr0_regnum < 0 || tdep->ppc_vrsave_regnum < 0)
1697 return (regno >= tdep->ppc_vr0_regnum && regno <= tdep->ppc_vrsave_regnum);
1701 rs6000_do_altivec_registers (int regnum)
1704 char *raw_buffer = (char*) alloca (MAX_REGISTER_RAW_SIZE);
1705 char *virtual_buffer = (char*) alloca (MAX_REGISTER_VIRTUAL_SIZE);
1706 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
1708 for (i = tdep->ppc_vr0_regnum; i <= tdep->ppc_vrsave_regnum; i++)
1710 /* If we want just one reg, check that this is the one we want. */
1711 if (regnum != -1 && i != regnum)
1714 /* If the register name is empty, it is undefined for this
1715 processor, so don't display anything. */
1716 if (REGISTER_NAME (i) == NULL || *(REGISTER_NAME (i)) == '\0')
1719 fputs_filtered (REGISTER_NAME (i), gdb_stdout);
1720 print_spaces_filtered (15 - strlen (REGISTER_NAME (i)), gdb_stdout);
1722 /* Get the data in raw format. */
1723 if (!frame_register_read (selected_frame, i, raw_buffer))
1725 printf_filtered ("*value not available*\n");
1729 /* Convert raw data to virtual format if necessary. */
1730 if (REGISTER_CONVERTIBLE (i))
1731 REGISTER_CONVERT_TO_VIRTUAL (i, REGISTER_VIRTUAL_TYPE (i),
1732 raw_buffer, virtual_buffer);
1734 memcpy (virtual_buffer, raw_buffer, REGISTER_VIRTUAL_SIZE (i));
1736 /* Print as integer in hex only. */
1737 val_print (REGISTER_VIRTUAL_TYPE (i), virtual_buffer, 0, 0,
1738 gdb_stdout, 'x', 1, 0, Val_pretty_default);
1739 printf_filtered ("\n");
1744 rs6000_altivec_registers_info (char *addr_exp, int from_tty)
1746 int regnum, numregs;
1749 if (!target_has_registers)
1750 error ("The program has no registers now.");
1751 if (selected_frame == NULL)
1752 error ("No selected frame.");
1756 rs6000_do_altivec_registers (-1);
1760 numregs = NUM_REGS + NUM_PSEUDO_REGS;
1763 if (addr_exp[0] == '$')
1766 while (*end != '\0' && *end != ' ' && *end != '\t')
1769 regnum = target_map_name_to_register (addr_exp, end - addr_exp);
1773 if (*addr_exp >= '0' && *addr_exp <= '9')
1774 regnum = atoi (addr_exp); /* Take a number */
1775 if (regnum >= numregs) /* Bad name, or bad number */
1776 error ("%.*s: invalid register", end - addr_exp, addr_exp);
1779 rs6000_do_altivec_registers (regnum);
1782 while (*addr_exp == ' ' || *addr_exp == '\t')
1785 while (*addr_exp != '\0');
1789 rs6000_do_registers_info (int regnum, int fpregs)
1792 int numregs = NUM_REGS + NUM_PSEUDO_REGS;
1793 char *raw_buffer = (char*) alloca (MAX_REGISTER_RAW_SIZE);
1794 char *virtual_buffer = (char*) alloca (MAX_REGISTER_VIRTUAL_SIZE);
1796 for (i = 0; i < numregs; i++)
1798 /* Decide between printing all regs, nonfloat regs, or specific reg. */
1801 if ((TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT && !fpregs)
1802 || (altivec_register_p (i) && !fpregs))
1811 /* If the register name is empty, it is undefined for this
1812 processor, so don't display anything. */
1813 if (REGISTER_NAME (i) == NULL || *(REGISTER_NAME (i)) == '\0')
1816 fputs_filtered (REGISTER_NAME (i), gdb_stdout);
1817 print_spaces_filtered (15 - strlen (REGISTER_NAME (i)), gdb_stdout);
1819 /* Get the data in raw format. */
1820 if (!frame_register_read (selected_frame, i, raw_buffer))
1822 printf_filtered ("*value not available*\n");
1826 /* Convert raw data to virtual format if necessary. */
1827 if (REGISTER_CONVERTIBLE (i))
1828 REGISTER_CONVERT_TO_VIRTUAL (i, REGISTER_VIRTUAL_TYPE (i),
1829 raw_buffer, virtual_buffer);
1831 memcpy (virtual_buffer, raw_buffer, REGISTER_VIRTUAL_SIZE (i));
1833 /* If virtual format is floating, print it that way, and in raw hex. */
1834 if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT)
1838 val_print (REGISTER_VIRTUAL_TYPE (i), virtual_buffer, 0, 0,
1839 gdb_stdout, 0, 1, 0, Val_pretty_default);
1841 printf_filtered ("\t(raw 0x");
1842 for (j = 0; j < REGISTER_RAW_SIZE (i); j++)
1844 register int idx = TARGET_BYTE_ORDER == BFD_ENDIAN_BIG ? j
1845 : REGISTER_RAW_SIZE (i) - 1 - j;
1846 printf_filtered ("%02x", (unsigned char) raw_buffer[idx]);
1848 printf_filtered (")");
1852 /* Print the register in hex. */
1853 val_print (REGISTER_VIRTUAL_TYPE (i), virtual_buffer, 0, 0,
1854 gdb_stdout, 'x', 1, 0, Val_pretty_default);
1855 /* If not a vector register, print it also in decimal. */
1856 if (!altivec_register_p (i))
1858 printf_filtered ("\t");
1859 val_print (REGISTER_VIRTUAL_TYPE (i), virtual_buffer, 0, 0,
1860 gdb_stdout, 0, 1, 0, Val_pretty_default);
1863 printf_filtered ("\n");
1867 /* Convert a dbx stab register number (from `r' declaration) to a gdb
1870 rs6000_stab_reg_to_regnum (int num)
1876 regnum = gdbarch_tdep (current_gdbarch)->ppc_mq_regnum;
1879 regnum = gdbarch_tdep (current_gdbarch)->ppc_lr_regnum;
1882 regnum = gdbarch_tdep (current_gdbarch)->ppc_ctr_regnum;
1885 regnum = gdbarch_tdep (current_gdbarch)->ppc_xer_regnum;
1894 /* Store the address of the place in which to copy the structure the
1895 subroutine will return. This is called from call_function.
1897 In RS/6000, struct return addresses are passed as an extra parameter in r3.
1898 In function return, callee is not responsible of returning this address
1899 back. Since gdb needs to find it, we will store in a designated variable
1900 `rs6000_struct_return_address'. */
1903 rs6000_store_struct_return (CORE_ADDR addr, CORE_ADDR sp)
1905 write_register (3, addr);
1906 rs6000_struct_return_address = addr;
1909 /* Write into appropriate registers a function return value
1910 of type TYPE, given in virtual format. */
1913 rs6000_store_return_value (struct type *type, char *valbuf)
1915 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
1917 if (TYPE_CODE (type) == TYPE_CODE_FLT)
1919 /* Floating point values are returned starting from FPR1 and up.
1920 Say a double_double_double type could be returned in
1921 FPR1/FPR2/FPR3 triple. */
1923 write_register_bytes (REGISTER_BYTE (FP0_REGNUM + 1), valbuf,
1924 TYPE_LENGTH (type));
1925 else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
1927 if (TYPE_LENGTH (type) == 16
1928 && TYPE_VECTOR (type))
1929 write_register_bytes (REGISTER_BYTE (tdep->ppc_vr0_regnum + 2),
1930 valbuf, TYPE_LENGTH (type));
1933 /* Everything else is returned in GPR3 and up. */
1934 write_register_bytes (REGISTER_BYTE (gdbarch_tdep (current_gdbarch)->ppc_gp0_regnum + 3),
1935 valbuf, TYPE_LENGTH (type));
1938 /* Extract from an array REGBUF containing the (raw) register state
1939 the address in which a function should return its structure value,
1940 as a CORE_ADDR (or an expression that can be used as one). */
1943 rs6000_extract_struct_value_address (char *regbuf)
1945 return rs6000_struct_return_address;
1948 /* Return whether PC is in a dummy function call.
1950 FIXME: This just checks for the end of the stack, which is broken
1951 for things like stepping through gcc nested function stubs. */
1954 rs6000_pc_in_call_dummy (CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR fp)
1956 return sp < pc && pc < fp;
1959 /* Hook called when a new child process is started. */
1962 rs6000_create_inferior (int pid)
1964 if (rs6000_set_host_arch_hook)
1965 rs6000_set_host_arch_hook (pid);
1968 /* Support for CONVERT_FROM_FUNC_PTR_ADDR(ADDR).
1970 Usually a function pointer's representation is simply the address
1971 of the function. On the RS/6000 however, a function pointer is
1972 represented by a pointer to a TOC entry. This TOC entry contains
1973 three words, the first word is the address of the function, the
1974 second word is the TOC pointer (r2), and the third word is the
1975 static chain value. Throughout GDB it is currently assumed that a
1976 function pointer contains the address of the function, which is not
1977 easy to fix. In addition, the conversion of a function address to
1978 a function pointer would require allocation of a TOC entry in the
1979 inferior's memory space, with all its drawbacks. To be able to
1980 call C++ virtual methods in the inferior (which are called via
1981 function pointers), find_function_addr uses this function to get the
1982 function address from a function pointer. */
1984 /* Return real function address if ADDR (a function pointer) is in the data
1985 space and is therefore a special function pointer. */
1988 rs6000_convert_from_func_ptr_addr (CORE_ADDR addr)
1990 struct obj_section *s;
1992 s = find_pc_section (addr);
1993 if (s && s->the_bfd_section->flags & SEC_CODE)
1996 /* ADDR is in the data space, so it's a special function pointer. */
1997 return read_memory_addr (addr, gdbarch_tdep (current_gdbarch)->wordsize);
2001 /* Handling the various POWER/PowerPC variants. */
2004 /* The arrays here called registers_MUMBLE hold information about available
2007 For each family of PPC variants, I've tried to isolate out the
2008 common registers and put them up front, so that as long as you get
2009 the general family right, GDB will correctly identify the registers
2010 common to that family. The common register sets are:
2012 For the 60x family: hid0 hid1 iabr dabr pir
2014 For the 505 and 860 family: eie eid nri
2016 For the 403 and 403GC: icdbdr esr dear evpr cdbcr tsr tcr pit tbhi
2017 tblo srr2 srr3 dbsr dbcr iac1 iac2 dac1 dac2 dccr iccr pbl1
2020 Most of these register groups aren't anything formal. I arrived at
2021 them by looking at the registers that occurred in more than one
2024 Note: kevinb/2002-04-30: Support for the fpscr register was added
2025 during April, 2002. Slot 70 is being used for PowerPC and slot 71
2026 for Power. For PowerPC, slot 70 was unused and was already in the
2027 PPC_UISA_SPRS which is ideally where fpscr should go. For Power,
2028 slot 70 was being used for "mq", so the next available slot (71)
2029 was chosen. It would have been nice to be able to make the
2030 register numbers the same across processor cores, but this wasn't
2031 possible without either 1) renumbering some registers for some
2032 processors or 2) assigning fpscr to a really high slot that's
2033 larger than any current register number. Doing (1) is bad because
2034 existing stubs would break. Doing (2) is undesirable because it
2035 would introduce a really large gap between fpscr and the rest of
2036 the registers for most processors. */
2038 /* Convenience macros for populating register arrays. */
2040 /* Within another macro, convert S to a string. */
2044 /* Return a struct reg defining register NAME that's 32 bits on 32-bit systems
2045 and 64 bits on 64-bit systems. */
2046 #define R(name) { STR(name), 4, 8, 0 }
2048 /* Return a struct reg defining register NAME that's 32 bits on all
2050 #define R4(name) { STR(name), 4, 4, 0 }
2052 /* Return a struct reg defining register NAME that's 64 bits on all
2054 #define R8(name) { STR(name), 8, 8, 0 }
2056 /* Return a struct reg defining register NAME that's 128 bits on all
2058 #define R16(name) { STR(name), 16, 16, 0 }
2060 /* Return a struct reg defining floating-point register NAME. */
2061 #define F(name) { STR(name), 8, 8, 1 }
2063 /* Return a struct reg defining register NAME that's 32 bits on 32-bit
2064 systems and that doesn't exist on 64-bit systems. */
2065 #define R32(name) { STR(name), 4, 0, 0 }
2067 /* Return a struct reg defining register NAME that's 64 bits on 64-bit
2068 systems and that doesn't exist on 32-bit systems. */
2069 #define R64(name) { STR(name), 0, 8, 0 }
2071 /* Return a struct reg placeholder for a register that doesn't exist. */
2072 #define R0 { 0, 0, 0, 0 }
2074 /* UISA registers common across all architectures, including POWER. */
2076 #define COMMON_UISA_REGS \
2077 /* 0 */ R(r0), R(r1), R(r2), R(r3), R(r4), R(r5), R(r6), R(r7), \
2078 /* 8 */ R(r8), R(r9), R(r10),R(r11),R(r12),R(r13),R(r14),R(r15), \
2079 /* 16 */ R(r16),R(r17),R(r18),R(r19),R(r20),R(r21),R(r22),R(r23), \
2080 /* 24 */ R(r24),R(r25),R(r26),R(r27),R(r28),R(r29),R(r30),R(r31), \
2081 /* 32 */ F(f0), F(f1), F(f2), F(f3), F(f4), F(f5), F(f6), F(f7), \
2082 /* 40 */ F(f8), F(f9), F(f10),F(f11),F(f12),F(f13),F(f14),F(f15), \
2083 /* 48 */ F(f16),F(f17),F(f18),F(f19),F(f20),F(f21),F(f22),F(f23), \
2084 /* 56 */ F(f24),F(f25),F(f26),F(f27),F(f28),F(f29),F(f30),F(f31), \
2085 /* 64 */ R(pc), R(ps)
2087 #define COMMON_UISA_NOFP_REGS \
2088 /* 0 */ R(r0), R(r1), R(r2), R(r3), R(r4), R(r5), R(r6), R(r7), \
2089 /* 8 */ R(r8), R(r9), R(r10),R(r11),R(r12),R(r13),R(r14),R(r15), \
2090 /* 16 */ R(r16),R(r17),R(r18),R(r19),R(r20),R(r21),R(r22),R(r23), \
2091 /* 24 */ R(r24),R(r25),R(r26),R(r27),R(r28),R(r29),R(r30),R(r31), \
2092 /* 32 */ R0, R0, R0, R0, R0, R0, R0, R0, \
2093 /* 40 */ R0, R0, R0, R0, R0, R0, R0, R0, \
2094 /* 48 */ R0, R0, R0, R0, R0, R0, R0, R0, \
2095 /* 56 */ R0, R0, R0, R0, R0, R0, R0, R0, \
2096 /* 64 */ R(pc), R(ps)
2098 /* UISA-level SPRs for PowerPC. */
2099 #define PPC_UISA_SPRS \
2100 /* 66 */ R4(cr), R(lr), R(ctr), R4(xer), R4(fpscr)
2102 /* Segment registers, for PowerPC. */
2103 #define PPC_SEGMENT_REGS \
2104 /* 71 */ R32(sr0), R32(sr1), R32(sr2), R32(sr3), \
2105 /* 75 */ R32(sr4), R32(sr5), R32(sr6), R32(sr7), \
2106 /* 79 */ R32(sr8), R32(sr9), R32(sr10), R32(sr11), \
2107 /* 83 */ R32(sr12), R32(sr13), R32(sr14), R32(sr15)
2109 /* OEA SPRs for PowerPC. */
2110 #define PPC_OEA_SPRS \
2112 /* 88 */ R(ibat0u), R(ibat0l), R(ibat1u), R(ibat1l), \
2113 /* 92 */ R(ibat2u), R(ibat2l), R(ibat3u), R(ibat3l), \
2114 /* 96 */ R(dbat0u), R(dbat0l), R(dbat1u), R(dbat1l), \
2115 /* 100 */ R(dbat2u), R(dbat2l), R(dbat3u), R(dbat3l), \
2116 /* 104 */ R(sdr1), R64(asr), R(dar), R4(dsisr), \
2117 /* 108 */ R(sprg0), R(sprg1), R(sprg2), R(sprg3), \
2118 /* 112 */ R(srr0), R(srr1), R(tbl), R(tbu), \
2119 /* 116 */ R4(dec), R(dabr), R4(ear)
2121 /* AltiVec registers */
2122 #define PPC_ALTIVEC_REGS \
2123 /*119*/R16(vr0), R16(vr1), R16(vr2), R16(vr3), R16(vr4), R16(vr5), R16(vr6), R16(vr7), \
2124 /*127*/R16(vr8), R16(vr9), R16(vr10),R16(vr11),R16(vr12),R16(vr13),R16(vr14),R16(vr15), \
2125 /*135*/R16(vr16),R16(vr17),R16(vr18),R16(vr19),R16(vr20),R16(vr21),R16(vr22),R16(vr23), \
2126 /*143*/R16(vr24),R16(vr25),R16(vr26),R16(vr27),R16(vr28),R16(vr29),R16(vr30),R16(vr31), \
2127 /*151*/R4(vscr), R4(vrsave)
2129 /* IBM POWER (pre-PowerPC) architecture, user-level view. We only cover
2130 user-level SPR's. */
2131 static const struct reg registers_power[] =
2134 /* 66 */ R4(cnd), R(lr), R(cnt), R4(xer), R4(mq),
2138 /* PowerPC UISA - a PPC processor as viewed by user-level code. A UISA-only
2139 view of the PowerPC. */
2140 static const struct reg registers_powerpc[] =
2147 /* PowerPC UISA - a PPC processor as viewed by user-level
2148 code, but without floating point registers. */
2149 static const struct reg registers_powerpc_nofp[] =
2151 COMMON_UISA_NOFP_REGS,
2155 /* IBM PowerPC 403. */
2156 static const struct reg registers_403[] =
2162 /* 119 */ R(icdbdr), R(esr), R(dear), R(evpr),
2163 /* 123 */ R(cdbcr), R(tsr), R(tcr), R(pit),
2164 /* 127 */ R(tbhi), R(tblo), R(srr2), R(srr3),
2165 /* 131 */ R(dbsr), R(dbcr), R(iac1), R(iac2),
2166 /* 135 */ R(dac1), R(dac2), R(dccr), R(iccr),
2167 /* 139 */ R(pbl1), R(pbu1), R(pbl2), R(pbu2)
2170 /* IBM PowerPC 403GC. */
2171 static const struct reg registers_403GC[] =
2177 /* 119 */ R(icdbdr), R(esr), R(dear), R(evpr),
2178 /* 123 */ R(cdbcr), R(tsr), R(tcr), R(pit),
2179 /* 127 */ R(tbhi), R(tblo), R(srr2), R(srr3),
2180 /* 131 */ R(dbsr), R(dbcr), R(iac1), R(iac2),
2181 /* 135 */ R(dac1), R(dac2), R(dccr), R(iccr),
2182 /* 139 */ R(pbl1), R(pbu1), R(pbl2), R(pbu2),
2183 /* 143 */ R(zpr), R(pid), R(sgr), R(dcwr),
2184 /* 147 */ R(tbhu), R(tblu)
2187 /* Motorola PowerPC 505. */
2188 static const struct reg registers_505[] =
2194 /* 119 */ R(eie), R(eid), R(nri)
2197 /* Motorola PowerPC 860 or 850. */
2198 static const struct reg registers_860[] =
2204 /* 119 */ R(eie), R(eid), R(nri), R(cmpa),
2205 /* 123 */ R(cmpb), R(cmpc), R(cmpd), R(icr),
2206 /* 127 */ R(der), R(counta), R(countb), R(cmpe),
2207 /* 131 */ R(cmpf), R(cmpg), R(cmph), R(lctrl1),
2208 /* 135 */ R(lctrl2), R(ictrl), R(bar), R(ic_cst),
2209 /* 139 */ R(ic_adr), R(ic_dat), R(dc_cst), R(dc_adr),
2210 /* 143 */ R(dc_dat), R(dpdr), R(dpir), R(immr),
2211 /* 147 */ R(mi_ctr), R(mi_ap), R(mi_epn), R(mi_twc),
2212 /* 151 */ R(mi_rpn), R(md_ctr), R(m_casid), R(md_ap),
2213 /* 155 */ R(md_epn), R(md_twb), R(md_twc), R(md_rpn),
2214 /* 159 */ R(m_tw), R(mi_dbcam), R(mi_dbram0), R(mi_dbram1),
2215 /* 163 */ R(md_dbcam), R(md_dbram0), R(md_dbram1)
2218 /* Motorola PowerPC 601. Note that the 601 has different register numbers
2219 for reading and writing RTCU and RTCL. However, how one reads and writes a
2220 register is the stub's problem. */
2221 static const struct reg registers_601[] =
2227 /* 119 */ R(hid0), R(hid1), R(iabr), R(dabr),
2228 /* 123 */ R(pir), R(mq), R(rtcu), R(rtcl)
2231 /* Motorola PowerPC 602. */
2232 static const struct reg registers_602[] =
2238 /* 119 */ R(hid0), R(hid1), R(iabr), R0,
2239 /* 123 */ R0, R(tcr), R(ibr), R(esassr),
2240 /* 127 */ R(sebr), R(ser), R(sp), R(lt)
2243 /* Motorola/IBM PowerPC 603 or 603e. */
2244 static const struct reg registers_603[] =
2250 /* 119 */ R(hid0), R(hid1), R(iabr), R0,
2251 /* 123 */ R0, R(dmiss), R(dcmp), R(hash1),
2252 /* 127 */ R(hash2), R(imiss), R(icmp), R(rpa)
2255 /* Motorola PowerPC 604 or 604e. */
2256 static const struct reg registers_604[] =
2262 /* 119 */ R(hid0), R(hid1), R(iabr), R(dabr),
2263 /* 123 */ R(pir), R(mmcr0), R(pmc1), R(pmc2),
2264 /* 127 */ R(sia), R(sda)
2267 /* Motorola/IBM PowerPC 750 or 740. */
2268 static const struct reg registers_750[] =
2274 /* 119 */ R(hid0), R(hid1), R(iabr), R(dabr),
2275 /* 123 */ R0, R(ummcr0), R(upmc1), R(upmc2),
2276 /* 127 */ R(usia), R(ummcr1), R(upmc3), R(upmc4),
2277 /* 131 */ R(mmcr0), R(pmc1), R(pmc2), R(sia),
2278 /* 135 */ R(mmcr1), R(pmc3), R(pmc4), R(l2cr),
2279 /* 139 */ R(ictc), R(thrm1), R(thrm2), R(thrm3)
2283 /* Motorola PowerPC 7400. */
2284 static const struct reg registers_7400[] =
2286 /* gpr0-gpr31, fpr0-fpr31 */
2288 /* ctr, xre, lr, cr */
2293 /* vr0-vr31, vrsave, vscr */
2295 /* FIXME? Add more registers? */
2298 /* Information about a particular processor variant. */
2302 /* Name of this variant. */
2305 /* English description of the variant. */
2308 /* bfd_arch_info.arch corresponding to variant. */
2309 enum bfd_architecture arch;
2311 /* bfd_arch_info.mach corresponding to variant. */
2314 /* Table of register names; registers[R] is the name of the register
2317 const struct reg *regs;
2320 #define num_registers(list) (sizeof (list) / sizeof((list)[0]))
2323 /* Information in this table comes from the following web sites:
2324 IBM: http://www.chips.ibm.com:80/products/embedded/
2325 Motorola: http://www.mot.com/SPS/PowerPC/
2327 I'm sure I've got some of the variant descriptions not quite right.
2328 Please report any inaccuracies you find to GDB's maintainer.
2330 If you add entries to this table, please be sure to allow the new
2331 value as an argument to the --with-cpu flag, in configure.in. */
2333 static const struct variant variants[] =
2335 {"powerpc", "PowerPC user-level", bfd_arch_powerpc,
2336 bfd_mach_ppc, num_registers (registers_powerpc), registers_powerpc},
2337 {"power", "POWER user-level", bfd_arch_rs6000,
2338 bfd_mach_rs6k, num_registers (registers_power), registers_power},
2339 {"403", "IBM PowerPC 403", bfd_arch_powerpc,
2340 bfd_mach_ppc_403, num_registers (registers_403), registers_403},
2341 {"601", "Motorola PowerPC 601", bfd_arch_powerpc,
2342 bfd_mach_ppc_601, num_registers (registers_601), registers_601},
2343 {"602", "Motorola PowerPC 602", bfd_arch_powerpc,
2344 bfd_mach_ppc_602, num_registers (registers_602), registers_602},
2345 {"603", "Motorola/IBM PowerPC 603 or 603e", bfd_arch_powerpc,
2346 bfd_mach_ppc_603, num_registers (registers_603), registers_603},
2347 {"604", "Motorola PowerPC 604 or 604e", bfd_arch_powerpc,
2348 604, num_registers (registers_604), registers_604},
2349 {"403GC", "IBM PowerPC 403GC", bfd_arch_powerpc,
2350 bfd_mach_ppc_403gc, num_registers (registers_403GC), registers_403GC},
2351 {"505", "Motorola PowerPC 505", bfd_arch_powerpc,
2352 bfd_mach_ppc_505, num_registers (registers_505), registers_505},
2353 {"860", "Motorola PowerPC 860 or 850", bfd_arch_powerpc,
2354 bfd_mach_ppc_860, num_registers (registers_860), registers_860},
2355 {"750", "Motorola/IBM PowerPC 750 or 740", bfd_arch_powerpc,
2356 bfd_mach_ppc_750, num_registers (registers_750), registers_750},
2357 {"7400", "Motorola/IBM PowerPC 7400 (G4)", bfd_arch_powerpc,
2358 bfd_mach_ppc_7400, num_registers (registers_7400), registers_7400},
2361 {"powerpc64", "PowerPC 64-bit user-level", bfd_arch_powerpc,
2362 bfd_mach_ppc64, num_registers (registers_powerpc), registers_powerpc},
2363 {"620", "Motorola PowerPC 620", bfd_arch_powerpc,
2364 bfd_mach_ppc_620, num_registers (registers_powerpc), registers_powerpc},
2365 {"630", "Motorola PowerPC 630", bfd_arch_powerpc,
2366 bfd_mach_ppc_630, num_registers (registers_powerpc), registers_powerpc},
2367 {"a35", "PowerPC A35", bfd_arch_powerpc,
2368 bfd_mach_ppc_a35, num_registers (registers_powerpc), registers_powerpc},
2369 {"rs64ii", "PowerPC rs64ii", bfd_arch_powerpc,
2370 bfd_mach_ppc_rs64ii, num_registers (registers_powerpc), registers_powerpc},
2371 {"rs64iii", "PowerPC rs64iii", bfd_arch_powerpc,
2372 bfd_mach_ppc_rs64iii, num_registers (registers_powerpc), registers_powerpc},
2374 /* FIXME: I haven't checked the register sets of the following. */
2375 {"rs1", "IBM POWER RS1", bfd_arch_rs6000,
2376 bfd_mach_rs6k_rs1, num_registers (registers_power), registers_power},
2377 {"rsc", "IBM POWER RSC", bfd_arch_rs6000,
2378 bfd_mach_rs6k_rsc, num_registers (registers_power), registers_power},
2379 {"rs2", "IBM POWER RS2", bfd_arch_rs6000,
2380 bfd_mach_rs6k_rs2, num_registers (registers_power), registers_power},
2385 #undef num_registers
2387 /* Return the variant corresponding to architecture ARCH and machine number
2388 MACH. If no such variant exists, return null. */
2390 static const struct variant *
2391 find_variant_by_arch (enum bfd_architecture arch, unsigned long mach)
2393 const struct variant *v;
2395 for (v = variants; v->name; v++)
2396 if (arch == v->arch && mach == v->mach)
2403 gdb_print_insn_powerpc (bfd_vma memaddr, disassemble_info *info)
2405 if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
2406 return print_insn_big_powerpc (memaddr, info);
2408 return print_insn_little_powerpc (memaddr, info);
2411 /* Initialize the current architecture based on INFO. If possible, re-use an
2412 architecture from ARCHES, which is a list of architectures already created
2413 during this debugging session.
2415 Called e.g. at program startup, when reading a core file, and when reading
2418 static struct gdbarch *
2419 rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
2421 struct gdbarch *gdbarch;
2422 struct gdbarch_tdep *tdep;
2423 int wordsize, from_xcoff_exec, from_elf_exec, power, i, off;
2425 const struct variant *v;
2426 enum bfd_architecture arch;
2430 enum gdb_osabi osabi = GDB_OSABI_UNKNOWN;
2432 from_xcoff_exec = info.abfd && info.abfd->format == bfd_object &&
2433 bfd_get_flavour (info.abfd) == bfd_target_xcoff_flavour;
2435 from_elf_exec = info.abfd && info.abfd->format == bfd_object &&
2436 bfd_get_flavour (info.abfd) == bfd_target_elf_flavour;
2438 sysv_abi = info.abfd && bfd_get_flavour (info.abfd) == bfd_target_elf_flavour;
2441 osabi = gdbarch_lookup_osabi (info.abfd);
2443 /* Check word size. If INFO is from a binary file, infer it from
2444 that, else choose a likely default. */
2445 if (from_xcoff_exec)
2447 if (bfd_xcoff_is_xcoff64 (info.abfd))
2452 else if (from_elf_exec)
2454 if (elf_elfheader (info.abfd)->e_ident[EI_CLASS] == ELFCLASS64)
2461 if (info.bfd_arch_info != NULL && info.bfd_arch_info->bits_per_word != 0)
2462 wordsize = info.bfd_arch_info->bits_per_word /
2463 info.bfd_arch_info->bits_per_byte;
2468 /* Find a candidate among extant architectures. */
2469 for (arches = gdbarch_list_lookup_by_info (arches, &info);
2471 arches = gdbarch_list_lookup_by_info (arches->next, &info))
2473 /* Word size in the various PowerPC bfd_arch_info structs isn't
2474 meaningful, because 64-bit CPUs can run in 32-bit mode. So, perform
2475 separate word size check. */
2476 tdep = gdbarch_tdep (arches->gdbarch);
2477 if (tdep && tdep->wordsize == wordsize && tdep->osabi == osabi)
2478 return arches->gdbarch;
2481 /* None found, create a new architecture from INFO, whose bfd_arch_info
2482 validity depends on the source:
2483 - executable useless
2484 - rs6000_host_arch() good
2486 - "set arch" trust blindly
2487 - GDB startup useless but harmless */
2489 if (!from_xcoff_exec)
2491 arch = info.bfd_arch_info->arch;
2492 mach = info.bfd_arch_info->mach;
2496 arch = bfd_arch_powerpc;
2498 bfd_default_set_arch_mach (&abfd, arch, mach);
2499 info.bfd_arch_info = bfd_get_arch_info (&abfd);
2501 tdep = xmalloc (sizeof (struct gdbarch_tdep));
2502 tdep->wordsize = wordsize;
2503 tdep->osabi = osabi;
2504 gdbarch = gdbarch_alloc (&info, tdep);
2505 power = arch == bfd_arch_rs6000;
2507 /* Choose variant. */
2508 v = find_variant_by_arch (arch, mach);
2512 tdep->regs = v->regs;
2514 tdep->ppc_gp0_regnum = 0;
2515 tdep->ppc_gplast_regnum = 31;
2516 tdep->ppc_toc_regnum = 2;
2517 tdep->ppc_ps_regnum = 65;
2518 tdep->ppc_cr_regnum = 66;
2519 tdep->ppc_lr_regnum = 67;
2520 tdep->ppc_ctr_regnum = 68;
2521 tdep->ppc_xer_regnum = 69;
2522 if (v->mach == bfd_mach_ppc_601)
2523 tdep->ppc_mq_regnum = 124;
2525 tdep->ppc_mq_regnum = 70;
2527 tdep->ppc_mq_regnum = -1;
2528 tdep->ppc_fpscr_regnum = power ? 71 : 70;
2530 if (v->arch == bfd_arch_powerpc)
2534 tdep->ppc_vr0_regnum = 71;
2535 tdep->ppc_vrsave_regnum = 104;
2537 case bfd_mach_ppc_7400:
2538 tdep->ppc_vr0_regnum = 119;
2539 tdep->ppc_vrsave_regnum = 153;
2542 tdep->ppc_vr0_regnum = -1;
2543 tdep->ppc_vrsave_regnum = -1;
2547 /* Set lr_frame_offset. */
2549 tdep->lr_frame_offset = 16;
2551 tdep->lr_frame_offset = 4;
2553 tdep->lr_frame_offset = 8;
2555 /* Calculate byte offsets in raw register array. */
2556 tdep->regoff = xmalloc (v->nregs * sizeof (int));
2557 for (i = off = 0; i < v->nregs; i++)
2559 tdep->regoff[i] = off;
2560 off += regsize (v->regs + i, wordsize);
2563 /* Select instruction printer. */
2565 set_gdbarch_print_insn (gdbarch, print_insn_rs6000);
2567 set_gdbarch_print_insn (gdbarch, gdb_print_insn_powerpc);
2569 set_gdbarch_read_pc (gdbarch, generic_target_read_pc);
2570 set_gdbarch_write_pc (gdbarch, generic_target_write_pc);
2571 set_gdbarch_read_fp (gdbarch, generic_target_read_fp);
2572 set_gdbarch_read_sp (gdbarch, generic_target_read_sp);
2573 set_gdbarch_write_sp (gdbarch, generic_target_write_sp);
2575 set_gdbarch_num_regs (gdbarch, v->nregs);
2576 set_gdbarch_sp_regnum (gdbarch, 1);
2577 set_gdbarch_fp_regnum (gdbarch, 1);
2578 set_gdbarch_pc_regnum (gdbarch, 64);
2579 set_gdbarch_register_name (gdbarch, rs6000_register_name);
2580 set_gdbarch_register_size (gdbarch, wordsize);
2581 set_gdbarch_register_bytes (gdbarch, off);
2582 set_gdbarch_register_byte (gdbarch, rs6000_register_byte);
2583 set_gdbarch_register_raw_size (gdbarch, rs6000_register_raw_size);
2584 set_gdbarch_max_register_raw_size (gdbarch, 16);
2585 set_gdbarch_register_virtual_size (gdbarch, generic_register_size);
2586 set_gdbarch_max_register_virtual_size (gdbarch, 16);
2587 set_gdbarch_register_virtual_type (gdbarch, rs6000_register_virtual_type);
2588 set_gdbarch_do_registers_info (gdbarch, rs6000_do_registers_info);
2590 set_gdbarch_ptr_bit (gdbarch, wordsize * TARGET_CHAR_BIT);
2591 set_gdbarch_short_bit (gdbarch, 2 * TARGET_CHAR_BIT);
2592 set_gdbarch_int_bit (gdbarch, 4 * TARGET_CHAR_BIT);
2593 set_gdbarch_long_bit (gdbarch, wordsize * TARGET_CHAR_BIT);
2594 set_gdbarch_long_long_bit (gdbarch, 8 * TARGET_CHAR_BIT);
2595 set_gdbarch_float_bit (gdbarch, 4 * TARGET_CHAR_BIT);
2596 set_gdbarch_double_bit (gdbarch, 8 * TARGET_CHAR_BIT);
2597 set_gdbarch_long_double_bit (gdbarch, 8 * TARGET_CHAR_BIT);
2598 set_gdbarch_char_signed (gdbarch, 0);
2600 set_gdbarch_use_generic_dummy_frames (gdbarch, 1);
2601 set_gdbarch_call_dummy_length (gdbarch, 0);
2602 set_gdbarch_call_dummy_location (gdbarch, AT_ENTRY_POINT);
2603 set_gdbarch_call_dummy_address (gdbarch, entry_point_address);
2604 set_gdbarch_call_dummy_breakpoint_offset_p (gdbarch, 1);
2605 set_gdbarch_call_dummy_breakpoint_offset (gdbarch, 0);
2606 set_gdbarch_call_dummy_start_offset (gdbarch, 0);
2607 set_gdbarch_pc_in_call_dummy (gdbarch, generic_pc_in_call_dummy);
2608 set_gdbarch_call_dummy_p (gdbarch, 1);
2609 set_gdbarch_call_dummy_stack_adjust_p (gdbarch, 0);
2610 set_gdbarch_get_saved_register (gdbarch, generic_unwind_get_saved_register);
2611 set_gdbarch_fix_call_dummy (gdbarch, rs6000_fix_call_dummy);
2612 set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame);
2613 set_gdbarch_save_dummy_frame_tos (gdbarch, generic_save_dummy_frame_tos);
2614 set_gdbarch_push_return_address (gdbarch, ppc_push_return_address);
2615 set_gdbarch_believe_pcc_promotion (gdbarch, 1);
2616 set_gdbarch_coerce_float_to_double (gdbarch, rs6000_coerce_float_to_double);
2618 set_gdbarch_register_convertible (gdbarch, rs6000_register_convertible);
2619 set_gdbarch_register_convert_to_virtual (gdbarch, rs6000_register_convert_to_virtual);
2620 set_gdbarch_register_convert_to_raw (gdbarch, rs6000_register_convert_to_raw);
2621 set_gdbarch_stab_reg_to_regnum (gdbarch, rs6000_stab_reg_to_regnum);
2623 set_gdbarch_deprecated_extract_return_value (gdbarch, rs6000_extract_return_value);
2625 /* Note: kevinb/2002-04-12: I'm not convinced that rs6000_push_arguments()
2626 is correct for the SysV ABI when the wordsize is 8, but I'm also
2627 fairly certain that ppc_sysv_abi_push_arguments() will give even
2628 worse results since it only works for 32-bit code. So, for the moment,
2629 we're better off calling rs6000_push_arguments() since it works for
2630 64-bit code. At some point in the future, this matter needs to be
2632 if (sysv_abi && wordsize == 4)
2633 set_gdbarch_push_arguments (gdbarch, ppc_sysv_abi_push_arguments);
2635 set_gdbarch_push_arguments (gdbarch, rs6000_push_arguments);
2637 set_gdbarch_store_struct_return (gdbarch, rs6000_store_struct_return);
2638 set_gdbarch_store_return_value (gdbarch, rs6000_store_return_value);
2639 set_gdbarch_deprecated_extract_struct_value_address (gdbarch, rs6000_extract_struct_value_address);
2640 set_gdbarch_pop_frame (gdbarch, rs6000_pop_frame);
2642 set_gdbarch_skip_prologue (gdbarch, rs6000_skip_prologue);
2643 set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
2644 set_gdbarch_decr_pc_after_break (gdbarch, 0);
2645 set_gdbarch_function_start_offset (gdbarch, 0);
2646 set_gdbarch_breakpoint_from_pc (gdbarch, rs6000_breakpoint_from_pc);
2648 /* Not sure on this. FIXMEmgo */
2649 set_gdbarch_frame_args_skip (gdbarch, 8);
2652 set_gdbarch_use_struct_convention (gdbarch,
2653 ppc_sysv_abi_use_struct_convention);
2655 set_gdbarch_use_struct_convention (gdbarch,
2656 generic_use_struct_convention);
2658 set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
2660 set_gdbarch_frameless_function_invocation (gdbarch,
2661 rs6000_frameless_function_invocation);
2662 set_gdbarch_frame_chain (gdbarch, rs6000_frame_chain);
2663 set_gdbarch_frame_saved_pc (gdbarch, rs6000_frame_saved_pc);
2665 set_gdbarch_frame_init_saved_regs (gdbarch, rs6000_frame_init_saved_regs);
2666 set_gdbarch_init_extra_frame_info (gdbarch, rs6000_init_extra_frame_info);
2670 /* Handle RS/6000 function pointers (which are really function
2672 set_gdbarch_convert_from_func_ptr_addr (gdbarch,
2673 rs6000_convert_from_func_ptr_addr);
2675 set_gdbarch_frame_args_address (gdbarch, rs6000_frame_args_address);
2676 set_gdbarch_frame_locals_address (gdbarch, rs6000_frame_args_address);
2677 set_gdbarch_saved_pc_after_call (gdbarch, rs6000_saved_pc_after_call);
2679 /* We can't tell how many args there are
2680 now that the C compiler delays popping them. */
2681 set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
2683 /* Hook in ABI-specific overrides, if they have been registered. */
2684 gdbarch_init_osabi (info, gdbarch, osabi);
2690 rs6000_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
2692 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
2697 fprintf_unfiltered (file, "rs6000_dump_tdep: OS ABI = %s\n",
2698 gdbarch_osabi_name (tdep->osabi));
2701 static struct cmd_list_element *info_powerpc_cmdlist = NULL;
2704 rs6000_info_powerpc_command (char *args, int from_tty)
2706 help_list (info_powerpc_cmdlist, "info powerpc ", class_info, gdb_stdout);
2709 /* Initialization code. */
2712 _initialize_rs6000_tdep (void)
2714 gdbarch_register (bfd_arch_rs6000, rs6000_gdbarch_init, rs6000_dump_tdep);
2715 gdbarch_register (bfd_arch_powerpc, rs6000_gdbarch_init, rs6000_dump_tdep);
2717 /* Add root prefix command for "info powerpc" commands */
2718 add_prefix_cmd ("powerpc", class_info, rs6000_info_powerpc_command,
2719 "Various POWERPC info specific commands.",
2720 &info_powerpc_cmdlist, "info powerpc ", 0, &infolist);
2722 add_cmd ("altivec", class_info, rs6000_altivec_registers_info,
2723 "Display the contents of the AltiVec registers.",
2724 &info_powerpc_cmdlist);