Port-mips archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Can't compile longson kernels



On Thu, Nov 28, 2013 at 06:29:14PM +0100, Martin Husemann wrote:
> On Thu, Nov 28, 2013 at 06:26:54PM +0100, Manuel Bouyer wrote:
> > I wonder is something changed here, that cause the warning workaround to
> > not work any more (-Wa,-mfix-loongson2f-jump is from upstream, but
> > this warning workaround is a local change).
> 
> I think this is broken since the binutils update.

Right. The attached patch should make our local hack work with the new
binutils. I can't test a LOOGSON kernel right now, unfortunably ...


-- 
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
     NetBSD: 26 ans d'experience feront toujours la difference
--
Index: tc-mips.c
===================================================================
RCS file: /cvsroot/src/external/gpl3/binutils/dist/gas/config/tc-mips.c,v
retrieving revision 1.12
diff -u -p -u -r1.12 tc-mips.c
--- tc-mips.c   29 Sep 2013 20:13:42 -0000      1.12
+++ tc-mips.c   28 Nov 2013 18:55:58 -0000
@@ -3700,10 +3700,14 @@ fix_loongson2f_jump (struct mips_cl_insn
       macro_build (NULL, "and", "d,v,t", sreg, sreg, ATREG);
       /* Hide these three instructions to avoid getting a ``macro expanded into
          multiple instructions'' warning. */
-      if (mips_relax.sequence != 2)
+      if (mips_relax.sequence != 2) {
         mips_macro_warning.sizes[0] -= 3 * 4;
-      if (mips_relax.sequence != 1)
+        mips_macro_warning.insns[0] -= 3;
+      }
+      if (mips_relax.sequence != 1) {
         mips_macro_warning.sizes[1] -= 3 * 4;
+        mips_macro_warning.insns[1] -= 3;
+      }
     }
 }
 
@@ -4839,10 +4843,14 @@ macro_build_jrpatch (expressionS *ep, un
 
   /* Hide these two instructions to avoid getting a ``macro expanded into
      multiple instructions'' warning. */
-  if (mips_relax.sequence != 2)
+  if (mips_relax.sequence != 2) {
     mips_macro_warning.sizes[0] -= 2 * 4;
-  if (mips_relax.sequence != 1)
+    mips_macro_warning.insns[0] -= 2;
+  }
+  if (mips_relax.sequence != 1) {
     mips_macro_warning.sizes[1] -= 2 * 4;
+    mips_macro_warning.insns[0] -= 2;
+  }
 }
 
 /* Build an instruction created by a macro expansion.  This is passed


Home | Main Index | Thread Index | Old Index