#define FIRST_PSEUDO_REGISTER 111
+/* The SVP64 registers are not call-saved, so the unwinder doesn't have to deal
+ with them. If this grows, System.OS_Interface.Alternate_Stack_Size in the
+ Ada runtime needs to grow as well. */
+#define DWARF_FRAME_REGISTERS 111
+
/* Use standard DWARF numbering for DWARF debugging information. */
#define DBX_REGISTER_NUMBER(REGNO) rs6000_dbx_register_number ((REGNO), 0)
#define R_CR2 70
#define R_XER 76
#define R_FIRST_ALTIVEC 77
+#define R_ALT_RET 99
#define R_VRSAVE 109
#define R_VSCR 110
#ifdef __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__
#define RETURN_COLUMN __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__
#else
-#define RETURN_COLUMN ARG_POINTER_REGNUM
+#define RETURN_COLUMN R_ALT_RET
#endif
#define REGISTER_CFA_OFFSET_FOR(FS,REGNO,ADDR,CFA)\
#define R_CR2 70
#define R_XER 76
#define R_VR0 77
+#define R_AR 99
#define R_VRSAVE 109
#define R_VSCR 110
#define R_SPEFSCR 112
the space it's reserved from is the GCC register space, not the
DWARF2 numbering. So any free element of the right size is an OK
choice. Thus: */
- fs->retaddr_column = ARG_POINTER_REGNUM;
+ fs->retaddr_column = R_AR;
/* FIXME: this should really be done using a DWARF2 location expression,
not using a static variable. In fact, this entire file should
be implemented in DWARF2 expressions. */
- set_offset (ARG_POINTER_REGNUM, &return_addr);
+ set_offset (R_AR, &return_addr);
for (i = 0; i < 32; i++)
set_offset (32 + i, float_vector_state->fpregs + i);
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
+#define R_FR0 32
#define R_LR 65
#define R_CR2 70
#define R_CR3 71
#define R_CR4 72
#define R_VR0 77
+#define R_AR 99
#define R_VRSAVE 109
+
#ifdef __powerpc64__
#if _CALL_ELF == 2
#define TOC_SAVE_SLOT 24
fs->regs.reg[R_LR].how = REG_SAVED_OFFSET;
fs->regs.reg[R_LR].loc.offset = (long) ®s->link - new_cfa;
- fs->regs.reg[ARG_POINTER_REGNUM].how = REG_SAVED_OFFSET;
- fs->regs.reg[ARG_POINTER_REGNUM].loc.offset = (long) ®s->nip - new_cfa;
- fs->retaddr_column = ARG_POINTER_REGNUM;
+ fs->regs.reg[R_AR].how = REG_SAVED_OFFSET;
+ fs->regs.reg[R_AR].loc.offset = (long) ®s->nip - new_cfa;
+ fs->retaddr_column = R_AR;
fs->signal_frame = 1;
/* If we have a FPU... */
for (i = 14; i < 32; i++)
{
- fs->regs.reg[i + 32].how = REG_SAVED_OFFSET;
- fs->regs.reg[i + 32].loc.offset = (long) ®s->fpr[i] - new_cfa;
+ fs->regs.reg[i + R_FR0].how = REG_SAVED_OFFSET;
+ fs->regs.reg[i + R_FR0].loc.offset = (long) ®s->fpr[i] - new_cfa;
}
/* If we have a VMX unit... */