Lines Matching refs:regs
28 struct arch_probes_insn *asi, struct pt_regs *regs) in t32_simulate_table_branch() argument
30 unsigned long pc = regs->ARM_pc; in t32_simulate_table_branch()
34 unsigned long rnv = (rn == 15) ? pc : regs->uregs[rn]; in t32_simulate_table_branch()
35 unsigned long rmv = regs->uregs[rm]; in t32_simulate_table_branch()
43 regs->ARM_pc = pc + 2 * halfwords; in t32_simulate_table_branch()
48 struct arch_probes_insn *asi, struct pt_regs *regs) in t32_simulate_mrs() argument
52 regs->uregs[rd] = regs->ARM_cpsr & mask; in t32_simulate_mrs()
57 struct arch_probes_insn *asi, struct pt_regs *regs) in t32_simulate_cond_branch() argument
59 unsigned long pc = regs->ARM_pc; in t32_simulate_cond_branch()
67 regs->ARM_pc = pc + (offset * 2); in t32_simulate_cond_branch()
82 struct arch_probes_insn *asi, struct pt_regs *regs) in t32_simulate_branch() argument
84 unsigned long pc = regs->ARM_pc; in t32_simulate_branch()
97 regs->ARM_lr = regs->ARM_pc | 1; in t32_simulate_branch()
100 regs->ARM_cpsr &= ~PSR_T_BIT; in t32_simulate_branch()
105 regs->ARM_pc = pc + (offset * 2); in t32_simulate_branch()
110 struct arch_probes_insn *asi, struct pt_regs *regs) in t32_simulate_ldr_literal() argument
112 unsigned long addr = regs->ARM_pc & ~3; in t32_simulate_ldr_literal()
126 bx_write_pc(rtv, regs); in t32_simulate_ldr_literal()
143 regs->uregs[rt] = rtv; in t32_simulate_ldr_literal()
162 struct arch_probes_insn *asi, struct pt_regs *regs) in t32_emulate_ldrdstrd() argument
164 unsigned long pc = regs->ARM_pc & ~3; in t32_emulate_ldrdstrd()
169 register unsigned long rt1v asm("r0") = regs->uregs[rt1]; in t32_emulate_ldrdstrd()
170 register unsigned long rt2v asm("r1") = regs->uregs[rt2]; in t32_emulate_ldrdstrd()
172 : regs->uregs[rn]; in t32_emulate_ldrdstrd()
182 regs->uregs[rn] = rnv; /* Writeback base register */ in t32_emulate_ldrdstrd()
183 regs->uregs[rt1] = rt1v; in t32_emulate_ldrdstrd()
184 regs->uregs[rt2] = rt2v; in t32_emulate_ldrdstrd()
189 struct arch_probes_insn *asi, struct pt_regs *regs) in t32_emulate_ldrstr() argument
195 register unsigned long rtv asm("r0") = regs->uregs[rt]; in t32_emulate_ldrstr()
196 register unsigned long rnv asm("r2") = regs->uregs[rn]; in t32_emulate_ldrstr()
197 register unsigned long rmv asm("r3") = regs->uregs[rm]; in t32_emulate_ldrstr()
206 regs->uregs[rn] = rnv; /* Writeback base register */ in t32_emulate_ldrstr()
208 bx_write_pc(rtv, regs); in t32_emulate_ldrstr()
210 regs->uregs[rt] = rtv; in t32_emulate_ldrstr()
215 struct arch_probes_insn *asi, struct pt_regs *regs) in t32_emulate_rd8rn16rm0_rwflags() argument
221 register unsigned long rdv asm("r1") = regs->uregs[rd]; in t32_emulate_rd8rn16rm0_rwflags()
222 register unsigned long rnv asm("r2") = regs->uregs[rn]; in t32_emulate_rd8rn16rm0_rwflags()
223 register unsigned long rmv asm("r3") = regs->uregs[rm]; in t32_emulate_rd8rn16rm0_rwflags()
224 unsigned long cpsr = regs->ARM_cpsr; in t32_emulate_rd8rn16rm0_rwflags()
236 regs->uregs[rd] = rdv; in t32_emulate_rd8rn16rm0_rwflags()
237 regs->ARM_cpsr = (regs->ARM_cpsr & ~APSR_MASK) | (cpsr & APSR_MASK); in t32_emulate_rd8rn16rm0_rwflags()
242 struct arch_probes_insn *asi, struct pt_regs *regs) in t32_emulate_rd8pc16_noflags() argument
244 unsigned long pc = regs->ARM_pc; in t32_emulate_rd8pc16_noflags()
247 register unsigned long rdv asm("r1") = regs->uregs[rd]; in t32_emulate_rd8pc16_noflags()
257 regs->uregs[rd] = rdv; in t32_emulate_rd8pc16_noflags()
262 struct arch_probes_insn *asi, struct pt_regs *regs) in t32_emulate_rd8rn16_noflags() argument
267 register unsigned long rdv asm("r1") = regs->uregs[rd]; in t32_emulate_rd8rn16_noflags()
268 register unsigned long rnv asm("r2") = regs->uregs[rn]; in t32_emulate_rd8rn16_noflags()
277 regs->uregs[rd] = rdv; in t32_emulate_rd8rn16_noflags()
283 struct pt_regs *regs) in t32_emulate_rdlo12rdhi8rn16rm0_noflags() argument
290 register unsigned long rdlov asm("r0") = regs->uregs[rdlo]; in t32_emulate_rdlo12rdhi8rn16rm0_noflags()
291 register unsigned long rdhiv asm("r1") = regs->uregs[rdhi]; in t32_emulate_rdlo12rdhi8rn16rm0_noflags()
292 register unsigned long rnv asm("r2") = regs->uregs[rn]; in t32_emulate_rdlo12rdhi8rn16rm0_noflags()
293 register unsigned long rmv asm("r3") = regs->uregs[rm]; in t32_emulate_rdlo12rdhi8rn16rm0_noflags()
303 regs->uregs[rdlo] = rdlov; in t32_emulate_rdlo12rdhi8rn16rm0_noflags()
304 regs->uregs[rdhi] = rdhiv; in t32_emulate_rdlo12rdhi8rn16rm0_noflags()
310 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_simulate_bxblx() argument
312 unsigned long pc = regs->ARM_pc + 2; in t16_simulate_bxblx()
314 unsigned long rmv = (rm == 15) ? pc : regs->uregs[rm]; in t16_simulate_bxblx()
317 regs->ARM_lr = regs->ARM_pc | 1; in t16_simulate_bxblx()
319 bx_write_pc(rmv, regs); in t16_simulate_bxblx()
324 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_simulate_ldr_literal() argument
326 unsigned long *base = (unsigned long *)((regs->ARM_pc + 2) & ~3); in t16_simulate_ldr_literal()
329 regs->uregs[rt] = base[index]; in t16_simulate_ldr_literal()
334 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_simulate_ldrstr_sp_relative() argument
336 unsigned long* base = (unsigned long *)regs->ARM_sp; in t16_simulate_ldrstr_sp_relative()
340 regs->uregs[rt] = base[index]; in t16_simulate_ldrstr_sp_relative()
342 base[index] = regs->uregs[rt]; in t16_simulate_ldrstr_sp_relative()
347 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_simulate_reladr() argument
349 unsigned long base = (insn & 0x800) ? regs->ARM_sp in t16_simulate_reladr()
350 : ((regs->ARM_pc + 2) & ~3); in t16_simulate_reladr()
353 regs->uregs[rt] = base + offset * 4; in t16_simulate_reladr()
358 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_simulate_add_sp_imm() argument
362 regs->ARM_sp -= imm * 4; in t16_simulate_add_sp_imm()
364 regs->ARM_sp += imm * 4; in t16_simulate_add_sp_imm()
369 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_simulate_cbz() argument
372 probes_opcode_t nonzero = regs->uregs[rn] ? insn : ~insn; in t16_simulate_cbz()
376 unsigned long pc = regs->ARM_pc + 2; in t16_simulate_cbz()
377 regs->ARM_pc = pc + (i >> 3) + (imm5 >> 2); in t16_simulate_cbz()
383 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_simulate_it() argument
391 unsigned long cpsr = regs->ARM_cpsr; in t16_simulate_it()
395 regs->ARM_cpsr = cpsr; in t16_simulate_it()
400 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_singlestep_it() argument
402 regs->ARM_pc += 2; in t16_singlestep_it()
403 t16_simulate_it(insn, asi, regs); in t16_singlestep_it()
416 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_simulate_cond_branch() argument
418 unsigned long pc = regs->ARM_pc + 2; in t16_simulate_cond_branch()
421 regs->ARM_pc = pc + (offset * 2); in t16_simulate_cond_branch()
436 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_simulate_branch() argument
438 unsigned long pc = regs->ARM_pc + 2; in t16_simulate_branch()
441 regs->ARM_pc = pc + (offset * 2); in t16_simulate_branch()
446 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_emulate_loregs() argument
448 unsigned long oldcpsr = regs->ARM_cpsr; in t16_emulate_loregs()
458 : [oldcpsr] "r" (oldcpsr), [regs] "r" (regs), in t16_emulate_loregs()
469 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_emulate_loregs_rwflags() argument
471 regs->ARM_cpsr = t16_emulate_loregs(insn, asi, regs); in t16_emulate_loregs_rwflags()
476 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_emulate_loregs_noitrwflags() argument
478 unsigned long cpsr = t16_emulate_loregs(insn, asi, regs); in t16_emulate_loregs_noitrwflags()
480 regs->ARM_cpsr = cpsr; in t16_emulate_loregs_noitrwflags()
485 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_emulate_hiregs() argument
487 unsigned long pc = regs->ARM_pc + 2; in t16_emulate_hiregs()
493 unsigned long cpsr = regs->ARM_cpsr; in t16_emulate_hiregs()
495 rdnv = (rdn == 15) ? pc : regs->uregs[rdn]; in t16_emulate_hiregs()
496 rmv = (rm == 15) ? pc : regs->uregs[rm]; in t16_emulate_hiregs()
510 regs->uregs[rdn] = rdnv; in t16_emulate_hiregs()
511 regs->ARM_cpsr = (regs->ARM_cpsr & ~APSR_MASK) | (cpsr & APSR_MASK); in t16_emulate_hiregs()
527 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_emulate_push() argument
536 : [regs] "r" (regs), [fn] "r" (asi->insn_fn) in t16_emulate_push()
561 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_emulate_pop_nopc() argument
570 : [regs] "r" (regs), [fn] "r" (asi->insn_fn) in t16_emulate_pop_nopc()
578 struct arch_probes_insn *asi, struct pt_regs *regs) in t16_emulate_pop_pc() argument
589 : [regs] "r" (regs), [fn] "r" (asi->insn_fn) in t16_emulate_pop_pc()
594 bx_write_pc(pc, regs); in t16_emulate_pop_pc()