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;
450 "ldmia %[regs], {r0-r7} \n\t"
452 "stmia %[regs], {r0-r7} \n\t"
455 : [oldcpsr] "r" (oldcpsr), [regs] "r" (regs),
466 struct arch_probes_insn *asi, struct pt_regs *regs)
468 regs->ARM_cpsr = t16_emulate_loregs(insn, asi, regs);
473 struct arch_probes_insn *asi, struct pt_regs *regs)
475 unsigned long cpsr = t16_emulate_loregs(insn, asi, regs);
477 regs->ARM_cpsr = cpsr;
482 struct arch_probes_insn *asi, struct pt_regs *regs)
484 unsigned long pc = regs->ARM_pc + 2;
490 unsigned long cpsr = regs->ARM_cpsr;
492 rdnv = (rdn == 15) ? pc : regs->uregs[rdn];
493 rmv = (rm == 15) ? pc : regs->uregs[rm];
507 regs->uregs[rdn] = rdnv;
508 regs->ARM_cpsr = (regs->ARM_cpsr & ~APSR_MASK) | (cpsr & APSR_MASK);
524 struct arch_probes_insn *asi, struct pt_regs *regs)
527 "ldr r9, [%[regs], #13*4] \n\t"
528 "ldr r8, [%[regs], #14*4] \n\t"
529 "ldmia %[regs], {r0-r7} \n\t"
531 "str r9, [%[regs], #13*4] \n\t"
533 : [regs] "r" (regs), [fn] "r" (asi->insn_fn)
558 struct arch_probes_insn *asi, struct pt_regs *regs)
561 "ldr r9, [%[regs], #13*4] \n\t"
562 "ldmia %[regs], {r0-r7} \n\t"
564 "stmia %[regs], {r0-r7} \n\t"
565 "str r9, [%[regs], #13*4] \n\t"
567 : [regs] "r" (regs), [fn] "r" (asi->insn_fn)
575 struct arch_probes_insn *asi, struct pt_regs *regs)
580 "ldr r9, [%[regs], #13*4] \n\t"
581 "ldmia %[regs], {r0-r7} \n\t"
583 "stmia %[regs], {r0-r7} \n\t"
584 "str r9, [%[regs], #13*4] \n\t"
586 : [regs] "r" (regs), [fn] "r" (asi->insn_fn)
591 bx_write_pc(pc, regs);