+ /* If we got a SIGSEGV or a SIGBUS, the PSW address points *to* \
+ the faulting instruction, not after it. This causes the logic \
+ in unwind-dw2.c that decrements the RA to determine the correct \
+ CFI region to get confused. To fix that, we *increment* the RA \
+ here in that case. Note that we cannot modify the RA in place, \
+ and the frame state wants a *pointer*, not a value; thus we put \
+ the modified RA value into the unused register 33 slot of FS and \
+ have the register 32 save address point to that slot. \
+ \
+ Unfortunately, for regular signals on old kernels, we don't know \
+ the signal number. We default to not fiddling with the RA; \
+ that can fail in rare cases. Upgrade your kernel. */ \
+ \
+ if (signo_ && (*signo_ == 11 || *signo_ == 7)) \
+ { \
+ (FS)->regs.reg[33].loc.exp = regs_->psw_addr + 1; \
+ (FS)->regs.reg[32].loc.offset = \
+ (long)&(FS)->regs.reg[33].loc.exp - new_cfa_; \
+ } \
+ \