* config/tc-mips.c (macro): Correct handling of constant in M_LI_D

case in little endian mode.
This commit is contained in:
Ian Lance Taylor
1997-10-22 16:52:46 +00:00
parent 34ed833edd
commit 517640d9b5
2 changed files with 31 additions and 7 deletions

View File

@ -1,3 +1,8 @@
Wed Oct 22 12:51:18 1997 Ian Lance Taylor <ian@cygnus.com>
* config/tc-mips.c (macro): Correct handling of constant in M_LI_D
case in little endian mode.
Tue Oct 21 10:20:11 1997 Doug Evans <devans@canuck.cygnus.com> Tue Oct 21 10:20:11 1997 Doug Evans <devans@canuck.cygnus.com>
* config/tc-sparc.c (md_apply_fix3, cases ..._H44, ..._HIX22): Leave * config/tc-sparc.c (md_apply_fix3, cases ..._H44, ..._HIX22): Leave

View File

@ -4976,16 +4976,35 @@ macro (ip)
or in offset_expr. */ or in offset_expr. */
if (imm_expr.X_op == O_constant || imm_expr.X_op == O_big) if (imm_expr.X_op == O_constant || imm_expr.X_op == O_big)
{ {
load_register (&icnt, treg, &imm_expr, mips_opts.isa >= 3); if (mips_opts.isa >= 3)
if (mips_opts.isa < 3 && treg != 31) load_register (&icnt, treg, &imm_expr, 1);
else
{
int hreg, lreg;
if (target_big_endian)
{
hreg = treg;
lreg = treg + 1;
}
else
{
hreg = treg + 1;
lreg = treg;
}
if (hreg <= 31)
load_register (&icnt, hreg, &imm_expr, 0);
if (lreg <= 31)
{ {
if (offset_expr.X_op == O_absent) if (offset_expr.X_op == O_absent)
macro_build ((char *) NULL, &icnt, NULL, "move", "d,s", macro_build ((char *) NULL, &icnt, NULL, "move", "d,s",
treg + 1, 0); lreg, 0);
else else
{ {
assert (offset_expr.X_op == O_constant); assert (offset_expr.X_op == O_constant);
load_register (&icnt, treg + 1, &offset_expr, 0); load_register (&icnt, lreg, &offset_expr, 0);
}
} }
} }
return; return;