Re: [PATCH] multiline string cleanup

2001-04-02 Thread Andi Kleen

On Mon, Apr 02, 2001 at 07:50:04PM -0400, Jeff Garzik wrote:
> Andi Kleen wrote:
> > "J . A . Magallon" <[EMAIL PROTECTED]> writes:
> > > This is one other try to make kernel sources gcc-3.0 friendly. This cleans
> > > some muti-line asm strings in checksum.h and floppy.h (this were the only
> > > ones reported in my kernel build, perhaps there are more in drivers I do
> > > not use).
> 
> > I surely hope the gcc guys will just remove that silly warning again, because
> > it makes it impossible to write readable inline assembly now.
> 
> If it's a silly warning, then we should turn it off in linux/Makefile. 
> I dunno that the kernel can dictate to gcc here what to do...

It unfortunately cannot be turned off ATM (it is "deprecation warning" where
someone is trying to warn you that the next release of gcc may not support
multi line strings anymore). 

> Also some multiline string cleanups have already made it into the kernel
> -- though that is not conclusive, as it may just be maintainer
> preference.

Longer inline assembly without multi strings is hard to read and very nasty
to edit, so I don't see that as a "cleanup", but as a pessimization towards
less maintainable code.


-Andi

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: [PATCH] multiline string cleanup

2001-04-02 Thread Jeff Garzik

Andi Kleen wrote:
> "J . A . Magallon" <[EMAIL PROTECTED]> writes:
> > This is one other try to make kernel sources gcc-3.0 friendly. This cleans
> > some muti-line asm strings in checksum.h and floppy.h (this were the only
> > ones reported in my kernel build, perhaps there are more in drivers I do
> > not use).

> I surely hope the gcc guys will just remove that silly warning again, because
> it makes it impossible to write readable inline assembly now.

If it's a silly warning, then we should turn it off in linux/Makefile. 
I dunno that the kernel can dictate to gcc here what to do...

Also some multiline string cleanups have already made it into the kernel
-- though that is not conclusive, as it may just be maintainer
preference.

Jeff


-- 
Jeff Garzik   | May you have warm words on a cold evening,
Building 1024 | a full moon on a dark night,
MandrakeSoft  | and a smooth road all the way to your door.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: [PATCH] multiline string cleanup

2001-04-02 Thread Andi Kleen

"J . A . Magallon" <[EMAIL PROTECTED]> writes:

> This is one other try to make kernel sources gcc-3.0 friendly. This cleans
> some muti-line asm strings in checksum.h and floppy.h (this were the only
> ones reported in my kernel build, perhaps there are more in drivers I do
> not use).

I surely hope the gcc guys will just remove that silly warning again, because
it makes it impossible to write readable inline assembly now.

-Andi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: [PATCH] multiline string cleanup

2001-04-02 Thread Andi Kleen

"J . A . Magallon" [EMAIL PROTECTED] writes:

 This is one other try to make kernel sources gcc-3.0 friendly. This cleans
 some muti-line asm strings in checksum.h and floppy.h (this were the only
 ones reported in my kernel build, perhaps there are more in drivers I do
 not use).

I surely hope the gcc guys will just remove that silly warning again, because
it makes it impossible to write readable inline assembly now.

-Andi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: [PATCH] multiline string cleanup

2001-04-02 Thread Jeff Garzik

Andi Kleen wrote:
 "J . A . Magallon" [EMAIL PROTECTED] writes:
  This is one other try to make kernel sources gcc-3.0 friendly. This cleans
  some muti-line asm strings in checksum.h and floppy.h (this were the only
  ones reported in my kernel build, perhaps there are more in drivers I do
  not use).

 I surely hope the gcc guys will just remove that silly warning again, because
 it makes it impossible to write readable inline assembly now.

If it's a silly warning, then we should turn it off in linux/Makefile. 
I dunno that the kernel can dictate to gcc here what to do...

Also some multiline string cleanups have already made it into the kernel
-- though that is not conclusive, as it may just be maintainer
preference.

Jeff


-- 
Jeff Garzik   | May you have warm words on a cold evening,
Building 1024 | a full moon on a dark night,
MandrakeSoft  | and a smooth road all the way to your door.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: [PATCH] multiline string cleanup

2001-04-02 Thread Andi Kleen

On Mon, Apr 02, 2001 at 07:50:04PM -0400, Jeff Garzik wrote:
 Andi Kleen wrote:
  "J . A . Magallon" [EMAIL PROTECTED] writes:
   This is one other try to make kernel sources gcc-3.0 friendly. This cleans
   some muti-line asm strings in checksum.h and floppy.h (this were the only
   ones reported in my kernel build, perhaps there are more in drivers I do
   not use).
 
  I surely hope the gcc guys will just remove that silly warning again, because
  it makes it impossible to write readable inline assembly now.
 
 If it's a silly warning, then we should turn it off in linux/Makefile. 
 I dunno that the kernel can dictate to gcc here what to do...

It unfortunately cannot be turned off ATM (it is "deprecation warning" where
someone is trying to warn you that the next release of gcc may not support
multi line strings anymore). 

 Also some multiline string cleanups have already made it into the kernel
 -- though that is not conclusive, as it may just be maintainer
 preference.

Longer inline assembly without multi strings is hard to read and very nasty
to edit, so I don't see that as a "cleanup", but as a pessimization towards
less maintainable code.


-Andi

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



[PATCH] multiline string cleanup

2001-03-30 Thread J . A . Magallon

Hi, kernel developers.

This is one other try to make kernel sources gcc-3.0 friendly. This cleans
some muti-line asm strings in checksum.h and floppy.h (this were the only
ones reported in my kernel build, perhaps there are more in drivers I do
not use).

I have not tested the changes with older binutils, as Alan suggested, but
the changes are made following other __asm__ pieces in the kernel. They
build with gcc-3.0-20010326 snapshot and binutils-2.10.1.0.2.

BTW, I have a doubt: as assembler is written in the rest of kernel (get,
for example, system.h):

static inline unsigned long _get_base(char * addr)
{
unsigned long __base;
__asm__("movb %3,%%dh\n\t"
"movb %2,%%dl\n\t"
"shll $16,%%edx\n\t"
"movw %1,%%dx"
:"=" (__base)
:"m" (*((addr)+2)),
 "m" (*((addr)+4)),
 "m" (*((addr)+7)));
return __base;
}

the first asm line is not tabbed, the result is:

movb %3,%%dh
movb %2,%%dl
shll $16,%%edx
movw %1,%%dx

so is really format (tabs) so important ?


Patch inlined
=== patch-mls
--- linux-2.4.3/include/asm-i386/checksum.h.origFri Mar 30 23:13:22 2001
+++ linux-2.4.3/include/asm-i386/checksum.h Fri Mar 30 23:24:04 2001
@@ -69,25 +69,24 @@
  unsigned int ihl) {
unsigned int sum;
 
-   __asm__ __volatile__("
-   movl (%1), %0
-   subl $4, %2
-   jbe 2f
-   addl 4(%1), %0
-   adcl 8(%1), %0
-   adcl 12(%1), %0
-1: adcl 16(%1), %0
-   lea 4(%1), %1
-   decl %2
-   jne 1b
-   adcl $0, %0
-   movl %0, %2
-   shrl $16, %0
-   addw %w2, %w0
-   adcl $0, %0
-   notl %0
-2:
-   "
+   __asm__ __volatile__(
+   "movl (%1), %0\n\t"
+   "subl $4, %2\n\t"
+   "jbe 2f\n\t"
+   "addl 4(%1), %0\n\t"
+   "adcl 8(%1), %0\n\t"
+   "adcl 12(%1), %0\n"
+   "1:\tadcl 16(%1), %0\n\t"
+   "lea 4(%1), %1\n\t"
+   "decl %2\n\t"
+   "jne1b\n\t"
+   "adcl $0, %0\n\t"
+   "movl %0, %2\n\t"
+   "shrl $16, %0\n\t"
+   "addw %w2, %w0\n\t"
+   "adcl $0, %0\n\t"
+   "notl %0\n"
+   "2:"
/* Since the input registers which are loaded with iph and ipl
   are modified, we must also specify them as outputs, or gcc
   will assume they contain their original values. */
@@ -102,10 +101,9 @@
 
 static inline unsigned int csum_fold(unsigned int sum)
 {
-   __asm__("
-   addl %1, %0
-   adcl $0x, %0
-   "
+   __asm__(
+   "addl %1, %0\n\t"
+   "adcl $0x, %0"
: "=r" (sum)
: "r" (sum << 16), "0" (sum & 0x)
);
@@ -118,12 +116,11 @@
   unsigned short proto,
   unsigned int sum) 
 {
-__asm__("
-   addl %1, %0
-   adcl %2, %0
-   adcl %3, %0
-   adcl $0, %0
-   "
+__asm__(
+   "addl %1, %0\n\t"
+   "adcl %2, %0\n\t"
+   "adcl %3, %0\n\t"
+   "adcl $0, %0"
: "=r" (sum)
: "g" (daddr), "g"(saddr), "g"((ntohs(len)<<16)+proto*256), "0"(sum));
 return sum;
@@ -158,19 +155,18 @@
 unsigned short proto,
 unsigned int sum) 
 {
-   __asm__("
-   addl 0(%1), %0
-   adcl 4(%1), %0
-   adcl 8(%1), %0
-   adcl 12(%1), %0
-   adcl 0(%2), %0
-   adcl 4(%2), %0
-   adcl 8(%2), %0
-   adcl 12(%2), %0
-   adcl %3, %0
-   adcl %4, %0
-   adcl $0, %0
-   "
+   __asm__(
+   "addl 0(%1), %0\n\t"
+   "adcl 4(%1), %0\n\t"
+   "adcl 8(%1), %0\n\t"
+   "adcl 12(%1), %0\n\t"
+   "adcl 0(%2), %0\n\t"
+   "adcl 4(%2), %0\n\t"
+   "adcl 8(%2), %0\n\t"
+   "adcl 12(%2), %0\n\t"
+   "adcl %3, %0\n\t"
+   "adcl %4, %0\n\t"
+   "adcl $0, %0"
: "=" (sum)
: "r" (saddr), "r" (daddr), 
  "r"(htonl(len)), "r"(htonl(proto)), "0"(sum));
--- linux-2.4.3/include/asm-i386/floppy.h.orig  Fri Mar 30 23:24:25 2001
+++ linux-2.4.3/include/asm-i386/floppy.h   Fri Mar 30 23:32:36 2001
@@ -75,28 +75,28 @@
 
 #ifndef NO_FLOPPY_ASSEMBLER
__asm__ (
-   "testl %1,%1
-   je 3f
-1: inb %w4,%b0
-   andb $160,%b0
-   cmpb $160,%b0
-   jne 2f
-   incw %w4
-   testl %3,%3
-   jne 4f
-   inb %w4,%b0
-   movb %0,(%2)
-   jmp 5f
-4: movb (%2),%0
-   outb %b0,%w4
-5: decw %w4
-   outb %0,$0x80
-   decl %1
-   incl %2
-   testl 

[PATCH] multiline string cleanup

2001-03-30 Thread J . A . Magallon

Hi, kernel developers.

This is one other try to make kernel sources gcc-3.0 friendly. This cleans
some muti-line asm strings in checksum.h and floppy.h (this were the only
ones reported in my kernel build, perhaps there are more in drivers I do
not use).

I have not tested the changes with older binutils, as Alan suggested, but
the changes are made following other __asm__ pieces in the kernel. They
build with gcc-3.0-20010326 snapshot and binutils-2.10.1.0.2.

BTW, I have a doubt: as assembler is written in the rest of kernel (get,
for example, system.h):

static inline unsigned long _get_base(char * addr)
{
unsigned long __base;
__asm__("movb %3,%%dh\n\t"
"movb %2,%%dl\n\t"
"shll $16,%%edx\n\t"
"movw %1,%%dx"
:"=d" (__base)
:"m" (*((addr)+2)),
 "m" (*((addr)+4)),
 "m" (*((addr)+7)));
return __base;
}

the first asm line is not tabbed, the result is:

movb %3,%%dh
movb %2,%%dl
shll $16,%%edx
movw %1,%%dx

so is really format (tabs) so important ?


Patch inlined
=== patch-mls
--- linux-2.4.3/include/asm-i386/checksum.h.origFri Mar 30 23:13:22 2001
+++ linux-2.4.3/include/asm-i386/checksum.h Fri Mar 30 23:24:04 2001
@@ -69,25 +69,24 @@
  unsigned int ihl) {
unsigned int sum;
 
-   __asm__ __volatile__("
-   movl (%1), %0
-   subl $4, %2
-   jbe 2f
-   addl 4(%1), %0
-   adcl 8(%1), %0
-   adcl 12(%1), %0
-1: adcl 16(%1), %0
-   lea 4(%1), %1
-   decl %2
-   jne 1b
-   adcl $0, %0
-   movl %0, %2
-   shrl $16, %0
-   addw %w2, %w0
-   adcl $0, %0
-   notl %0
-2:
-   "
+   __asm__ __volatile__(
+   "movl (%1), %0\n\t"
+   "subl $4, %2\n\t"
+   "jbe 2f\n\t"
+   "addl 4(%1), %0\n\t"
+   "adcl 8(%1), %0\n\t"
+   "adcl 12(%1), %0\n"
+   "1:\tadcl 16(%1), %0\n\t"
+   "lea 4(%1), %1\n\t"
+   "decl %2\n\t"
+   "jne1b\n\t"
+   "adcl $0, %0\n\t"
+   "movl %0, %2\n\t"
+   "shrl $16, %0\n\t"
+   "addw %w2, %w0\n\t"
+   "adcl $0, %0\n\t"
+   "notl %0\n"
+   "2:"
/* Since the input registers which are loaded with iph and ipl
   are modified, we must also specify them as outputs, or gcc
   will assume they contain their original values. */
@@ -102,10 +101,9 @@
 
 static inline unsigned int csum_fold(unsigned int sum)
 {
-   __asm__("
-   addl %1, %0
-   adcl $0x, %0
-   "
+   __asm__(
+   "addl %1, %0\n\t"
+   "adcl $0x, %0"
: "=r" (sum)
: "r" (sum  16), "0" (sum  0x)
);
@@ -118,12 +116,11 @@
   unsigned short proto,
   unsigned int sum) 
 {
-__asm__("
-   addl %1, %0
-   adcl %2, %0
-   adcl %3, %0
-   adcl $0, %0
-   "
+__asm__(
+   "addl %1, %0\n\t"
+   "adcl %2, %0\n\t"
+   "adcl %3, %0\n\t"
+   "adcl $0, %0"
: "=r" (sum)
: "g" (daddr), "g"(saddr), "g"((ntohs(len)16)+proto*256), "0"(sum));
 return sum;
@@ -158,19 +155,18 @@
 unsigned short proto,
 unsigned int sum) 
 {
-   __asm__("
-   addl 0(%1), %0
-   adcl 4(%1), %0
-   adcl 8(%1), %0
-   adcl 12(%1), %0
-   adcl 0(%2), %0
-   adcl 4(%2), %0
-   adcl 8(%2), %0
-   adcl 12(%2), %0
-   adcl %3, %0
-   adcl %4, %0
-   adcl $0, %0
-   "
+   __asm__(
+   "addl 0(%1), %0\n\t"
+   "adcl 4(%1), %0\n\t"
+   "adcl 8(%1), %0\n\t"
+   "adcl 12(%1), %0\n\t"
+   "adcl 0(%2), %0\n\t"
+   "adcl 4(%2), %0\n\t"
+   "adcl 8(%2), %0\n\t"
+   "adcl 12(%2), %0\n\t"
+   "adcl %3, %0\n\t"
+   "adcl %4, %0\n\t"
+   "adcl $0, %0"
: "=r" (sum)
: "r" (saddr), "r" (daddr), 
  "r"(htonl(len)), "r"(htonl(proto)), "0"(sum));
--- linux-2.4.3/include/asm-i386/floppy.h.orig  Fri Mar 30 23:24:25 2001
+++ linux-2.4.3/include/asm-i386/floppy.h   Fri Mar 30 23:32:36 2001
@@ -75,28 +75,28 @@
 
 #ifndef NO_FLOPPY_ASSEMBLER
__asm__ (
-   "testl %1,%1
-   je 3f
-1: inb %w4,%b0
-   andb $160,%b0
-   cmpb $160,%b0
-   jne 2f
-   incw %w4
-   testl %3,%3
-   jne 4f
-   inb %w4,%b0
-   movb %0,(%2)
-   jmp 5f
-4: movb (%2),%0
-   outb %b0,%w4
-5: decw %w4
-   outb %0,$0x80
-   decl %1
-   incl %2
-   testl %1,%1