patch-2.1.128 linux/include/asm-m68k/ide.h

Next file: linux/include/asm-m68k/serial.h
Previous file: linux/include/asm-i386/shmparam.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.127/linux/include/asm-m68k/ide.h linux/include/asm-m68k/ide.h
@@ -146,34 +146,36 @@
 	if (_nr & 15) {					\
 		_tmp = (_nr & 15) - 1;			\
 		asm volatile (				\
-			"1: movew %2@,%3@+; dbra %4,1b"	\
+			"1: movew %2@,%0@+; dbra %1,1b"	\
+			: "=a" (_buf), "=d" (_tmp)	\
+			: "a" (_port), "0" (_buf),	\
+			  "1" (_tmp));			\
+	}						\
+	if (_nr >> 4) {					\
+		_tmp = (_nr >> 4) - 1;			\
+		asm volatile (				\
+			"1: "				\
+			"movew %2@,%0@+; "		\
+			"movew %2@,%0@+; "		\
+			"movew %2@,%0@+; "		\
+			"movew %2@,%0@+; "		\
+			"movew %2@,%0@+; "		\
+			"movew %2@,%0@+; "		\
+			"movew %2@,%0@+; "		\
+			"movew %2@,%0@+; "		\
+			"movew %2@,%0@+; "		\
+			"movew %2@,%0@+; "		\
+			"movew %2@,%0@+; "		\
+			"movew %2@,%0@+; "		\
+			"movew %2@,%0@+; "		\
+			"movew %2@,%0@+; "		\
+			"movew %2@,%0@+; "		\
+			"movew %2@,%0@+; "		\
+			"dbra %1,1b"			\
 			: "=a" (_buf), "=d" (_tmp)	\
 			: "a" (_port), "0" (_buf),	\
 			  "1" (_tmp));			\
 	}						\
-	_tmp = (_nr >> 4) - 1;				\
-	asm volatile (					\
-		"1: "					\
-		"movew %2@,%3@+; "			\
-		"movew %2@,%3@+; "			\
-		"movew %2@,%3@+; "			\
-		"movew %2@,%3@+; "			\
-		"movew %2@,%3@+; "			\
-		"movew %2@,%3@+; "			\
-		"movew %2@,%3@+; "			\
-		"movew %2@,%3@+; "			\
-		"movew %2@,%3@+; "			\
-		"movew %2@,%3@+; "			\
-		"movew %2@,%3@+; "			\
-		"movew %2@,%3@+; "			\
-		"movew %2@,%3@+; "			\
-		"movew %2@,%3@+; "			\
-		"movew %2@,%3@+; "			\
-		"movew %2@,%3@+; "			\
-		"dbra %4,1b"				\
-		: "=a" (_buf), "=d" (_tmp)		\
-		: "a" (_port), "0" (_buf),		\
-		  "1" (_tmp));				\
 })
 
 #define outsw(port, buf, nr) ({				\
@@ -185,34 +187,36 @@
 	if (_nr & 15) {					\
 		_tmp = (_nr & 15) - 1;			\
 		asm volatile (				\
-			"1: movew %3@,%2@+; dbra %4,1b"	\
+			"1: movew %0@+,%2@; dbra %1,1b"	\
+			: "=a" (_buf), "=d" (_tmp)	\
+			: "a" (_port), "0" (_buf),	\
+			  "1" (_tmp));			\
+	}						\
+	if (_nr >> 4) {					\
+		_tmp = (_nr >> 4) - 1;			\
+		asm volatile (				\
+			"1: "				\
+			"movew %0@+,%2@; "		\
+			"movew %0@+,%2@; "		\
+			"movew %0@+,%2@; "		\
+			"movew %0@+,%2@; "		\
+			"movew %0@+,%2@; "		\
+			"movew %0@+,%2@; "		\
+			"movew %0@+,%2@; "		\
+			"movew %0@+,%2@; "		\
+			"movew %0@+,%2@; "		\
+			"movew %0@+,%2@; "		\
+			"movew %0@+,%2@; "		\
+			"movew %0@+,%2@; "		\
+			"movew %0@+,%2@; "		\
+			"movew %0@+,%2@; "		\
+			"movew %0@+,%2@; "		\
+			"movew %0@+,%2@; "		\
+			"dbra %1,1b"	   		\
 			: "=a" (_buf), "=d" (_tmp)	\
 			: "a" (_port), "0" (_buf),	\
 			  "1" (_tmp));			\
 	}						\
-	_tmp = (_nr >> 4) - 1;				\
-	asm volatile (					\
-		"1: "					\
-		"movew %3@+,%2@; "			\
-		"movew %3@+,%2@; "			\
-		"movew %3@+,%2@; "			\
-		"movew %3@+,%2@; "			\
-		"movew %3@+,%2@; "			\
-		"movew %3@+,%2@; "			\
-		"movew %3@+,%2@; "			\
-		"movew %3@+,%2@; "			\
-		"movew %3@+,%2@; "			\
-		"movew %3@+,%2@; "			\
-		"movew %3@+,%2@; "			\
-		"movew %3@+,%2@; "			\
-		"movew %3@+,%2@; "			\
-		"movew %3@+,%2@; "			\
-		"movew %3@+,%2@; "			\
-		"movew %3@+,%2@; "			\
-		"dbra %4,1b"	   			\
-		: "=a" (_buf), "=d" (_tmp)		\
-		: "a" (_port), "0" (_buf),		\
-		  "1" (_tmp));				\
 })
 
 #ifdef CONFIG_ATARI

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov