lr = regs->link;
        sp = regs->gpr[1];
-       perf_callchain_store(entry, regs->nip);
+       perf_callchain_store(entry, perf_instruction_pointer(regs));
 
        if (!validate_sp(sp, current, STACK_FRAME_OVERHEAD))
                return;
        struct signal_frame_64 __user *sigframe;
        unsigned long __user *fp, *uregs;
 
-       next_ip = regs->nip;
+       next_ip = perf_instruction_pointer(regs);
        lr = regs->link;
        sp = regs->gpr[1];
        perf_callchain_store(entry, next_ip);
        long level = 0;
        unsigned int __user *fp, *uregs;
 
-       next_ip = regs->nip;
+       next_ip = perf_instruction_pointer(regs);
        lr = regs->link;
        sp = regs->gpr[1];
        perf_callchain_store(entry, next_ip);