svn commit: r194111 - head/sys/i386/include

Ed Schouten ed at FreeBSD.org
Sat Jun 13 14:00:12 UTC 2009


Author: ed
Date: Sat Jun 13 14:00:10 2009
New Revision: 194111
URL: http://svn.freebsd.org/changeset/base/194111

Log:
  Clobber "cc" instead of using volatile; remove obsolete register keyword.
  
  Submitted by:	Christoph Mallon

Modified:
  head/sys/i386/include/in_cksum.h

Modified: head/sys/i386/include/in_cksum.h
==============================================================================
--- head/sys/i386/include/in_cksum.h	Sat Jun 13 13:56:06 2009	(r194110)
+++ head/sys/i386/include/in_cksum.h	Sat Jun 13 14:00:10 2009	(r194111)
@@ -57,9 +57,9 @@
 static __inline u_int
 in_cksum_hdr(const struct ip *ip)
 {
-	register u_int sum = 0;
+	u_int sum = 0;
 
-	__asm __volatile (
+	__asm(
 		"addl %1, %0\n"
 		"adcl %2, %0\n"
 		"adcl %3, %0\n"
@@ -72,6 +72,7 @@ in_cksum_hdr(const struct ip *ip)
 		  "g" (((const u_int32_t *)ip)[2]),
 		  "g" (((const u_int32_t *)ip)[3]),
 		  "g" (((const u_int32_t *)ip)[4])
+		: "cc"
 	);
 	sum = (sum & 0xffff) + (sum >> 16);
 	if (sum > 0xffff)
@@ -91,12 +92,12 @@ in_cksum_update(struct ip *ip)
 static __inline u_short
 in_addword(u_short sum, u_short b)
 {
-	/* __volatile is necessary because the condition codes are used. */
-	__asm __volatile (
+	__asm(
 		"addw %1, %0\n"
 		"adcw $0, %0"
 		: "+r" (sum)
-		: "r" (b)
+		: "g" (b)
+		: "cc"
 	);
 	return (sum);
 }
@@ -104,14 +105,14 @@ in_addword(u_short sum, u_short b)
 static __inline u_short
 in_pseudo(u_int sum, u_int b, u_int c)
 {
-	/* __volatile is necessary because the condition codes are used. */
-	__asm __volatile (
+	__asm(
 		"addl %1, %0\n"
 		"adcl %2, %0\n"
 		"adcl $0, %0"
 		: "+r" (sum)
 		: "g" (b),
 		  "g" (c)
+		: "cc"
 	);
 	sum = (sum & 0xffff) + (sum >> 16);
 	if (sum > 0xffff)


More information about the svn-src-head mailing list