diff --git a/gas/ChangeLog b/gas/ChangeLog index f670ef1996f..f0edd303497 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -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 diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 8da20273104..e67731a488c 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -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;