diff --git a/gas/ChangeLog b/gas/ChangeLog index 64cdfe1f49..51f6430ac5 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,7 @@ +2010-12-09 Maciej W. Rozycki + + * config/tc-mips.c (macro) : Fix the placement of code. + 2010-12-09 Maciej W. Rozycki * config/tc-mips.c (mips_ip) <'u'>: Report the value of the LUI diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 780d879762..d07553bf6c 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -7062,6 +7062,17 @@ macro (struct mips_cl_insn *ip) target_big_endian ? treg : treg + 1, r, breg); break; + case M_S_DOB: + gas_assert (mips_opts.isa == ISA_MIPS1); + /* Even on a big endian machine $fn comes before $fn+1. We have + to adjust when storing to memory. */ + macro_build (&offset_expr, "swc1", "T,o(b)", + target_big_endian ? treg + 1 : treg, BFD_RELOC_LO16, breg); + offset_expr.X_add_number += 4; + macro_build (&offset_expr, "swc1", "T,o(b)", + target_big_endian ? treg : treg + 1, BFD_RELOC_LO16, breg); + break; + case M_L_DAB: /* * The MIPS assembler seems to check for X_add_number not @@ -7666,17 +7677,6 @@ macro (struct mips_cl_insn *ip) } break; - case M_S_DOB: - gas_assert (mips_opts.isa == ISA_MIPS1); - /* Even on a big endian machine $fn comes before $fn+1. We have - to adjust when storing to memory. */ - macro_build (&offset_expr, "swc1", "T,o(b)", - target_big_endian ? treg + 1 : treg, BFD_RELOC_LO16, breg); - offset_expr.X_add_number += 4; - macro_build (&offset_expr, "swc1", "T,o(b)", - target_big_endian ? treg : treg + 1, BFD_RELOC_LO16, breg); - break; - case M_SEQ: if (sreg == 0) macro_build (&expr1, "sltiu", "t,r,j", dreg, treg, BFD_RELOC_LO16);