Lines Matching refs:regs

319 do_alignment_finish_ldst(unsigned long addr, u32 instr, struct pt_regs *regs, union offset_union offset)
328 regs->uregs[RN_BITS(instr)] = addr;
332 do_alignment_ldrhstrh(unsigned long addr, u32 instr, struct pt_regs *regs)
338 if (user_mode(regs))
349 regs->uregs[rd] = val;
351 put16_unaligned_check(regs->uregs[rd], addr);
367 regs->uregs[rd] = val;
370 put16t_unaligned_check(regs->uregs[rd], addr);
381 do_alignment_ldrdstrd(unsigned long addr, u32 instr, struct pt_regs *regs)
400 if (user_mode(regs))
406 regs->uregs[rd] = val;
408 regs->uregs[rd2] = val;
410 put32_unaligned_check(regs->uregs[rd], addr);
411 put32_unaligned_check(regs->uregs[rd2], addr + 4);
426 regs->uregs[rd] = val;
427 regs->uregs[rd2] = val2;
430 put32t_unaligned_check(regs->uregs[rd], addr);
431 put32t_unaligned_check(regs->uregs[rd2], addr + 4);
443 do_alignment_ldrstr(unsigned long addr, u32 instr, struct pt_regs *regs)
449 if ((!LDST_P_BIT(instr) && LDST_W_BIT(instr)) || user_mode(regs))
455 regs->uregs[rd] = val;
457 put32_unaligned_check(regs->uregs[rd], addr);
466 regs->uregs[rd] = val;
469 put32t_unaligned_check(regs->uregs[rd], addr);
492 do_alignment_ldmstm(unsigned long addr, u32 instr, struct pt_regs *regs)
501 regs->ARM_pc += correction;
509 newaddr = eaddr = regs->uregs[rn];
535 instruction_pointer(regs), instr, addr, eaddr);
536 show_regs(regs);
540 if (user_mode(regs)) {
548 regs->uregs[rd] = val;
550 put32t_unaligned_check(regs->uregs[rd], eaddr);
561 regs->uregs[rd] = val;
563 put32_unaligned_check(regs->uregs[rd], eaddr);
569 regs->uregs[rn] = newaddr;
571 regs->ARM_pc -= correction;
575 regs->ARM_pc -= correction;
702 * @regs: register context.
710 do_alignment_t32_to_handler(u32 *pinstr, struct pt_regs *regs,
761 static int alignment_get_arm(struct pt_regs *regs, u32 *ip, u32 *inst)
766 if (user_mode(regs))
776 static int alignment_get_thumb(struct pt_regs *regs, u16 *ip, u16 *inst)
781 if (user_mode(regs))
792 do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
796 int (*handler)(unsigned long addr, u32 instr, struct pt_regs *regs);
804 if (interrupts_enabled(regs))
807 instrptr = instruction_pointer(regs);
809 if (thumb_mode(regs)) {
812 fault = alignment_get_thumb(regs, ptr, &tinstr);
818 fault = alignment_get_thumb(regs, ptr + 1, &tinst2);
827 fault = alignment_get_arm(regs, (void *)instrptr, &instr);
835 if (user_mode(regs))
839 ai_sys_last_pc = (void *)instruction_pointer(regs);
843 regs->ARM_pc += isize;
850 offset.un = regs->uregs[RM_BITS(instr)];
872 offset.un = regs->uregs[RM_BITS(instr)];
893 if (regs->ARM_cpsr & PSR_C_BIT)
907 handler = do_alignment_t32_to_handler(&instr, regs, &offset);
920 type = handler(addr, instr, regs);
923 regs->ARM_pc -= isize;
928 do_alignment_finish_ldst(addr, instr, regs, offset);
930 if (thumb_mode(regs))
931 regs->ARM_cpsr = it_advance(regs->ARM_cpsr);
941 do_bad_area(addr, fsr, regs);