[parisc-linux-cvs] linux grundler

Grant Grundler grundler@parisc-linux.org
Sun, 29 Jun 2003 23:17:55 -0600


On Sun, Jun 29, 2003 at 10:54:56PM -0600, Grant Grundler wrote:
> Log message:
> 2.4.21-pa1 enable arch 64bit swap and fix it.
> First whack at intermezzo - misaligned data access problems.
> 
> boots on a500. not tested on anything else.

Also:
o removed the user space "protection" in byteorder.h
o re-ordered declarations so it's obvious: 16/32/64 swap macros.

intermezzo FS needs the unsigned long alignment fixed in order
for cc1 to emit valid asm instructions. "ldd 52(%foo)" doesn't work.

grant

Index: Makefile
===================================================================
RCS file: /var/cvs/linux/Makefile,v
retrieving revision 1.398
diff -u -p -r1.398 Makefile
--- Makefile	26 Jun 2003 15:06:33 -0000	1.398
+++ Makefile	30 Jun 2003 04:49:25 -0000
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 21
-EXTRAVERSION = -pa0
+EXTRAVERSION = -pa1
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
Index: include/asm-parisc/byteorder.h
===================================================================
RCS file: /var/cvs/linux/include/asm-parisc/byteorder.h,v
retrieving revision 1.4
diff -u -p -r1.4 byteorder.h
--- include/asm-parisc/byteorder.h	7 Apr 2000 04:02:14 -0000	1.4
+++ include/asm-parisc/byteorder.h	30 Jun 2003 04:49:41 -0000
@@ -5,6 +5,15 @@
 
 #ifdef __GNUC__
 
+static __inline__ __const__ __u16 ___arch__swab16(__u16 x)
+{
+	__asm__("dep %0, 15, 8, %0\n\t"		/* deposit 00ab -> 0bab */
+		"shd %r0, %0, 8, %0"		/* shift 000000ab -> 00ba */
+		: "=r" (x)
+		: "0" (x));
+	return x;
+}
+
 static __inline__ __const__ __u32 ___arch__swab32(__u32 x)
 {
 	unsigned int temp;
@@ -30,9 +39,9 @@ static __inline__ __const__ __u32 ___arc
 */
 static __inline__ __const__ __u64 ___arch__swab64(__u64 x) {
 	__u64 temp;
-	__asm__("permh 3210, %0, %0\n\t"
+	__asm__("permh,3210 %0, %0\n\t"
 		"hshl %0, 8, %1\n\t"
-		"hshr u, %0, 8, %0\n\t"
+		"hshr,u %0, 8, %0\n\t"
 		"or %1, %0, %0"
 		: "=r" (x), "=&r" (temp)
 		: "0" (x));
@@ -50,23 +59,10 @@ static __inline__ __const__ __u64 ___arc
 }
 #endif
 
-
-static __inline__ __const__ __u16 ___arch__swab16(__u16 x)
-{
-	__asm__("dep %0, 15, 8, %0\n\t"		/* deposit 00ab -> 0bab */
-		"shd %r0, %0, 8, %0"		/* shift 000000ab -> 00ba */
-		: "=r" (x)
-		: "0" (x));
-	return x;
-}
-
-#define __arch__swab32(x) ___arch__swab32(x)
 #define __arch__swab16(x) ___arch__swab16(x)
-
-#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
-#  define __BYTEORDER_HAS_U64__
-#  define __SWAB_64_THRU_32__
-#endif
+#define __arch__swab32(x) ___arch__swab32(x)
+#define __arch__swab64(x) ___arch__swab64(x)
+#define __BYTEORDER_HAS_U64__
 
 #endif /* __GNUC__ */
 
Index: include/linux/intermezzo_lib.h
===================================================================
RCS file: /var/cvs/linux/include/linux/intermezzo_lib.h,v
retrieving revision 1.2
diff -u -p -r1.2 intermezzo_lib.h
--- include/linux/intermezzo_lib.h	13 Nov 2002 15:17:01 -0000	1.2
+++ include/linux/intermezzo_lib.h	30 Jun 2003 04:49:41 -0000
@@ -27,6 +27,7 @@
 
 #ifdef __KERNEL__
 # include <linux/types.h>
+# include <asm/byteorder.h>
 #else
 # include <string.h>
 # include <sys/types.h>