In insn_access_error():
info.si_addr = (void *) ((epcr0 & EPCR0_V) ? (epcr0 & EPCR0_PC) : __frame->pc);
In illegal_instruction():
info.si_addr = (void *) ((epcr0 & EPCR0_PC) ? (epcr0 & EPCR0_PC) : __frame->pc);
and with
#define EPCR0_V 0x00000001 /* register content validity indicator */
#define EPCR0_PC 0xfffffffc /* faulting instruction address */
it really smells like a braino in the latter...
--