+2006-08-03  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/tc-arm.c (parse_operands): Handle invalid register name
+       for OP_RIWR_RIWC. 
+
 2006-08-03  Joseph Myers  <joseph@codesourcery.com>
 
        * config/tc-arm.c (enum operand_parse_code): Add OP_RIWC_RIWG.
 
        case OP_RIWR_RIWC:
          {
            struct reg_entry *rege = arm_reg_parse_multi (&str);
-           if (rege->type != REG_TYPE_MMXWR
-               && rege->type != REG_TYPE_MMXWC
-               && rege->type != REG_TYPE_MMXWCG)
+           if (!rege
+               || (rege->type != REG_TYPE_MMXWR
+                   && rege->type != REG_TYPE_MMXWC
+                   && rege->type != REG_TYPE_MMXWCG))
              {
                inst.error = _("iWMMXt data or control register expected");
                goto failure;
 
+2006-08-03  Joseph Myers  <joseph@codesourcery.com>
+
+       * gas/arm/iwmmxt-bad.s: Test invalid register names for wldrw and
+       wstrw.
+       * gas/arm/iwmmxt-bad.l: Update.
+
 2006-08-03  Joseph Myers  <joseph@codesourcery.com>
 
        * gas/arm/iwmmxt.s: Test tmcr and tmrc with wcgr registers.
 
 [^:]*:7: Error: iWMMXt data register expected -- `wstrh wcgr0,\[r1\]'
 [^:]*:8: Error: iWMMXt data register expected -- `wstrd wcgr0,\[r1\]'
 [^:]*:9: Error: iWMMXt control register expected -- `tmcr wibble,r1'
+[^:]*:10: Error: iWMMXt data or control register expected -- `wldrw wibble,\[r1\]'
+[^:]*:11: Error: iWMMXt data or control register expected -- `wstrw wibble,\[r1\]'
 
        wstrh   wcgr0,[r1]
        wstrd   wcgr0,[r1]
        tmcr    wibble,r1
+       wldrw   wibble,[r1]
+       wstrw   wibble,[r1]