@@ -2301,17 +2301,23 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
case 149: /* stdx */
case 181: /* stdux */
+ if (u && ra == 0)
+ goto unknown_opcode;
op->type = MKOP(STORE, u, 8);
break;
#endif
case 151: /* stwx */
case 183: /* stwux */
+ if (u && ra == 0)
+ goto unknown_opcode;
op->type = MKOP(STORE, u, 4);
break;
case 215: /* stbx */
case 247: /* stbux */
+ if (u && ra == 0)
+ goto unknown_opcode;
op->type = MKOP(STORE, u, 1);
break;
@@ -2340,6 +2346,8 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
case 407: /* sthx */
case 439: /* sthux */
+ if (u && ra == 0)
+ goto unknown_opcode;
op->type = MKOP(STORE, u, 2);
break;
@@ -2684,12 +2692,16 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
case 36: /* stw */
case 37: /* stwu */
+ if (u && ra == 0)
+ goto unknown_opcode;
op->type = MKOP(STORE, u, 4);
op->ea = dform_ea(word, regs);
break;
case 38: /* stb */
case 39: /* stbu */
+ if (u && ra == 0)
+ goto unknown_opcode;
op->type = MKOP(STORE, u, 1);
op->ea = dform_ea(word, regs);
break;
@@ -2712,6 +2724,8 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
case 44: /* sth */
case 45: /* sthu */
+ if (u && ra == 0)
+ goto unknown_opcode;
op->type = MKOP(STORE, u, 2);
op->ea = dform_ea(word, regs);
break;
@@ -2890,6 +2904,8 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
op->type = MKOP(STORE, 0, 8);
break;
case 1: /* stdu */
+ if (ra == 0)
+ goto unknown_opcode;
op->type = MKOP(STORE, UPDATE, 8);
break;
case 2: /* stq */