From 9ee2a2d449d0e4f70e9e04039e362f8b9259e1d9 Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Mon, 18 Apr 2005 14:16:10 +0000 Subject: [PATCH] * config/tc-mips.c (normalize_constant_expr): Don't check for HAVE_32BIT_GPRS. (check_absolute_expr): Only call normalize_constant_expr() if HAVE_32BIT_GPRS. (mips_ip): Likewise. * config/tc-mips.c (check_absolute_expr): Fix formatting. --- gas/ChangeLog | 10 ++++++++++ gas/config/tc-mips.c | 14 +++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 7d8eb469a5..062b47f436 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,13 @@ +2005-04-18 Maciej W. Rozycki + + * config/tc-mips.c (normalize_constant_expr): Don't check for + HAVE_32BIT_GPRS. + (check_absolute_expr): Only call normalize_constant_expr() if + HAVE_32BIT_GPRS. + (mips_ip): Likewise. + + * config/tc-mips.c (check_absolute_expr): Fix formatting. + 2005-04-18 Jan Beulich * macro.c (free_token): New, freeing all the memory associated with a diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 0e9969038d..24ba8b14fe 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -3265,7 +3265,7 @@ mips16_macro_build (expressionS *ep, const char *name, const char *fmt, static void normalize_constant_expr (expressionS *ex) { - if ((ex->X_op == O_constant && HAVE_32BIT_GPRS) + if (ex->X_op == O_constant && IS_ZEXT_32BIT_NUM (ex->X_add_number)) ex->X_add_number = (((ex->X_add_number & 0xffffffff) ^ 0x80000000) - 0x80000000); @@ -3425,9 +3425,11 @@ check_absolute_expr (struct mips_cl_insn *ip, expressionS *ex) if (ex->X_op == O_big) as_bad (_("unsupported large constant")); else if (ex->X_op != O_constant) - as_bad (_("Instruction %s requires absolute expression"), ip->insn_mo->name); + as_bad (_("Instruction %s requires absolute expression"), + ip->insn_mo->name); - normalize_constant_expr (ex); + if (HAVE_32BIT_GPRS) + normalize_constant_expr (ex); } /* Count the leading zeroes by performing a binary chop. This is a @@ -8103,7 +8105,8 @@ do_msbd: if (imm2_expr.X_op != O_big && imm2_expr.X_op != O_constant) insn_error = _("absolute expression required"); - normalize_constant_expr (&imm2_expr); + if (HAVE_32BIT_GPRS) + normalize_constant_expr (&imm2_expr); s = expr_end; continue; @@ -8571,7 +8574,8 @@ do_msbd: if (imm_expr.X_op != O_big && imm_expr.X_op != O_constant) insn_error = _("absolute expression required"); - normalize_constant_expr (&imm_expr); + if (HAVE_32BIT_GPRS) + normalize_constant_expr (&imm_expr); s = expr_end; continue;