Lines Matching refs:instr
82 static nokprobe_inline int branch_taken(unsigned int instr, in branch_taken() argument
86 unsigned int bo = (instr >> 21) & 0x1f; in branch_taken()
97 bi = (instr >> 16) & 0x1f; in branch_taken()
122 static nokprobe_inline unsigned long dform_ea(unsigned int instr, in dform_ea() argument
128 ra = (instr >> 16) & 0x1f; in dform_ea()
129 ea = (signed short) instr; /* sign-extend */ in dform_ea()
140 static nokprobe_inline unsigned long dsform_ea(unsigned int instr, in dsform_ea() argument
146 ra = (instr >> 16) & 0x1f; in dsform_ea()
147 ea = (signed short) (instr & ~3); /* sign-extend */ in dsform_ea()
157 static nokprobe_inline unsigned long dqform_ea(unsigned int instr, in dqform_ea() argument
163 ra = (instr >> 16) & 0x1f; in dqform_ea()
164 ea = (signed short) (instr & ~0xf); /* sign-extend */ in dqform_ea()
175 static nokprobe_inline unsigned long xform_ea(unsigned int instr, in xform_ea() argument
181 ra = (instr >> 16) & 0x1f; in xform_ea()
182 rb = (instr >> 11) & 0x1f; in xform_ea()
1166 unsigned int instr) in analyse_instr() argument
1176 opcode = instr >> 26; in analyse_instr()
1180 imm = (signed short)(instr & 0xfffc); in analyse_instr()
1181 if ((instr & 2) == 0) in analyse_instr()
1184 if (instr & 1) in analyse_instr()
1186 if (branch_taken(instr, regs, op)) in analyse_instr()
1191 if ((instr & 0xfe2) == 2) in analyse_instr()
1199 imm = instr & 0x03fffffc; in analyse_instr()
1202 if ((instr & 2) == 0) in analyse_instr()
1205 if (instr & 1) in analyse_instr()
1209 switch ((instr >> 1) & 0x3ff) { in analyse_instr()
1212 rd = 7 - ((instr >> 23) & 0x7); in analyse_instr()
1213 ra = 7 - ((instr >> 18) & 0x7); in analyse_instr()
1223 imm = (instr & 0x400)? regs->ctr: regs->link; in analyse_instr()
1225 if (instr & 1) in analyse_instr()
1227 if (branch_taken(instr, regs, op)) in analyse_instr()
1250 ra = (instr >> 16) & 0x1f; in analyse_instr()
1251 rb = (instr >> 11) & 0x1f; in analyse_instr()
1252 rd = (instr >> 21) & 0x1f; in analyse_instr()
1255 val = (instr >> (6 + ra * 2 + rb)) & 1; in analyse_instr()
1262 switch ((instr >> 1) & 0x3ff) { in analyse_instr()
1266 switch ((instr >> 21) & 3) { in analyse_instr()
1288 rd = (instr >> 21) & 0x1f; in analyse_instr()
1289 ra = (instr >> 16) & 0x1f; in analyse_instr()
1290 rb = (instr >> 11) & 0x1f; in analyse_instr()
1291 rc = (instr >> 6) & 0x1f; in analyse_instr()
1296 if (rd & trap_compare(regs->gpr[ra], (short) instr)) in analyse_instr()
1301 if (rd & trap_compare((int)regs->gpr[ra], (short) instr)) in analyse_instr()
1310 switch (instr & 0x3f) { in analyse_instr()
1338 op->val = regs->gpr[ra] * (short) instr; in analyse_instr()
1342 imm = (short) instr; in analyse_instr()
1347 imm = (unsigned short) instr; in analyse_instr()
1357 imm = (short) instr; in analyse_instr()
1367 imm = (short) instr; in analyse_instr()
1372 imm = (short) instr; in analyse_instr()
1378 imm = (short) instr; in analyse_instr()
1385 imm = ((short) instr) << 16; in analyse_instr()
1392 if (((instr >> 1) & 0x1f) == 2) { in analyse_instr()
1394 imm = (short) (instr & 0xffc1); /* d0 + d2 fields */ in analyse_instr()
1395 imm |= (instr >> 15) & 0x3e; /* d1 field */ in analyse_instr()
1403 mb = (instr >> 6) & 0x1f; in analyse_instr()
1404 me = (instr >> 1) & 0x1f; in analyse_instr()
1411 mb = (instr >> 6) & 0x1f; in analyse_instr()
1412 me = (instr >> 1) & 0x1f; in analyse_instr()
1418 mb = (instr >> 6) & 0x1f; in analyse_instr()
1419 me = (instr >> 1) & 0x1f; in analyse_instr()
1426 op->val = regs->gpr[rd] | (unsigned short) instr; in analyse_instr()
1430 imm = (unsigned short) instr; in analyse_instr()
1435 op->val = regs->gpr[rd] ^ (unsigned short) instr; in analyse_instr()
1439 imm = (unsigned short) instr; in analyse_instr()
1444 op->val = regs->gpr[rd] & (unsigned short) instr; in analyse_instr()
1449 imm = (unsigned short) instr; in analyse_instr()
1456 mb = ((instr >> 6) & 0x1f) | (instr & 0x20); in analyse_instr()
1458 if ((instr & 0x10) == 0) { in analyse_instr()
1459 sh = rb | ((instr & 2) << 4); in analyse_instr()
1461 switch ((instr >> 2) & 3) { in analyse_instr()
1481 switch ((instr >> 1) & 7) { in analyse_instr()
1496 if (((instr >> 1) & 0x1f) == 15) { in analyse_instr()
1497 mb = (instr >> 6) & 0x1f; /* bc field */ in analyse_instr()
1505 switch ((instr >> 1) & 0x3ff) { in analyse_instr()
1539 imm = (instr & 0x10000)? 0x8002: 0xefffffffffffeffeUL; in analyse_instr()
1546 if ((instr >> 20) & 1) { in analyse_instr()
1549 if (instr & (0x80000 >> sh)) in analyse_instr()
1563 if (instr & (0x80000 >> sh)) in analyse_instr()
1571 spr = ((instr >> 16) & 0x1f) | ((instr >> 6) & 0x3e0); in analyse_instr()
1581 spr = ((instr >> 16) & 0x1f) | ((instr >> 6) & 0x3e0); in analyse_instr()
1951 sh = rb | ((instr & 2) << 4); in analyse_instr()
1967 sh = rb | ((instr & 2) << 4); in analyse_instr()
1982 op->ea = xform_ea(instr, regs); in analyse_instr()
1987 op->ea = xform_ea(instr, regs); in analyse_instr()
1992 op->ea = xform_ea(instr, regs); in analyse_instr()
1998 op->ea = xform_ea(instr, regs); in analyse_instr()
2004 op->ea = xform_ea(instr, regs); in analyse_instr()
2009 op->ea = xform_ea(instr, regs); in analyse_instr()
2022 u = (instr >> 20) & UPDATE; in analyse_instr()
2027 u = instr & UPDATE; in analyse_instr()
2028 op->ea = xform_ea(instr, regs); in analyse_instr()
2029 switch ((instr >> 1) & 0x3ff) { in analyse_instr()
2274 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2280 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2286 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2292 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2301 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2308 op->vsx_flags = ((instr & 0x20) ? VSX_LDLEFT : 0) | in analyse_instr()
2313 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2320 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2327 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2336 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2343 op->vsx_flags = ((instr & 0x20) ? VSX_LDLEFT : 0) | in analyse_instr()
2348 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2355 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2361 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2368 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2374 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2380 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2387 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2394 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2401 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2407 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2414 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2420 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2427 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2434 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2441 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2447 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2460 op->ea = dform_ea(instr, regs); in analyse_instr()
2466 op->ea = dform_ea(instr, regs); in analyse_instr()
2472 op->ea = dform_ea(instr, regs); in analyse_instr()
2478 op->ea = dform_ea(instr, regs); in analyse_instr()
2484 op->ea = dform_ea(instr, regs); in analyse_instr()
2490 op->ea = dform_ea(instr, regs); in analyse_instr()
2496 op->ea = dform_ea(instr, regs); in analyse_instr()
2503 op->ea = dform_ea(instr, regs); in analyse_instr()
2508 op->ea = dform_ea(instr, regs); in analyse_instr()
2515 op->ea = dform_ea(instr, regs); in analyse_instr()
2521 op->ea = dform_ea(instr, regs); in analyse_instr()
2527 op->ea = dform_ea(instr, regs); in analyse_instr()
2533 op->ea = dform_ea(instr, regs); in analyse_instr()
2541 op->ea = dqform_ea(instr, regs); in analyse_instr()
2547 op->ea = dsform_ea(instr, regs); in analyse_instr()
2548 switch (instr & 3) { in analyse_instr()
2572 op->ea = dsform_ea(instr, regs); in analyse_instr()
2573 switch (instr & 3) { in analyse_instr()
2589 switch (instr & 7) { in analyse_instr()
2592 op->ea = dsform_ea(instr, regs); in analyse_instr()
2597 op->ea = dqform_ea(instr, regs); in analyse_instr()
2598 if (instr & 8) in analyse_instr()
2607 op->ea = dsform_ea(instr, regs); in analyse_instr()
2616 op->ea = dsform_ea(instr, regs); in analyse_instr()
2624 op->ea = dqform_ea(instr, regs); in analyse_instr()
2625 if (instr & 8) in analyse_instr()
2637 op->ea = dsform_ea(instr, regs); in analyse_instr()
2638 switch (instr & 3) { in analyse_instr()
2666 if (instr & 1) in analyse_instr()
2674 if (instr & 1) in analyse_instr()
3104 int emulate_step(struct pt_regs *regs, unsigned int instr) in emulate_step() argument
3111 r = analyse_instr(&op, regs, instr); in emulate_step()