Lines Matching refs:instr

86 static nokprobe_inline int branch_taken(unsigned int instr,  in branch_taken()  argument
90 unsigned int bo = (instr >> 21) & 0x1f; in branch_taken()
101 bi = (instr >> 16) & 0x1f; in branch_taken()
126 static nokprobe_inline unsigned long dform_ea(unsigned int instr, in dform_ea() argument
132 ra = (instr >> 16) & 0x1f; in dform_ea()
133 ea = (signed short) instr; /* sign-extend */ in dform_ea()
144 static nokprobe_inline unsigned long dsform_ea(unsigned int instr, in dsform_ea() argument
150 ra = (instr >> 16) & 0x1f; in dsform_ea()
151 ea = (signed short) (instr & ~3); /* sign-extend */ in dsform_ea()
161 static nokprobe_inline unsigned long dqform_ea(unsigned int instr, in dqform_ea() argument
167 ra = (instr >> 16) & 0x1f; in dqform_ea()
168 ea = (signed short) (instr & ~0xf); /* sign-extend */ in dqform_ea()
179 static nokprobe_inline unsigned long xform_ea(unsigned int instr, in xform_ea() argument
185 ra = (instr >> 16) & 0x1f; in xform_ea()
186 rb = (instr >> 11) & 0x1f; in xform_ea()
1170 unsigned int instr) in analyse_instr() argument
1180 opcode = instr >> 26; in analyse_instr()
1184 imm = (signed short)(instr & 0xfffc); in analyse_instr()
1185 if ((instr & 2) == 0) in analyse_instr()
1188 if (instr & 1) in analyse_instr()
1190 if (branch_taken(instr, regs, op)) in analyse_instr()
1195 if ((instr & 0xfe2) == 2) in analyse_instr()
1203 imm = instr & 0x03fffffc; in analyse_instr()
1206 if ((instr & 2) == 0) in analyse_instr()
1209 if (instr & 1) in analyse_instr()
1213 switch ((instr >> 1) & 0x3ff) { in analyse_instr()
1216 rd = 7 - ((instr >> 23) & 0x7); in analyse_instr()
1217 ra = 7 - ((instr >> 18) & 0x7); in analyse_instr()
1227 imm = (instr & 0x400)? regs->ctr: regs->link; in analyse_instr()
1229 if (instr & 1) in analyse_instr()
1231 if (branch_taken(instr, regs, op)) in analyse_instr()
1254 ra = (instr >> 16) & 0x1f; in analyse_instr()
1255 rb = (instr >> 11) & 0x1f; in analyse_instr()
1256 rd = (instr >> 21) & 0x1f; in analyse_instr()
1259 val = (instr >> (6 + ra * 2 + rb)) & 1; in analyse_instr()
1266 switch ((instr >> 1) & 0x3ff) { in analyse_instr()
1270 switch ((instr >> 21) & 3) { in analyse_instr()
1292 rd = (instr >> 21) & 0x1f; in analyse_instr()
1293 ra = (instr >> 16) & 0x1f; in analyse_instr()
1294 rb = (instr >> 11) & 0x1f; in analyse_instr()
1299 if (rd & trap_compare(regs->gpr[ra], (short) instr)) in analyse_instr()
1304 if (rd & trap_compare((int)regs->gpr[ra], (short) instr)) in analyse_instr()
1309 op->val = regs->gpr[ra] * (short) instr; in analyse_instr()
1313 imm = (short) instr; in analyse_instr()
1318 imm = (unsigned short) instr; in analyse_instr()
1328 imm = (short) instr; in analyse_instr()
1338 imm = (short) instr; in analyse_instr()
1343 imm = (short) instr; in analyse_instr()
1349 imm = (short) instr; in analyse_instr()
1356 imm = ((short) instr) << 16; in analyse_instr()
1363 if (((instr >> 1) & 0x1f) == 2) { in analyse_instr()
1365 imm = (short) (instr & 0xffc1); /* d0 + d2 fields */ in analyse_instr()
1366 imm |= (instr >> 15) & 0x3e; /* d1 field */ in analyse_instr()
1374 mb = (instr >> 6) & 0x1f; in analyse_instr()
1375 me = (instr >> 1) & 0x1f; in analyse_instr()
1382 mb = (instr >> 6) & 0x1f; in analyse_instr()
1383 me = (instr >> 1) & 0x1f; in analyse_instr()
1389 mb = (instr >> 6) & 0x1f; in analyse_instr()
1390 me = (instr >> 1) & 0x1f; in analyse_instr()
1397 op->val = regs->gpr[rd] | (unsigned short) instr; in analyse_instr()
1401 imm = (unsigned short) instr; in analyse_instr()
1406 op->val = regs->gpr[rd] ^ (unsigned short) instr; in analyse_instr()
1410 imm = (unsigned short) instr; in analyse_instr()
1415 op->val = regs->gpr[rd] & (unsigned short) instr; in analyse_instr()
1420 imm = (unsigned short) instr; in analyse_instr()
1427 mb = ((instr >> 6) & 0x1f) | (instr & 0x20); in analyse_instr()
1429 if ((instr & 0x10) == 0) { in analyse_instr()
1430 sh = rb | ((instr & 2) << 4); in analyse_instr()
1432 switch ((instr >> 2) & 3) { in analyse_instr()
1452 switch ((instr >> 1) & 7) { in analyse_instr()
1467 if (((instr >> 1) & 0x1f) == 15) { in analyse_instr()
1468 mb = (instr >> 6) & 0x1f; /* bc field */ in analyse_instr()
1476 switch ((instr >> 1) & 0x3ff) { in analyse_instr()
1510 imm = (instr & 0x10000)? 0x8002: 0xefffffffffffeffeUL; in analyse_instr()
1517 if ((instr >> 20) & 1) { in analyse_instr()
1520 if (instr & (0x80000 >> sh)) in analyse_instr()
1534 if (instr & (0x80000 >> sh)) in analyse_instr()
1542 spr = ((instr >> 16) & 0x1f) | ((instr >> 6) & 0x3e0); in analyse_instr()
1552 spr = ((instr >> 16) & 0x1f) | ((instr >> 6) & 0x3e0); in analyse_instr()
1859 sh = rb | ((instr & 2) << 4); in analyse_instr()
1876 op->ea = xform_ea(instr, regs); in analyse_instr()
1881 op->ea = xform_ea(instr, regs); in analyse_instr()
1886 op->ea = xform_ea(instr, regs); in analyse_instr()
1892 op->ea = xform_ea(instr, regs); in analyse_instr()
1898 op->ea = xform_ea(instr, regs); in analyse_instr()
1903 op->ea = xform_ea(instr, regs); in analyse_instr()
1916 u = (instr >> 20) & UPDATE; in analyse_instr()
1921 u = instr & UPDATE; in analyse_instr()
1922 op->ea = xform_ea(instr, regs); in analyse_instr()
1923 switch ((instr >> 1) & 0x3ff) { in analyse_instr()
2168 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2174 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2180 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2186 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2195 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2202 op->vsx_flags = ((instr & 0x20) ? VSX_LDLEFT : 0) | in analyse_instr()
2207 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2214 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2221 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2230 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2237 op->vsx_flags = ((instr & 0x20) ? VSX_LDLEFT : 0) | in analyse_instr()
2242 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2249 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2255 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2262 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2268 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2274 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2281 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2288 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2295 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2301 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2308 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2314 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2321 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2328 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2335 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2341 op->reg = rd | ((instr & 1) << 5); in analyse_instr()
2354 op->ea = dform_ea(instr, regs); in analyse_instr()
2360 op->ea = dform_ea(instr, regs); in analyse_instr()
2366 op->ea = dform_ea(instr, regs); in analyse_instr()
2372 op->ea = dform_ea(instr, regs); in analyse_instr()
2378 op->ea = dform_ea(instr, regs); in analyse_instr()
2384 op->ea = dform_ea(instr, regs); in analyse_instr()
2390 op->ea = dform_ea(instr, regs); in analyse_instr()
2397 op->ea = dform_ea(instr, regs); in analyse_instr()
2402 op->ea = dform_ea(instr, regs); in analyse_instr()
2409 op->ea = dform_ea(instr, regs); in analyse_instr()
2415 op->ea = dform_ea(instr, regs); in analyse_instr()
2421 op->ea = dform_ea(instr, regs); in analyse_instr()
2427 op->ea = dform_ea(instr, regs); in analyse_instr()
2435 op->ea = dqform_ea(instr, regs); in analyse_instr()
2441 op->ea = dsform_ea(instr, regs); in analyse_instr()
2442 switch (instr & 3) { in analyse_instr()
2466 op->ea = dsform_ea(instr, regs); in analyse_instr()
2467 switch (instr & 3) { in analyse_instr()
2483 switch (instr & 7) { in analyse_instr()
2486 op->ea = dsform_ea(instr, regs); in analyse_instr()
2491 op->ea = dqform_ea(instr, regs); in analyse_instr()
2492 if (instr & 8) in analyse_instr()
2501 op->ea = dsform_ea(instr, regs); in analyse_instr()
2510 op->ea = dsform_ea(instr, regs); in analyse_instr()
2518 op->ea = dqform_ea(instr, regs); in analyse_instr()
2519 if (instr & 8) in analyse_instr()
2531 op->ea = dsform_ea(instr, regs); in analyse_instr()
2532 switch (instr & 3) { in analyse_instr()
2560 if (instr & 1) in analyse_instr()
2568 if (instr & 1) in analyse_instr()
2998 int emulate_step(struct pt_regs *regs, unsigned int instr) in emulate_step() argument
3005 r = analyse_instr(&op, regs, instr); in emulate_step()