Lines Matching refs:instr
200 do_alignment_finish_ldst(unsigned long addr, unsigned long instr, in do_alignment_finish_ldst() argument
203 if (!LDST_U_BIT(instr)) in do_alignment_finish_ldst()
206 if (!LDST_P_BIT(instr)) in do_alignment_finish_ldst()
209 if (!LDST_P_BIT(instr) || LDST_W_BIT(instr)) in do_alignment_finish_ldst()
210 regs->uregs[RN_BITS(instr)] = addr; in do_alignment_finish_ldst()
214 do_alignment_ldrhstrh(unsigned long addr, unsigned long instr, in do_alignment_ldrhstrh() argument
217 unsigned int rd = RD_BITS(instr); in do_alignment_ldrhstrh()
220 if ((instr & 0x4b003fe0) == 0x40000120) in do_alignment_ldrhstrh()
223 if (LDST_L_BIT(instr)) { in do_alignment_ldrhstrh()
228 if (instr & 0x80) in do_alignment_ldrhstrh()
240 get32_unaligned_check(regs->uregs[RD_BITS(instr)], addr); in do_alignment_ldrhstrh()
241 put32_unaligned_check(regs->uregs[RM_BITS(instr)], addr); in do_alignment_ldrhstrh()
249 do_alignment_ldrstr(unsigned long addr, unsigned long instr, in do_alignment_ldrstr() argument
252 unsigned int rd = RD_BITS(instr); in do_alignment_ldrstr()
254 if (!LDST_P_BIT(instr) && LDST_W_BIT(instr)) in do_alignment_ldrstr()
257 if (LDST_L_BIT(instr)) in do_alignment_ldrstr()
264 if (LDST_L_BIT(instr)) in do_alignment_ldrstr()
288 do_alignment_ldmstm(unsigned long addr, unsigned long instr, in do_alignment_ldmstm() argument
294 if (LDM_S_BIT(instr)) in do_alignment_ldmstm()
300 nr_regs = hweight16(REGMASK_BITS(instr)) * 4; in do_alignment_ldmstm()
302 rn = RN_BITS(instr); in do_alignment_ldmstm()
305 if (!LDST_U_BIT(instr)) in do_alignment_ldmstm()
308 if (!LDST_U_BIT(instr)) in do_alignment_ldmstm()
311 if (LDST_P_EQ_U(instr)) /* U = P */ in do_alignment_ldmstm()
321 instruction_pointer(regs), instr, addr, eaddr); in do_alignment_ldmstm()
325 if (LDM_H_BIT(instr)) in do_alignment_ldmstm()
330 for (regbits = REGMASK_BITS(instr), rd = 0; regbits; in do_alignment_ldmstm()
333 if (LDST_L_BIT(instr)) in do_alignment_ldmstm()
342 if (LDST_W_BIT(instr)) in do_alignment_ldmstm()
359 unsigned long instr, instrptr; in do_alignment() local
360 int (*handler) (unsigned long addr, unsigned long instr, in do_alignment()
366 instr = *(unsigned long *)instrptr; in do_alignment()
370 : "=&r"(instr) in do_alignment()
376 switch (CODING_BITS(instr)) { in do_alignment()
378 if (LDSTH_I_BIT(instr)) in do_alignment()
379 offset.un = (instr & 0x3e00) >> 4 | (instr & 31); in do_alignment()
381 offset.un = regs->uregs[RM_BITS(instr)]; in do_alignment()
389 offset.un = OFFSET_BITS(instr); in do_alignment()
394 offset.un = regs->uregs[RM_BITS(instr)]; in do_alignment()
396 unsigned int shiftval = SHIFT_BITS(instr); in do_alignment()
398 switch (SHIFT_TYPE(instr)) { in do_alignment()
434 type = handler(addr, instr, regs); in do_alignment()
440 do_alignment_finish_ldst(addr, instr, regs, offset); in do_alignment()
465 if ((instr & 0xe0000000) == CODING_COLS) { in do_alignment()
466 unsigned int fn = COLS_FN_BITS(instr); in do_alignment()
468 if (COLS_L_BITS(instr)) { in do_alignment()
509 "%08lx at [<%08lx>]\n", instr, instrptr); in do_alignment()