saved CR2 offset to low 32 bits of regs->ccr rather than the whole
64-bit register in 64-bit libgcc.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129520
138bc75d-0d04-0410-961f-
82ee72b054a4
+2007-10-20 Jakub Jelinek <jakub@redhat.com>
+
+ * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
+ saved CR2 offset to low 32 bits of regs->ccr rather than the whole
+ 64-bit register in 64-bit libgcc.
+
2007-10-20 Eric B. Weddington <eweddington@cso.atmel.com>
* config/avr/avr.c (avr_mcu_types): Add at90pwm2b, at90pwm3b.
}
fs->regs.reg[R_CR2].how = REG_SAVED_OFFSET;
- fs->regs.reg[R_CR2].loc.offset = (long) ®s->ccr - new_cfa;
+ /* CR? regs are always 32-bit and PPC is big-endian, so in 64-bit
+ libgcc loc.offset needs to point to the low 32 bits of regs->ccr. */
+ fs->regs.reg[R_CR2].loc.offset = (long) ®s->ccr - new_cfa
+ + sizeof (long) - 4;
fs->regs.reg[R_LR].how = REG_SAVED_OFFSET;
fs->regs.reg[R_LR].loc.offset = (long) ®s->link - new_cfa;