Lines Matching refs:instr

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