Re: 2.2.10-ac1 doesn't build...

Alan Modra (alan@SPRI.Levels.UniSA.Edu.Au)
Thu, 17 Jun 1999 17:54:55 +0930 (CST)


This bug isn't just in -ac kernels. Please apply the patch to
2.3.x, 2.2.x, 2.0.x. ie. everywhere :-)

> -o in2000.o in2000.c
> {standard input}: Assembler messages:
> {standard input}:1008: Error: suffix or operands invalid for `outs'
> {standard input}:1024: Error: suffix or operands invalid for `outs'
> {standard input}:1416: Error: suffix or operands invalid for `outs'
> {standard input}:1633: Error: suffix or operands invalid for `ins'
> {standard input}:1866: Error: suffix or operands invalid for `ins'
> make[2]: *** [in2000.o] Error 1
> make[2]: Leaving directory
> /tmp/build-kernel/usr/src/linux-2.2.10-ac1/drivers/scsi'

> egcs-1.1.2, binutils-2.9.4.0.5, glibc-2.1.1.
^^^^^^^^^^^^^^^^^^

The binutils-2.9.4 assembler has better syntax checking than previous
versions of gas, and exposes some shoddy assembly in in2000.h

This will fix it, without causing problems for old assemblers. You could
also just zap the %%dx from the insw and outsw instructions, but this way
we show the segment/index regs used.

--- linux-2.2.10/drivers/scsi/in2000.h Sat Sep 5 20:11:10 1998
+++ linux/drivers/scsi/in2000.h Thu Jun 17 17:20:06 1999
@@ -67,7 +67,7 @@
orl %%ecx, %%ecx \n \
jz 1f \n \
rep \n \
- insw %%dx \n \
+ insw (%%dx),%%es:(%%edi) \n \
1: " \
: "=D" (sp) /* output */ \
: "d" (f), "D" (sp), "c" (i) /* input */ \
@@ -79,7 +79,7 @@
orl %%ecx, %%ecx \n \
jz 1f \n \
rep \n \
- outsw %%dx \n \
+ outsw %%ds:(%%esi),(%%dx) \n \
1: " \
: "=S" (sp) /* output */ \
: "d" (f), "S" (sp), "c" (i) /* input */ \

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/