Lines Matching refs:regs
327 do_alignment_finish_ldst(unsigned long addr, u32 instr, struct pt_regs *regs, union offset_union offset)
336 regs->uregs[RN_BITS(instr)] = addr;
340 do_alignment_ldrhstrh(unsigned long addr, u32 instr, struct pt_regs *regs)
346 if (user_mode(regs))
357 regs->uregs[rd] = val;
359 put16_unaligned_check(regs->uregs[rd], addr);
375 regs->uregs[rd] = val;
378 put16t_unaligned_check(regs->uregs[rd], addr);
389 do_alignment_ldrdstrd(unsigned long addr, u32 instr, struct pt_regs *regs)
408 if (user_mode(regs))
414 regs->uregs[rd] = val;
416 regs->uregs[rd2] = val;
418 put32_unaligned_check(regs->uregs[rd], addr);
419 put32_unaligned_check(regs->uregs[rd2], addr + 4);
434 regs->uregs[rd] = val;
435 regs->uregs[rd2] = val2;
438 put32t_unaligned_check(regs->uregs[rd], addr);
439 put32t_unaligned_check(regs->uregs[rd2], addr + 4);
451 do_alignment_ldrstr(unsigned long addr, u32 instr, struct pt_regs *regs)
457 if ((!LDST_P_BIT(instr) && LDST_W_BIT(instr)) || user_mode(regs))
463 regs->uregs[rd] = val;
465 put32_unaligned_check(regs->uregs[rd], addr);
474 regs->uregs[rd] = val;
477 put32t_unaligned_check(regs->uregs[rd], addr);
500 do_alignment_ldmstm(unsigned long addr, u32 instr, struct pt_regs *regs)
509 regs->ARM_pc += correction;
517 newaddr = eaddr = regs->uregs[rn];
543 instruction_pointer(regs), instr, addr, eaddr);
544 show_regs(regs);
548 if (user_mode(regs)) {
556 regs->uregs[rd] = val;
558 put32t_unaligned_check(regs->uregs[rd], eaddr);
569 regs->uregs[rd] = val;
571 put32_unaligned_check(regs->uregs[rd], eaddr);
577 regs->uregs[rn] = newaddr;
579 regs->ARM_pc -= correction;
583 regs->ARM_pc -= correction;
710 * @regs: register context.
718 do_alignment_t32_to_handler(u32 *pinstr, struct pt_regs *regs,
769 static int alignment_get_arm(struct pt_regs *regs, u32 *ip, u32 *inst)
774 if (user_mode(regs))
784 static int alignment_get_thumb(struct pt_regs *regs, u16 *ip, u16 *inst)
789 if (user_mode(regs))
800 do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
804 int (*handler)(unsigned long addr, u32 instr, struct pt_regs *regs);
812 if (interrupts_enabled(regs))
815 instrptr = instruction_pointer(regs);
817 if (thumb_mode(regs)) {
820 fault = alignment_get_thumb(regs, ptr, &tinstr);
826 fault = alignment_get_thumb(regs, ptr + 1, &tinst2);
835 fault = alignment_get_arm(regs, (void *)instrptr, &instr);
843 if (user_mode(regs))
847 ai_sys_last_pc = (void *)instruction_pointer(regs);
851 regs->ARM_pc += isize;
858 offset.un = regs->uregs[RM_BITS(instr)];
880 offset.un = regs->uregs[RM_BITS(instr)];
901 if (regs->ARM_cpsr & PSR_C_BIT)
915 handler = do_alignment_t32_to_handler(&instr, regs, &offset);
928 type = handler(addr, instr, regs);
931 regs->ARM_pc -= isize;
936 do_alignment_finish_ldst(addr, instr, regs, offset);
938 if (thumb_mode(regs))
939 regs->ARM_cpsr = it_advance(regs->ARM_cpsr);
949 do_bad_area(addr, fsr, regs);