Lines Matching refs:insn

38 #define REG1(insn)	(((insn) & 0x0f00) >> 8)  argument
39 #define REG2(insn) ((insn) & 0x000f) argument
81 static int emu_addi(unsigned short insn, struct pt_regs *regs) in emu_addi() argument
83 char imm = (char)(insn & 0xff); in emu_addi()
84 int dest = REG1(insn); in emu_addi()
94 static int emu_ldi(unsigned short insn, struct pt_regs *regs) in emu_ldi() argument
96 char imm = (char)(insn & 0xff); in emu_ldi()
98 set_reg(regs, REG1(insn), (int)imm); in emu_ldi()
103 static int emu_add(unsigned short insn, struct pt_regs *regs) in emu_add() argument
105 int dest = REG1(insn); in emu_add()
106 int src = REG2(insn); in emu_add()
116 static int emu_addx(unsigned short insn, struct pt_regs *regs) in emu_addx() argument
118 int dest = REG1(insn); in emu_addx()
124 val += (unsigned int)get_reg(regs, REG2(insn)); in emu_addx()
136 static int emu_and(unsigned short insn, struct pt_regs *regs) in emu_and() argument
138 int dest = REG1(insn); in emu_and()
142 val &= get_reg(regs, REG2(insn)); in emu_and()
148 static int emu_cmp(unsigned short insn, struct pt_regs *regs) in emu_cmp() argument
150 if (get_reg(regs, REG1(insn)) < get_reg(regs, REG2(insn))) in emu_cmp()
158 static int emu_cmpeq(unsigned short insn, struct pt_regs *regs) in emu_cmpeq() argument
160 if (get_reg(regs, REG1(insn)) == get_reg(regs, REG2(insn))) in emu_cmpeq()
168 static int emu_cmpu(unsigned short insn, struct pt_regs *regs) in emu_cmpu() argument
170 if ((unsigned int)get_reg(regs, REG1(insn)) in emu_cmpu()
171 < (unsigned int)get_reg(regs, REG2(insn))) in emu_cmpu()
179 static int emu_cmpz(unsigned short insn, struct pt_regs *regs) in emu_cmpz() argument
181 if (!get_reg(regs, REG2(insn))) in emu_cmpz()
189 static int emu_mv(unsigned short insn, struct pt_regs *regs) in emu_mv() argument
193 val = get_reg(regs, REG2(insn)); in emu_mv()
194 set_reg(regs, REG1(insn), val); in emu_mv()
199 static int emu_neg(unsigned short insn, struct pt_regs *regs) in emu_neg() argument
203 val = get_reg(regs, REG2(insn)); in emu_neg()
204 set_reg(regs, REG1(insn), 0 - val); in emu_neg()
209 static int emu_not(unsigned short insn, struct pt_regs *regs) in emu_not() argument
213 val = get_reg(regs, REG2(insn)); in emu_not()
214 set_reg(regs, REG1(insn), ~val); in emu_not()
219 static int emu_or(unsigned short insn, struct pt_regs *regs) in emu_or() argument
221 int dest = REG1(insn); in emu_or()
225 val |= get_reg(regs, REG2(insn)); in emu_or()
231 static int emu_sub(unsigned short insn, struct pt_regs *regs) in emu_sub() argument
233 int dest = REG1(insn); in emu_sub()
237 val -= get_reg(regs, REG2(insn)); in emu_sub()
243 static int emu_subx(unsigned short insn, struct pt_regs *regs) in emu_subx() argument
245 int dest = REG1(insn); in emu_subx()
249 val -= (unsigned int)get_reg(regs, REG2(insn)); in emu_subx()
262 static int emu_xor(unsigned short insn, struct pt_regs *regs) in emu_xor() argument
264 int dest = REG1(insn); in emu_xor()
268 val ^= (unsigned int)get_reg(regs, REG2(insn)); in emu_xor()
274 static int emu_mul(unsigned short insn, struct pt_regs *regs) in emu_mul() argument
276 int dest = REG1(insn); in emu_mul()
280 reg2 = get_reg(regs, REG2(insn)); in emu_mul()
292 static int emu_mullo_a0(unsigned short insn, struct pt_regs *regs) in emu_mullo_a0() argument
296 reg1 = get_reg(regs, REG1(insn)); in emu_mullo_a0()
297 reg2 = get_reg(regs, REG2(insn)); in emu_mullo_a0()
312 static int emu_mullo_a1(unsigned short insn, struct pt_regs *regs) in emu_mullo_a1() argument
316 reg1 = get_reg(regs, REG1(insn)); in emu_mullo_a1()
317 reg2 = get_reg(regs, REG2(insn)); in emu_mullo_a1()
332 static int emu_mvfacmi_a0(unsigned short insn, struct pt_regs *regs) in emu_mvfacmi_a0() argument
337 set_reg(regs, REG1(insn), (int)val); in emu_mvfacmi_a0()
342 static int emu_mvfacmi_a1(unsigned short insn, struct pt_regs *regs) in emu_mvfacmi_a1() argument
347 set_reg(regs, REG1(insn), (int)val); in emu_mvfacmi_a1()
352 static int emu_m32r2(unsigned short insn, struct pt_regs *regs) in emu_m32r2() argument
356 if ((insn & 0x7fff) == ISA_NOP) /* nop */ in emu_m32r2()
359 switch(insn & 0x7000) { in emu_m32r2()
361 res = emu_addi(insn, regs); in emu_m32r2()
364 res = emu_ldi(insn, regs); in emu_m32r2()
373 switch(insn & 0x70f0) { in emu_m32r2()
375 res = emu_add(insn, regs); in emu_m32r2()
378 res = emu_addx(insn, regs); in emu_m32r2()
381 res = emu_and(insn, regs); in emu_m32r2()
384 res = emu_cmp(insn, regs); in emu_m32r2()
387 res = emu_cmpeq(insn, regs); in emu_m32r2()
390 res = emu_cmpu(insn, regs); in emu_m32r2()
393 res = emu_cmpz(insn, regs); in emu_m32r2()
396 res = emu_mv(insn, regs); in emu_m32r2()
399 res = emu_neg(insn, regs); in emu_m32r2()
402 res = emu_not(insn, regs); in emu_m32r2()
405 res = emu_or(insn, regs); in emu_m32r2()
408 res = emu_sub(insn, regs); in emu_m32r2()
411 res = emu_subx(insn, regs); in emu_m32r2()
414 res = emu_xor(insn, regs); in emu_m32r2()
417 res = emu_mul(insn, regs); in emu_m32r2()
420 res = emu_mullo_a0(insn, regs); in emu_m32r2()
423 res = emu_mullo_a1(insn, regs); in emu_m32r2()
432 switch(insn & 0x70ff) { in emu_m32r2()
434 res = emu_mvfacmi_a0(insn, regs); in emu_m32r2()
437 res = emu_mvfacmi_a1(insn, regs); in emu_m32r2()
459 static int insn_check(unsigned long insn, struct pt_regs *regs, in insn_check() argument
469 if (insn & 0x80000000) { /* 32bit insn */ in insn_check()
470 *ucp += (short)(insn & 0x0000ffff); in insn_check()
475 if (!(regs->bpc & 0x2) && insn & 0x8000) { in insn_check()
476 res = emu_m32r2((unsigned short)insn, regs); in insn_check()