patches/binutils/2.15/190-vmx.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Sep 04 17:27:16 2009 +0200 (2009-09-04)
changeset 1512 439a6b292917
parent 745 e445c00d134d
permissions -rw-r--r--
TODO: update

Add TODO list for m4, autoconf, automake and libtool.
Building our own versions would remove burden from the users
who have older versions on their distributions, and are not
ready/able/allowed to upgrade.
yann@402
     1
Grabbed with
yann@402
     2
wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/opcodes/ppc-opc.c.diff?r1=1.70&r2=1.71&cvsroot=src'
yann@402
     3
See 
yann@402
     4
http://mail.gnu.org/archive/html/bug-binutils/2004-05/msg00071.html
yann@402
     5
and
yann@402
     6
http://sources.redhat.com/ml/binutils-cvs/2004-05/msg00111.html
yann@402
     7
yann@402
     8
This fixes problems like
yann@402
     9
{standard input}: Assembler messages:
yann@402
    10
{standard input}:1: Error: Unrecognized opcode: `dssall' 
yann@402
    11
which show up in binutils-2.15 when building the Linux kernel,
yann@402
    12
or possibly failed compilations when building setjmp/longjmp in glibc.
yann@402
    13
yann@402
    14
An alternative fix would be to pass -many to the assembler.
yann@402
    15
A patch to do that for glibc is at
yann@402
    16
wget 'http://sources.redhat.com/cgi-bin/get-raw-msg?listname=libc-alpha&date=2004-05&msgid=40B36E8C.9030609%40us.ibm.com'
yann@402
    17
Yet another, better, fix would be for gcc to generate assembly
yann@402
    18
that told the assembler which processor type to use.
yann@402
    19
Presumably the Linux kernel sources would need a fix, too.
yann@402
    20
Probably better to just fix binutils to accept sources that it used to.
yann@402
    21
yann@402
    22
yann@402
    23
===================================================================
yann@402
    24
RCS file: /cvs/src/src/opcodes/ppc-opc.c,v
yann@402
    25
retrieving revision 1.70
yann@402
    26
retrieving revision 1.71
yann@402
    27
diff -u -r1.70 -r1.71
yann@402
    28
--- src/opcodes/ppc-opc.c	2004/05/05 13:43:36	1.70
yann@402
    29
+++ src/opcodes/ppc-opc.c	2004/05/19 05:11:48	1.71
yann@402
    30
@@ -1004,8 +1004,13 @@
yann@402
    31
 
yann@402
    32
   /* If only one bit of the FXM field is set, we can use the new form
yann@402
    33
      of the instruction, which is faster.  Unlike the Power4 branch hint
yann@402
    34
-     encoding, this is not backward compatible.  */
yann@402
    35
-  else if ((dialect & PPC_OPCODE_POWER4) != 0 && (value & -value) == value)
yann@402
    36
+     encoding, this is not backward compatible.  Do not generate the
yann@402
    37
+     new form unless -mpower4 has been given, or -many and the two
yann@402
    38
+     operand form of mfcr was used.  */
yann@402
    39
+  else if ((value & -value) == value
yann@402
    40
+	   && ((dialect & PPC_OPCODE_POWER4) != 0
yann@402
    41
+	       || ((dialect & PPC_OPCODE_ANY) != 0
yann@402
    42
+		   && (insn & (0x3ff << 1)) == 19 << 1)))
yann@402
    43
     insn |= 1 << 20;
yann@402
    44
 
yann@402
    45
   /* Any other value on mfcr is an error.  */