Lines Matching refs:instr

54 do_alignment_finish_ldst(unsigned long addr, u32 instr, struct pt_regs *regs,  in do_alignment_finish_ldst()  argument
57 if (!LDST_U_BIT(instr)) in do_alignment_finish_ldst()
60 if (!LDST_P_BIT(instr)) in do_alignment_finish_ldst()
63 if (!LDST_P_BIT(instr) || LDST_W_BIT(instr)) in do_alignment_finish_ldst()
64 regs->regs[RN_BITS(instr)] = addr; in do_alignment_finish_ldst()
68 do_alignment_ldrdstrd(unsigned long addr, u32 instr, struct pt_regs *regs) in do_alignment_ldrdstrd() argument
70 unsigned int rd = RD_BITS(instr); in do_alignment_ldrdstrd()
74 if ((instr & 0xfe000000) == 0xe8000000) { in do_alignment_ldrdstrd()
76 rd2 = (instr >> 8) & 0xf; in do_alignment_ldrdstrd()
77 load = !!(LDST_L_BIT(instr)); in do_alignment_ldrdstrd()
81 load = ((instr & 0xf0) == 0xd0); in do_alignment_ldrdstrd()
115 do_alignment_ldmstm(unsigned long addr, u32 instr, struct pt_regs *regs) in do_alignment_ldmstm() argument
122 nr_regs = hweight16(REGMASK_BITS(instr)) * 4; in do_alignment_ldmstm()
124 rn = RN_BITS(instr); in do_alignment_ldmstm()
127 if (!LDST_U_BIT(instr)) in do_alignment_ldmstm()
130 if (!LDST_U_BIT(instr)) in do_alignment_ldmstm()
133 if (LDST_P_EQ_U(instr)) /* U = P */ in do_alignment_ldmstm()
136 for (regbits = REGMASK_BITS(instr), rd = 0; regbits; in do_alignment_ldmstm()
139 if (LDST_L_BIT(instr)) { in do_alignment_ldmstm()
161 if (LDST_W_BIT(instr)) in do_alignment_ldmstm()
236 u32 instr = *pinstr; in do_alignment_t32_to_handler() local
237 u16 tinst1 = (instr >> 16) & 0xffff; in do_alignment_t32_to_handler()
238 u16 tinst2 = instr & 0xffff; in do_alignment_t32_to_handler()
250 if (RN_BITS(instr) == 13 && (tinst2 & 0x09ff) == 0x0904) { in do_alignment_t32_to_handler()
251 u32 L = !!(LDST_L_BIT(instr)); in do_alignment_t32_to_handler()
256 *pinstr = subset[L] | (1<<RD_BITS(instr)); in do_alignment_t32_to_handler()
286 __le32 instr = 0; in alignment_get_arm() local
289 fault = get_user(instr, ip); in alignment_get_arm()
293 *inst = __le32_to_cpu(instr); in alignment_get_arm()
299 __le16 instr = 0; in alignment_get_thumb() local
302 fault = get_user(instr, ip); in alignment_get_thumb()
306 *inst = __le16_to_cpu(instr); in alignment_get_thumb()
314 int (*handler)(unsigned long addr, u32 instr, struct pt_regs *regs); in do_compat_alignment_fixup()
316 u32 instr = 0; in do_compat_alignment_fixup() local
332 instr = ((u32)tinstr << 16) | tinst2; in do_compat_alignment_fixup()
336 instr = thumb2arm(tinstr); in do_compat_alignment_fixup()
339 if (alignment_get_arm(regs, (__le32 __user *)instrptr, &instr)) in do_compat_alignment_fixup()
343 switch (CODING_BITS(instr)) { in do_compat_alignment_fixup()
345 if (LDSTHD_I_BIT(instr)) in do_compat_alignment_fixup()
346 offset.un = (instr & 0xf00) >> 4 | (instr & 15); in do_compat_alignment_fixup()
348 offset.un = regs->regs[RM_BITS(instr)]; in do_compat_alignment_fixup()
350 if ((instr & 0x001000f0) == 0x000000d0 || /* LDRD */ in do_compat_alignment_fixup()
351 (instr & 0x001000f0) == 0x000000f0) /* STRD */ in do_compat_alignment_fixup()
360 handler = do_alignment_t32_to_handler(&instr, regs, &offset); in do_compat_alignment_fixup()
371 type = handler(addr, instr, regs); in do_compat_alignment_fixup()
377 do_alignment_finish_ldst(addr, instr, regs, offset); in do_compat_alignment_fixup()