Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 Oct 2002 13:16:25 -0700 (PDT)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 18493 for review
Message-ID:  <200210012016.g91KGPGr078700@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://people.freebsd.org/~peter/p4db/chv.cgi?CH=18493

Change 18493 by jhb@jhb_laptop on 2002/10/01 13:16:22

	More fixups for i386 asm constraints that just haven't been
	committed.  These ones bde@ objected to.

Affected files ...

.. //depot/projects/smpng/sys/i386/i386/math_emulate.c#6 edit
.. //depot/projects/smpng/sys/i386/include/bus_at386.h#5 edit
.. //depot/projects/smpng/sys/i386/include/bus_pc98.h#6 edit
.. //depot/projects/smpng/sys/i386/include/cpufunc.h#20 edit
.. //depot/projects/smpng/sys/i386/isa/bs/bsif.h#3 edit

Differences ...

==== //depot/projects/smpng/sys/i386/i386/math_emulate.c#6 (text+ko) ====

@@ -760,8 +760,7 @@
 	if ((ti.sign = (ti.b < 0)) != 0)
 		__asm__("notl %0 ; notl %1\n\t"
 			"addl $1,%0 ; adcl $0,%1"
-			:"=r" (ti.a),"=r" (ti.b)
-			:"0" (ti.a),"1" (ti.b));
+			:"+r" (ti.a),"+r" (ti.b));
 	int_to_real(&ti,tmp);
 }
 
@@ -771,14 +770,13 @@
 		"addl %0,%0 ; adcl %1,%1\n\t"				\
 		"addl %0,%0 ; adcl %1,%1\n\t"				\
 		"addl %%ecx,%0 ; adcl %%ebx,%1"				\
-		: "=a" (low), "=d" (high)				\
-		: "0" (low), "1" (high)					\
-		: "cx", "bx")
+		: "+a" (low), "+d" (high)				\
+		:: "ecx", "ebx")
 
 #define ADD64(val, low, high)						\
-	__asm__("addl %4,%0 ; adcl $0,%1"				\
-		:"=r" (low),"=r" (high)					\
-		:"0" (low),"1" (high),"r" ((u_int32_t) (val)))
+	__asm__("addl %2,%0 ; adcl $0,%1"				\
+		:"+r" (low),"+r" (high)					\
+		:"r" ((u_int32_t) (val)))
 
 static void
 get_BCD(temp_real * tmp, struct trapframe * info, unsigned short code)
@@ -885,16 +883,15 @@
 	if (ti.sign)
 		__asm__("notl %0 ; notl %1\n\t"
 			"addl $1,%0 ; adcl $0,%1"
-			:"=r" (ti.a),"=r" (ti.b)
-			:"0" (ti.a),"1" (ti.b));
+			:"+r" (ti.a),"+r" (ti.b));
 	put_fs_long(ti.a,(u_int32_t *) addr);
 	put_fs_long(ti.b,1 + (u_int32_t *) addr);
 }
 
 #define DIV10(low,high,rem)						\
-	__asm__("divl %6 ; xchgl %1,%2 ; divl %6"			\
-		:"=d" (rem),"=a" (low),"=r" (high)			\
-		:"0" (0),"1" (high),"2" (low),"c" (10))
+	__asm__("divl %4 ; xchgl %1,%2 ; divl %4"			\
+		:"+d" (rem),"+a" (low),"+r" (high)			\
+		:"c" (10))
 
 static void
 put_BCD(const temp_real * tmp,struct trapframe * info, unsigned short code)
@@ -934,11 +931,12 @@
 static void
 shift(int * c)
 {
-	__asm__("movl (%0),%%eax ; addl %%eax,(%0)\n\t"
-		"movl 4(%0),%%eax ; adcl %%eax,4(%0)\n\t"
-		"movl 8(%0),%%eax ; adcl %%eax,8(%0)\n\t"
-		"movl 12(%0),%%eax ; adcl %%eax,12(%0)"
-		::"r" (c):"ax");
+	__asm__("movl %0,%%eax ; addl %%eax,%0\n\t"
+		"movl %1,%%eax ; adcl %%eax,%1\n\t"
+		"movl %2,%%eax ; adcl %%eax,%2\n\t"
+		"movl %3,%%eax ; adcl %%eax,%3"
+		::"m" (c[0]), "m" (c[1]), "m" (c[2]), "m" (c[3])
+		:"eax");
 }
 
 static void
@@ -963,7 +961,7 @@
 		"adcl %%edx,8(%2)\n\t"
 		"adcl $0,12(%2)"
 		::"S" (a),"c" (b),"D" (c)
-		:"ax","dx");
+		:"eax","edx","memory");
 }
 
 static void
@@ -1009,18 +1007,19 @@
 static void 
 shift_left(int * c)
 {
-	__asm__ __volatile__("movl (%0),%%eax ; addl %%eax,(%0)\n\t"
-		"movl 4(%0),%%eax ; adcl %%eax,4(%0)\n\t"
-		"movl 8(%0),%%eax ; adcl %%eax,8(%0)\n\t"
-		"movl 12(%0),%%eax ; adcl %%eax,12(%0)"
-		::"r" (c):"ax");
+	__asm__ __volatile__("movl %0,%%eax ; addl %%eax,%0\n\t"
+		"movl %1,%%eax ; adcl %%eax,%1\n\t"
+		"movl %2,%%eax ; adcl %%eax,%2\n\t"
+		"movl %3,%%eax ; adcl %%eax,%3"
+		::"m" (c[0]), "m" (c[1]), "m" (c[2]), "m" (c[3])
+		:"eax");
 }
 
 static void
 shift_right(int * c)
 {
-	__asm__("shrl $1,12(%0) ; rcrl $1,8(%0) ; rcrl $1,4(%0) ; rcrl $1,(%0)"
-		::"r" (c));
+	__asm__("shrl $1,%3 ; rcrl $1,%2 ; rcrl $1,%1 ; rcrl $1,%0"
+		::"m" (c[0]), "m" (c[1]), "m" (c[2]), "m" (c[3]));
 }
 
 static int
@@ -1032,7 +1031,7 @@
 		"movl 4(%1),%%eax ; sbbl %%eax,4(%2)\n\t"
 		"movl 8(%1),%%eax ; sbbl %%eax,8(%2)\n\t"
 		"movl 12(%1),%%eax ; sbbl %%eax,12(%2)\n\t"
-		"setae %%al":"=a" (ok):"c" (a),"d" (b));
+		"setae %%al":"=a" (ok):"c" (a),"d" (b): "memory");
 	return ok;
 }
 
@@ -1130,15 +1129,13 @@
 
 #define NEGINT(a)							\
 	__asm__("notl %0 ; notl %1 ; addl $1,%0 ; adcl $0,%1"		\
-		: "=r" (a->a), "=r" (a->b)				\
-		: "0" (a->a), "1" (a->b))
+		: "+r" (a->a), "+r" (a->b))
 
 static void signify(temp_real * a)
 {
 	a->exponent += 2;
 	__asm__("shrdl $2,%1,%0 ; shrl $2,%1"
-		:"=r" (a->a),"=r" (a->b)
-		:"0" (a->a),"1" (a->b));
+		:"+r" (a->a),"+r" (a->b));
 	if (a->exponent < 0)
 		NEGINT(a);
 	a->exponent &= 0x7fff;
@@ -1158,8 +1155,7 @@
 	while (a->b >= 0) {
 		a->exponent--;
 		__asm__("addl %0,%0 ; adcl %1,%1"
-			:"=r" (a->a),"=r" (a->b)
-			:"0" (a->a),"1" (a->b));
+			:"+r" (a->a),"+r" (a->b));
 	}
 }
 
@@ -1189,14 +1185,14 @@
 		b.b = 0;
 		shift -= 32;
 	}
-	__asm__("shrdl %4,%1,%0 ; shrl %4,%1"
-		:"=r" (b.a),"=r" (b.b)
-		:"0" (b.a),"1" (b.b),"c" ((char) shift));
+	__asm__("shrdl %2,%1,%0 ; shrl %2,%1"
+		:"+r" (b.a),"+r" (b.b)
+		:"c" ((char) shift));
 	signify(&a);
 	signify(&b);
-	__asm__("addl %4,%0 ; adcl %5,%1"
-		:"=r" (a.a),"=r" (a.b)
-		:"0" (a.a),"1" (a.b),"g" (b.a),"g" (b.b));
+	__asm__("addl %2,%0 ; adcl %3,%1"
+		:"+r" (a.a),"+r" (a.b)
+		:"g" (b.a),"g" (b.b));
 	unsignify(&a);
 	*result = a;
 }
@@ -1227,8 +1223,7 @@
 	while (i && a->b >= 0) {
 		i--;
 		__asm__("addl %0,%0 ; adcl %1,%1"
-			:"=r" (a->a),"=r" (a->b)
-			:"0" (a->a),"1" (a->b));
+			:"+r" (a->a),"+r" (a->b));
 	}
 	a->exponent = i | sign;
 }
@@ -1366,20 +1361,17 @@
 		case ROUND_NEAREST:
 			if ((a->a & 0x7ff) > 0x400)
 				__asm__("addl $1,%0 ; adcl $0,%1"
-					:"=r" (b->a),"=r" (b->b)
-					:"0" (b->a),"1" (b->b));
+					:"+r" (b->a),"+r" (b->b));
 			break;
 		case ROUND_DOWN:
 			if ((a->exponent & 0x8000) && (a->b & 0xff))
 				__asm__("addl $1,%0 ; adcl $0,%1"
-					:"=r" (b->a),"=r" (b->b)
-					:"0" (b->a),"1" (b->b));
+					:"+r" (b->a),"+r" (b->b));
 			break;
 		case ROUND_UP:
 			if (!(a->exponent & 0x8000) && (a->b & 0xff))
 				__asm__("addl $1,%0 ; adcl $0,%1"
-					:"=r" (b->a),"=r" (b->b)
-					:"0" (b->a),"1" (b->b));
+					:"+r" (b->a),"+r" (b->b));
 			break;
 	}
 }
@@ -1412,41 +1404,37 @@
 	}
 	b->exponent += shift;
 	__asm__("shrdl %2,%1,%0"
-		:"=r" (underflow),"=r" (b->a)
-		:"c" ((char) shift),"0" (underflow),"1" (b->a));
+		:"+r" (underflow),"+r" (b->a)
+		:"c" ((char) shift));
 	__asm__("shrdl %2,%1,%0"
-		:"=r" (b->a),"=r" (b->b)
-		:"c" ((char) shift),"0" (b->a),"1" (b->b));
+		:"+r" (b->a),"+r" (b->b)
+		:"c" ((char) shift));
 	__asm__("shrl %1,%0"
-		:"=r" (b->b)
-		:"c" ((char) shift),"0" (b->b));
+		:"+r" (b->b)
+		:"c" ((char) shift));
 	switch ((int)ROUNDING) {
 		case ROUND_NEAREST:
-			__asm__("addl %4,%5 ; adcl $0,%0 ; adcl $0,%1"
-				:"=r" (b->a),"=r" (b->b)
-				:"0" (b->a),"1" (b->b)
-				,"r" (0x7fffffff + (b->a & 1))
+			__asm__("addl %2,%3 ; adcl $0,%0 ; adcl $0,%1"
+				:"+r" (b->a),"+r" (b->b)
+				:"r" (0x7fffffff + (b->a & 1))
 				,"m" (*&underflow));
 			break;
 		case ROUND_UP:
 			if ((b->exponent >= 0) && underflow)
 				__asm__("addl $1,%0 ; adcl $0,%1"
-					:"=r" (b->a),"=r" (b->b)
-					:"0" (b->a),"1" (b->b));
+					:"+r" (b->a),"+r" (b->b));
 			break;
 		case ROUND_DOWN:
 			if ((b->exponent < 0) && underflow)
 				__asm__("addl $1,%0 ; adcl $0,%1"
-					:"=r" (b->a),"=r" (b->b)
-					:"0" (b->a),"1" (b->b));
+					:"+r" (b->a),"+r" (b->b));
 			break;
 	}
 	if (b->a || b->b)
 		while (b->b >= 0) {
 			b->exponent--;
 			__asm__("addl %0,%0 ; adcl %1,%1"
-				:"=r" (b->a),"=r" (b->b)
-				:"0" (b->a),"1" (b->b));
+				:"+r" (b->a),"+r" (b->b));
 		}
 	else
 		b->exponent = 0;
@@ -1494,33 +1482,30 @@
 		shift = 0;
 	}
 	__asm__("shrdl %2,%1,%0"
-		:"=r" (underflow),"=r" (b->a)
-		:"c" ((char) shift),"0" (underflow),"1" (b->a));
+		:"+r" (underflow),"+r" (b->a)
+		:"c" ((char) shift));
 	__asm__("shrdl %2,%1,%0"
-		:"=r" (b->a),"=r" (b->b)
-		:"c" ((char) shift),"0" (b->a),"1" (b->b));
+		:"+r" (b->a),"+r" (b->b)
+		:"c" ((char) shift));
 	__asm__("shrl %1,%0"
-		:"=r" (b->b)
-		:"c" ((char) shift),"0" (b->b));
+		:"+r" (b->b)
+		:"c" ((char) shift));
 	switch ((int)ROUNDING) {
 		case ROUND_NEAREST:
-			__asm__("addl %4,%5 ; adcl $0,%0 ; adcl $0,%1"
-				:"=r" (b->a),"=r" (b->b)
-				:"0" (b->a),"1" (b->b)
-				,"r" (0x7fffffff + (b->a & 1))
+			__asm__("addl %2,%3 ; adcl $0,%0 ; adcl $0,%1"
+				:"+r" (b->a),"+r" (b->b)
+				:"r" (0x7fffffff + (b->a & 1))
 				,"m" (*&underflow));
 			break;
 		case ROUND_UP:
 			if (!b->sign && underflow)
 				__asm__("addl $1,%0 ; adcl $0,%1"
-					:"=r" (b->a),"=r" (b->b)
-					:"0" (b->a),"1" (b->b));
+					:"+r" (b->a),"+r" (b->b));
 			break;
 		case ROUND_DOWN:
 			if (b->sign && underflow)
 				__asm__("addl $1,%0 ; adcl $0,%1"
-					:"=r" (b->a),"=r" (b->b)
-					:"0" (b->a),"1" (b->b));
+					:"+r" (b->a),"+r" (b->b));
 			break;
 	}
 }
@@ -1539,8 +1524,7 @@
 	while (b->b >= 0) {
 		b->exponent--;
 		__asm__("addl %0,%0 ; adcl %1,%1"
-			:"=r" (b->a),"=r" (b->b)
-			:"0" (b->a),"1" (b->b));
+			:"+r" (b->a),"+r" (b->b));
 	}
 }
 

==== //depot/projects/smpng/sys/i386/include/bus_at386.h#5 (text+ko) ====

@@ -282,8 +282,8 @@
 		1:	movb (%2),%%al				\n\
 			stosb					\n\
 			loop 1b"				:
-		    "=D" (addr), "=c" (count)			:
-		    "r" (bsh + offset), "0" (addr), "1" (count)	:
+		    "+D" (addr), "+c" (count)			:
+		    "r" (bsh + offset)				:
 		    "%eax", "memory");
 #endif
 	}
@@ -311,8 +311,8 @@
 		1:	movw (%2),%%ax				\n\
 			stosw					\n\
 			loop 1b"				:
-		    "=D" (addr), "=c" (count)			:
-		    "r" (bsh + offset), "0" (addr), "1" (count)	:
+		    "+D" (addr), "+c" (count)			:
+		    "r" (bsh + offset)				:
 		    "%eax", "memory");
 #endif
 	}
@@ -340,8 +340,8 @@
 		1:	movl (%2),%%eax				\n\
 			stosl					\n\
 			loop 1b"				:
-		    "=D" (addr), "=c" (count)			:
-		    "r" (bsh + offset), "0" (addr), "1" (count)	:
+		    "+D" (addr), "+c" (count)			:
+		    "r" (bsh + offset)				:
 		    "%eax", "memory");
 #endif
 	}
@@ -390,9 +390,8 @@
 			stosb					\n\
 			incl %2					\n\
 			loop 1b"				:
-		    "=D" (addr), "=c" (count), "=d" (_port_)	:
-		    "0" (addr), "1" (count), "2" (_port_)	:
-		    "%eax", "memory", "cc");
+		    "+D" (addr), "+c" (count), "+d" (_port_)	: :
+		    "%eax", "memory");
 #endif
 	}
 #endif
@@ -407,9 +406,8 @@
 			cld					\n\
 			repne					\n\
 			movsb"					:
-		    "=D" (addr), "=c" (count), "=S" (_port_)	:
-		    "0" (addr), "1" (count), "2" (_port_)	:
-		    "memory", "cc");
+		    "+D" (addr), "+c" (count), "+S" (_port_)	: :
+		    "memory");
 #endif
 	}
 #endif
@@ -432,9 +430,8 @@
 			stosw					\n\
 			addl $2,%2				\n\
 			loop 1b"				:
-		    "=D" (addr), "=c" (count), "=d" (_port_)	:
-		    "0" (addr), "1" (count), "2" (_port_)	:
-		    "%eax", "memory", "cc");
+		    "+D" (addr), "+c" (count), "+d" (_port_)	: :
+		    "%eax", "memory");
 #endif
 	}
 #endif
@@ -449,9 +446,8 @@
 			cld					\n\
 			repne					\n\
 			movsw"					:
-		    "=D" (addr), "=c" (count), "=S" (_port_)	:
-		    "0" (addr), "1" (count), "2" (_port_)	:
-		    "memory", "cc");
+		    "+D" (addr), "+c" (count), "+S" (_port_)	: :
+		    "memory");
 #endif
 	}
 #endif
@@ -474,9 +470,8 @@
 			stosl					\n\
 			addl $4,%2				\n\
 			loop 1b"				:
-		    "=D" (addr), "=c" (count), "=d" (_port_)	:
-		    "0" (addr), "1" (count), "2" (_port_)	:
-		    "%eax", "memory", "cc");
+		    "+D" (addr), "+c" (count), "+d" (_port_)	: :
+		    "%eax", "memory");
 #endif
 	}
 #endif
@@ -491,9 +486,8 @@
 			cld					\n\
 			repne					\n\
 			movsl"					:
-		    "=D" (addr), "=c" (count), "=S" (_port_)	:
-		    "0" (addr), "1" (count), "2" (_port_)	:
-		    "memory", "cc");
+		    "+D" (addr), "+c" (count), "+S" (_port_)	: :
+		    "memory");
 #endif
 	}
 #endif
@@ -621,9 +615,9 @@
 		1:	lodsb					\n\
 			movb %%al,(%2)				\n\
 			loop 1b"				:
-		    "=S" (addr), "=c" (count)			:
-		    "r" (bsh + offset), "0" (addr), "1" (count)	:
-		    "%eax", "memory", "cc");
+		    "+S" (addr), "+c" (count)			:
+		    "r" (bsh + offset)				:
+		    "%eax", "memory");
 #endif
 	}
 #endif
@@ -650,9 +644,9 @@
 		1:	lodsw					\n\
 			movw %%ax,(%2)				\n\
 			loop 1b"				:
-		    "=S" (addr), "=c" (count)			:
-		    "r" (bsh + offset), "0" (addr), "1" (count)	:
-		    "%eax", "memory", "cc");
+		    "+S" (addr), "+c" (count)			:
+		    "r" (bsh + offset)				:
+		    "%eax", "memory");
 #endif
 	}
 #endif
@@ -679,9 +673,9 @@
 		1:	lodsl					\n\
 			movl %%eax,(%2)				\n\
 			loop 1b"				:
-		    "=S" (addr), "=c" (count)			:
-		    "r" (bsh + offset), "0" (addr), "1" (count)	:
-		    "%eax", "memory", "cc");
+		    "+S" (addr), "+c" (count)			:
+		    "r" (bsh + offset)				:
+		    "%eax", "memory");
 #endif
 	}
 #endif
@@ -730,9 +724,8 @@
 			outb %%al,%w0				\n\
 			incl %0					\n\
 			loop 1b"				:
-		    "=d" (_port_), "=S" (addr), "=c" (count)	:
-		    "0" (_port_), "1" (addr), "2" (count)	:
-		    "%eax", "memory", "cc");
+		    "+d" (_port_), "+S" (addr), "+c" (count)	: :
+		    "%eax", "memory");
 #endif
 	}
 #endif
@@ -747,9 +740,8 @@
 			cld					\n\
 			repne					\n\
 			movsb"					:
-		    "=D" (_port_), "=S" (addr), "=c" (count)	:
-		    "0" (_port_), "1" (addr), "2" (count)	:
-		    "memory", "cc");
+		    "+D" (_port_), "+S" (addr), "+c" (count)	: :
+		    "memory");
 #endif
 	}
 #endif
@@ -772,9 +764,8 @@
 			outw %%ax,%w0				\n\
 			addl $2,%0				\n\
 			loop 1b"				:
-		    "=d" (_port_), "=S" (addr), "=c" (count)	:
-		    "0" (_port_), "1" (addr), "2" (count)	:
-		    "%eax", "memory", "cc");
+		    "+d" (_port_), "+S" (addr), "+c" (count)	: :
+		    "%eax", "memory");
 #endif
 	}
 #endif
@@ -789,9 +780,8 @@
 			cld					\n\
 			repne					\n\
 			movsw"					:
-		    "=D" (_port_), "=S" (addr), "=c" (count)	:
-		    "0" (_port_), "1" (addr), "2" (count)	:
-		    "memory", "cc");
+		    "+D" (_port_), "+S" (addr), "+c" (count)	: :
+		    "memory");
 #endif
 	}
 #endif
@@ -814,9 +804,8 @@
 			outl %%eax,%w0				\n\
 			addl $4,%0				\n\
 			loop 1b"				:
-		    "=d" (_port_), "=S" (addr), "=c" (count)	:
-		    "0" (_port_), "1" (addr), "2" (count)	:
-		    "%eax", "memory", "cc");
+		    "+d" (_port_), "+S" (addr), "+c" (count)	: :
+		    "%eax", "memory");
 #endif
 	}
 #endif
@@ -831,9 +820,8 @@
 			cld					\n\
 			repne					\n\
 			movsl"					:
-		    "=D" (_port_), "=S" (addr), "=c" (count)	:
-		    "0" (_port_), "1" (addr), "2" (count)	:
-		    "memory", "cc");
+		    "+D" (_port_), "+S" (addr), "+c" (count)	: :
+		    "memory");
 #endif
 	}
 #endif

==== //depot/projects/smpng/sys/i386/include/bus_pc98.h#6 (text+ko) ====

@@ -256,11 +256,10 @@
 								\
 	__asm __volatile("call *%2"  				\
 			:"=a" (result),				\
-			 "=d" (offset)				\
+			 "+d" (offset)				\
 			:"o" (bsh->bsh_bam.bs_read_##BWN),	\
-			 "b" (bsh),				\
-			 "1" (offset)				\
-			);					\
+			 "b" (bsh)				\
+			:"ecx","memory");			\
 								\
 	return result;						\
 }
@@ -282,12 +281,11 @@
 {								\
 								\
 	__asm __volatile("call *%1"				\
-			:"=d" (offset)				\
+			:"+d" (offset)				\
 			:"o" (bsh->bsh_bam.bs_write_##BWN),	\
 			 "a" (val),				\
-			 "b" (bsh),				\
-			 "0" (offset)				\
-			);					\
+			 "b" (bsh)				\
+			:"ecx","memory");			\
 }								
 
 _BUS_SPACE_WRITE(u_int8_t,1)
@@ -308,15 +306,12 @@
 {									\
 									\
 	__asm __volatile("call *%3"					\
-			:"=c" (cnt),					\
-			 "=d" (offset),					\
-			 "=D" (buf)					\
+			:"+c" (cnt),					\
+			 "+d" (offset),					\
+			 "+D" (buf)					\
 			:"o" (bsh->bsh_bam.bs_read_multi_##BWN),	\
-			 "b" (bsh),					\
-			 "0" (cnt),					\
-			 "1" (offset),					\
-			 "2" (buf)					\
-			:"memory");					\
+			 "b" (bsh)					\
+			:"eax","memory");				\
 }
 
 _BUS_SPACE_READ_MULTI(u_int8_t,1)
@@ -337,15 +332,12 @@
 {									\
 									\
 	__asm __volatile("call *%3"					\
-			:"=c" (cnt),					\
-			 "=d" (offset),					\
-			 "=S" (buf)					\
+			:"+c" (cnt),					\
+			 "+d" (offset),					\
+			 "+S" (buf)					\
 			:"o" (bsh->bsh_bam.bs_write_multi_##BWN),	\
-			 "b" (bsh),					\
-			 "0" (cnt),					\
-			 "1" (offset),					\
-			 "2" (buf)					\
-			);						\
+			 "b" (bsh)					\
+			:"eax","memory");				\
 }
 
 _BUS_SPACE_WRITE_MULTI(u_int8_t,1)
@@ -361,20 +353,17 @@
 	bus_space_tag_t tag;						\
 	bus_space_handle_t bsh;						\
 	bus_size_t offset;						\
-	TYPE *buf;						\
+	TYPE *buf;							\
 	size_t cnt;							\
 {									\
 									\
 	__asm __volatile("call *%3"					\
-			:"=c" (cnt),					\
-			 "=d" (offset),					\
-			 "=D" (buf)					\
+			:"+c" (cnt),					\
+			 "+d" (offset),					\
+			 "+D" (buf)					\
 			:"o" (bsh->bsh_bam.bs_read_region_##BWN),	\
-			 "b" (bsh),					\
-			 "0" (cnt),					\
-			 "1" (offset),					\
-			 "2" (buf)					\
-			:"memory");					\
+			 "b" (bsh)					\
+			:"eax","memory");				\
 }
 
 _BUS_SPACE_READ_REGION(u_int8_t,1)
@@ -395,15 +384,12 @@
 {									\
 									\
 	__asm __volatile("call *%3"					\
-			:"=c" (cnt),					\
-			 "=d" (offset),					\
-			 "=S" (buf)					\
+			:"+c" (cnt),					\
+			 "+d" (offset),					\
+			 "+S" (buf)					\
 			:"o" (bsh->bsh_bam.bs_write_region_##BWN),	\
-			 "b" (bsh),					\
-			 "0" (cnt),					\
-			 "1" (offset),					\
-			 "2" (buf)					\
-			);						\
+			 "b" (bsh)					\
+			:"eax","memory");				\
 }
 
 _BUS_SPACE_WRITE_REGION(u_int8_t,1)
@@ -424,14 +410,12 @@
 {									\
 									\
 	__asm __volatile("call *%2"					\
-			:"=c" (cnt),					\
-			 "=d" (offset)					\
+			:"+c" (cnt),					\
+			 "+d" (offset)					\
 			:"o" (bsh->bsh_bam.bs_set_multi_##BWN),		\
 			 "a" (val),					\
-			 "b" (bsh),					\
-			 "0" (cnt),					\
-			 "1" (offset)					\
-			);						\
+			 "b" (bsh)					\
+			:"memory");					\
 }
 
 _BUS_SPACE_SET_MULTI(u_int8_t,1)
@@ -452,14 +436,12 @@
 {									\
 									\
 	__asm __volatile("call *%2"					\
-			:"=c" (cnt),					\
-			 "=d" (offset)					\
+			:"+c" (cnt),					\
+			 "+d" (offset)					\
 			:"o" (bsh->bsh_bam.bs_set_region_##BWN),	\
 			 "a" (val),					\
-			 "b" (bsh),					\
-			 "0" (cnt),					\
-			 "1" (offset)					\
-			);						\
+			 "b" (bsh)					\
+			:"memory");					\
 }
 
 _BUS_SPACE_SET_REGION(u_int8_t,1)
@@ -484,16 +466,13 @@
 		panic("bus_space_copy_region: funcs mismatch (ENOSUPPORT)");\
 									\
 	__asm __volatile("call *%3"					\
-			:"=c" (cnt),					\
-			 "=S" (src),					\
-			 "=D" (dst)					\
+			:"+c" (cnt),					\
+			 "+S" (src),					\
+			 "+D" (dst)					\
 			:"o" (dbsh->bsh_bam.bs_copy_region_##BWN),	\
 			 "a" (sbsh),					\
-			 "b" (dbsh),					\
-			 "0" (cnt),					\
-			 "1" (src),					\
-			 "2" (dst)					\
-			);						\
+			 "b" (dbsh)					\
+			:"edx","memory");				\
 }
 
 _BUS_SPACE_COPY_REGION(1)

==== //depot/projects/smpng/sys/i386/include/cpufunc.h#20 (text+ko) ====

@@ -91,9 +91,12 @@
 static __inline void
 do_cpuid(u_int ax, u_int *p)
 {
-	__asm __volatile("cpuid"
-			 : "=a" (p[0]), "=b" (p[1]), "=c" (p[2]), "=d" (p[3])
-			 :  "0" (ax));
+
+	p[0] = ax;
+	__asm __volatile(
+	"cpuid"
+	: "+a" (p[0]), "=b" (p[1]), "=c" (p[2]), "=d" (p[3])
+	);
 }
 
 static __inline void

==== //depot/projects/smpng/sys/i386/isa/bs/bsif.h#3 (text+ko) ====

@@ -221,8 +221,7 @@
 		cld				\n\
 		rep				\n\
 		movsl"				:
-	    "=D" (to), "=c" (len), "=S" (from)	:
-	    "0" (to), "1" (len), "2" (from)	:
-	    "memory", "cc");
+	    "+D" (to), "+c" (len), "+S" (from)	: :
+	    "memory");
 }
 #endif	/* __FreeBSD__ */

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe p4-projects" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200210012016.g91KGPGr078700>