Lines Matching full:pc

99  * - note that PC _may not_ point to the faulting instruction
240 case 9: /* mov.w @(disp,PC),Rn */ in handle_unaligned_ins()
241 srcu = (unsigned char __user *)regs->pc; in handle_unaligned_ins()
257 case 0xd: /* mov.l @(disp,PC),Rn */ in handle_unaligned_ins()
258 srcu = (unsigned char __user *)(regs->pc & ~0x3); in handle_unaligned_ins()
281 * - fetches the instruction from PC+2
288 void __user *addr = (void __user *)(regs->pc + in handle_delayslot()
308 * - if the branch would be taken PC points to the branch
309 * - if the branch would not be taken, PC points to delay-slot
311 * - PC always points to delayed branch
315 /* Macros to determine offset from current PC for branch instructions */
356 regs->pc = regs->pr; in handle_unaligned_access()
362 regs->pc += rm + 4; in handle_unaligned_access()
368 regs->pr = regs->pc + 4; in handle_unaligned_access()
369 regs->pc += rm + 4; in handle_unaligned_access()
389 regs->pc = rm; in handle_unaligned_access()
395 regs->pr = regs->pc + 4; in handle_unaligned_access()
396 regs->pc = rm; in handle_unaligned_access()
425 regs->pc += 4; /* next after slot */ in handle_unaligned_access()
428 regs->pc += SH_PC_8BIT_OFFSET(instruction); in handle_unaligned_access()
439 regs->pc += 4; /* next after slot */ in handle_unaligned_access()
442 regs->pc += SH_PC_8BIT_OFFSET(instruction); in handle_unaligned_access()
454 regs->pc += SH_PC_12BIT_OFFSET(instruction); in handle_unaligned_access()
460 regs->pr = regs->pc + 4; in handle_unaligned_access()
461 regs->pc += SH_PC_12BIT_OFFSET(instruction); in handle_unaligned_access()
474 regs->pc += instruction_size(instruction); in handle_unaligned_access()
481 * misaligned PC
482 * PC >= 0x80000000 in user mode
509 if (copy_from_user(&instruction, (insn_size_t __user *)(regs->pc & ~1), in do_address_error()
524 regs->pc += instruction_size(instruction); in do_address_error()
529 /* bad PC is not something we can fix */ in do_address_error()
530 if (regs->pc & 1) { in do_address_error()
543 "access (PC %lx PR %lx)\n", current->comm, regs->pc, in do_address_error()
550 if (regs->pc & 1) in do_address_error()
553 if (copy_from_kernel_nofault(&instruction, (void *)(regs->pc), in do_address_error()
583 get_user(inst, ((unsigned short *) regs->pc)); in is_dsp_inst()
626 get_user(inst, (unsigned short __user *)regs->pc); in do_reserved_inst()
630 regs->pc += instruction_size(inst); in do_reserved_inst()
658 * bfs: 8fxx: PC+=d*2+4; in emulate_branch()
659 * bts: 8dxx: PC+=d*2+4; in emulate_branch()
660 * bra: axxx: PC+=D*2+4; in emulate_branch()
661 * bsr: bxxx: PC+=D*2+4 after PR=PC+4; in emulate_branch()
662 * braf:0x23: PC+=Rn*2+4; in emulate_branch()
663 * bsrf:0x03: PC+=Rn*2+4 after PR=PC+4; in emulate_branch()
664 * jmp: 4x2b: PC=Rn; in emulate_branch()
665 * jsr: 4x0b: PC=Rn after PR=PC+4; in emulate_branch()
666 * rts: 000b: PC=PR; in emulate_branch()
671 regs->pr = regs->pc + 4; in emulate_branch()
674 regs->pc += SH_PC_8BIT_OFFSET(inst); in emulate_branch()
679 regs->pc += SH_PC_12BIT_OFFSET(inst); in emulate_branch()
684 regs->pc += regs->regs[(inst & 0x0f00) >> 8] + 4; in emulate_branch()
689 regs->pc = regs->regs[(inst & 0x0f00) >> 8]; in emulate_branch()
694 regs->pc = regs->pr; in emulate_branch()
707 if (kprobe_handle_illslot(regs->pc) == 0) in do_illegal_slot_inst()
711 get_user(inst, (unsigned short __user *)regs->pc + 1); in do_illegal_slot_inst()
713 get_user(inst, (unsigned short __user *)regs->pc); in do_illegal_slot_inst()