* config/tc-mips.c (macro_build): Handle '>' case (shift amount
authorIan Lance Taylor <ian@airs.com>
Wed, 27 Oct 1993 15:52:03 +0000 (15:52 +0000)
committerIan Lance Taylor <ian@airs.com>
Wed, 27 Oct 1993 15:52:03 +0000 (15:52 +0000)
between 32 and 63 for double shift instruction).
(mips_ip): Likewise.
(printInsn): Likewise.

gas/ChangeLog
gas/config/tc-mips.c

index f670ef1..f0edd30 100644 (file)
@@ -1,3 +1,10 @@
+Wed Oct 27 11:48:56 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
+
+       * config/tc-mips.c (macro_build): Handle '>' case (shift amount
+       between 32 and 63 for double shift instruction).
+       (mips_ip): Likewise.
+       (printInsn): Likewise.
+
 Tue Oct 26 16:58:36 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
 
        * config/tc-ns32k.c (tc_aout_fix_to_chars): Output the symbol
index 8da2027..e67731a 100644 (file)
@@ -1166,6 +1166,7 @@ macro_build (counter, ep, name, fmt, va_alist)
          continue;
 
        case '<':
+       case '>':
          insn.insn_opcode |= va_arg (args, int) << 6;
          continue;
 
@@ -3060,6 +3061,17 @@ mips_ip (str, ip)
              s = expr_end;
              continue;
 
+           case '>':           /* shift amount minus 32 */
+             my_getExpression (&imm_expr, s);
+             check_absolute_expr (ip, &imm_expr);
+             if ((unsigned long) imm_expr.X_add_number < 32
+                 || (unsigned long) imm_expr.X_add_number > 63)
+               break;
+             ip->insn_opcode |= (imm_expr.X_add_number - 32) << 6;
+             imm_expr.X_op = O_absent;
+             s = expr_end;
+             continue;
+
            case 'c':           /* break code */
              my_getExpression (&imm_expr, s);
              check_absolute_expr (ip, &imm_expr);
@@ -4051,6 +4063,7 @@ printInsn (oc)
                  continue;
 
                case '<':
+               case '>':
                  printf ("$%d", shamt);
                  continue;