Lines Matching refs:regs
25 struct arch_probes_insn *asi, struct pt_regs *regs)
27 unsigned long pc = regs->ARM_pc;
31 unsigned long rnv = (rn == 15) ? pc : regs->uregs[rn];
32 unsigned long rmv = regs->uregs[rm];
40 regs->ARM_pc = pc + 2 * halfwords;
45 struct arch_probes_insn *asi, struct pt_regs *regs)
49 regs->uregs[rd] = regs->ARM_cpsr & mask;
54 struct arch_probes_insn *asi, struct pt_regs *regs)
56 unsigned long pc = regs->ARM_pc;
64 regs->ARM_pc = pc + (offset * 2);
79 struct arch_probes_insn *asi, struct pt_regs *regs)
81 unsigned long pc = regs->ARM_pc;
94 regs->ARM_lr = regs->ARM_pc | 1;
97 regs->ARM_cpsr &= ~PSR_T_BIT;
102 regs->ARM_pc = pc + (offset * 2);
107 struct arch_probes_insn *asi, struct pt_regs *regs)
109 unsigned long addr = regs->ARM_pc & ~3;
123 bx_write_pc(rtv, regs);
140 regs->uregs[rt] = rtv;
159 struct arch_probes_insn *asi, struct pt_regs *regs)
161 unsigned long pc = regs->ARM_pc & ~3;
166 register unsigned long rt1v asm("r0") = regs->uregs[rt1];
167 register unsigned long rt2v asm("r1") = regs->uregs[rt2];
169 : regs->uregs[rn];
179 regs->uregs[rn] = rnv; /* Writeback base register */
180 regs->uregs[rt1] = rt1v;
181 regs->uregs[rt2] = rt2v;
186 struct arch_probes_insn *asi, struct pt_regs *regs)
192 register unsigned long rtv asm("r0") = regs->uregs[rt];
193 register unsigned long rnv asm("r2") = regs->uregs[rn];
194 register unsigned long rmv asm("r3") = regs->uregs[rm];
203 regs->uregs[rn] = rnv; /* Writeback base register */
205 bx_write_pc(rtv, regs);
207 regs->uregs[rt] = rtv;
212 struct arch_probes_insn *asi, struct pt_regs *regs)
218 register unsigned long rdv asm("r1") = regs->uregs[rd];
219 register unsigned long rnv asm("r2") = regs->uregs[rn];
220 register unsigned long rmv asm("r3") = regs->uregs[rm];
221 unsigned long cpsr = regs->ARM_cpsr;
233 regs->uregs[rd] = rdv;
234 regs->ARM_cpsr = (regs->ARM_cpsr & ~APSR_MASK) | (cpsr & APSR_MASK);
239 struct arch_probes_insn *asi, struct pt_regs *regs)
241 unsigned long pc = regs->ARM_pc;
244 register unsigned long rdv asm("r1") = regs->uregs[rd];
254 regs->uregs[rd] = rdv;
259 struct arch_probes_insn *asi, struct pt_regs *regs)
264 register unsigned long rdv asm("r1") = regs->uregs[rd];
265 register unsigned long rnv asm("r2") = regs->uregs[rn];
274 regs->uregs[rd] = rdv;
280 struct pt_regs *regs)
287 register unsigned long rdlov asm("r0") = regs->uregs[rdlo];
288 register unsigned long rdhiv asm("r1") = regs->uregs[rdhi];
289 register unsigned long rnv asm("r2") = regs->uregs[rn];
290 register unsigned long rmv asm("r3") = regs->uregs[rm];
300 regs->uregs[rdlo] = rdlov;
301 regs->uregs[rdhi] = rdhiv;
307 struct arch_probes_insn *asi, struct pt_regs *regs)
309 unsigned long pc = regs->ARM_pc + 2;
311 unsigned long rmv = (rm == 15) ? pc : regs->uregs[rm];
314 regs->ARM_lr = regs->ARM_pc | 1;
316 bx_write_pc(rmv, regs);
321 struct arch_probes_insn *asi, struct pt_regs *regs)
323 unsigned long *base = (unsigned long *)((regs->ARM_pc + 2) & ~3);
326 regs->uregs[rt] = base[index];
331 struct arch_probes_insn *asi, struct pt_regs *regs)
333 unsigned long* base = (unsigned long *)regs->ARM_sp;
337 regs->uregs[rt] = base[index];
339 base[index] = regs->uregs[rt];
344 struct arch_probes_insn *asi, struct pt_regs *regs)
346 unsigned long base = (insn & 0x800) ? regs->ARM_sp
347 : ((regs->ARM_pc + 2) & ~3);
350 regs->uregs[rt] = base + offset * 4;
355 struct arch_probes_insn *asi, struct pt_regs *regs)
359 regs->ARM_sp -= imm * 4;
361 regs->ARM_sp += imm * 4;
366 struct arch_probes_insn *asi, struct pt_regs *regs)
369 probes_opcode_t nonzero = regs->uregs[rn] ? insn : ~insn;
373 unsigned long pc = regs->ARM_pc + 2;
374 regs->ARM_pc = pc + (i >> 3) + (imm5 >> 2);
380 struct arch_probes_insn *asi, struct pt_regs *regs)
388 unsigned long cpsr = regs->ARM_cpsr;
392 regs->ARM_cpsr = cpsr;
397 struct arch_probes_insn *asi, struct pt_regs *regs)
399 regs->ARM_pc += 2;
400 t16_simulate_it(insn, asi, regs);
413 struct arch_probes_insn *asi, struct pt_regs *regs)
415 unsigned long pc = regs->ARM_pc + 2;
418 regs->ARM_pc = pc + (offset * 2);
433 struct arch_probes_insn *asi, struct pt_regs *regs)
435 unsigned long pc = regs->ARM_pc + 2;
438 regs->ARM_pc = pc + (offset * 2);
443 struct arch_probes_insn *asi, struct pt_regs *regs)
445 unsigned long oldcpsr = regs->ARM_cpsr;
451 "ldmia %[regs], {r0-r7} \n\t"
453 "stmia %[regs], {r0-r7} \n\t"
457 : [oldcpsr] "r" (oldcpsr), [regs] "r" (regs),
468 struct arch_probes_insn *asi, struct pt_regs *regs)
470 regs->ARM_cpsr = t16_emulate_loregs(insn, asi, regs);
475 struct arch_probes_insn *asi, struct pt_regs *regs)
477 unsigned long cpsr = t16_emulate_loregs(insn, asi, regs);
479 regs->ARM_cpsr = cpsr;
484 struct arch_probes_insn *asi, struct pt_regs *regs)
486 unsigned long pc = regs->ARM_pc + 2;
492 unsigned long cpsr = regs->ARM_cpsr;
494 rdnv = (rdn == 15) ? pc : regs->uregs[rdn];
495 rmv = (rm == 15) ? pc : regs->uregs[rm];
509 regs->uregs[rdn] = rdnv;
510 regs->ARM_cpsr = (regs->ARM_cpsr & ~APSR_MASK) | (cpsr & APSR_MASK);
526 struct arch_probes_insn *asi, struct pt_regs *regs)
530 "ldr r9, [%[regs], #13*4] \n\t"
531 "ldr r8, [%[regs], #14*4] \n\t"
532 "ldmia %[regs], {r0-r7} \n\t"
534 "str r9, [%[regs], #13*4] \n\t"
537 : [regs] "r" (regs), [fn] "r" (asi->insn_fn)
562 struct arch_probes_insn *asi, struct pt_regs *regs)
566 "ldr r9, [%[regs], #13*4] \n\t"
567 "ldmia %[regs], {r0-r7} \n\t"
569 "stmia %[regs], {r0-r7} \n\t"
570 "str r9, [%[regs], #13*4] \n\t"
573 : [regs] "r" (regs), [fn] "r" (asi->insn_fn)
581 struct arch_probes_insn *asi, struct pt_regs *regs)
587 "ldr r9, [%[regs], #13*4] \n\t"
588 "ldmia %[regs], {r0-r7} \n\t"
590 "stmia %[regs], {r0-r7} \n\t"
591 "str r9, [%[regs], #13*4] \n\t"
594 : [regs] "r" (regs), [fn] "r" (asi->insn_fn)
599 bx_write_pc(pc, regs);