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

Re: linux-kernel-headers 2.6.18-1



On 2006-10-03 18:00 +0100, Wookey wrote:
> On 06-10-03 18:02 +0200, Hector Oron wrote:
> >    Hello,
> > 
> >    Is it possible to build linux-kernel-headers - 2.6.18-1 - for ARM arch ?
> 
> According to
> http://buildd.debian.org/~jeroen/status/package.php?p=linux-kernel-headers&a=arm
> they failed due to a syntax error:
> /build/buildd/linux-kernel-headers-2.6.18/testsuite/../debian/linux-kernel-headers/usr/include/asm/byteorder.h:21:
> error: expected '=', ',', ';', 'asm' or '__attribute__' before '__u32'
> 
> Anyone had a look at that yet?

OK, I had a look. bug #391305.

This patch fixes it:
--- include/asm-arm/byteorder.h.orig	2006-10-05 22:44:38.679856441 +0100
+++ include/asm-arm/byteorder.h	2006-10-05 22:45:16.206748589 +0100
@@ -18,7 +18,7 @@
 #include <linux/compiler.h>
 #include <asm/types.h>
 
-static inline __attribute_const__ __u32 ___arch__swab32(__u32 x)
+static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x)
 {
 	__u32 t;
 
@@ -29,7 +29,7 @@
 		 * right thing and not screw it up to different degrees
 		 * depending on the gcc version.
 		 */
-		asm ("eor\t%0, %1, %1, ror #16" : "=r" (t) : "r" (x));
+		__asm__ ("eor\t%0, %1, %1, ror #16" : "=r" (t) : "r" (x));
 	} else
 #endif
 		t = x ^ ((x << 16) | (x >> 16)); /* eor r1,r0,r0,ror #16 */

I don't really understand the distinction here, but all the other
arches except sh64 define this function with __inline__ (and __asm__) so I assume
that's correct (especially as it builds).

It may well be that sh64 is broken without a similar patch too, I
don't know.

This may not be an optimium fix - I welcome feedback from people who
actually understand the ins and outs of it.

zumbi - you should be able to build arm cross-toolchains once this
filters through. 

Wookey
-- 
Aleph One Ltd, Bottisham, CAMBRIDGE, CB5 9BA, UK  Tel +44 (0) 1223 811679
work: http://www.aleph1.co.uk/                 play: http://wookware.org/



Reply to: