فهرست منبع

From Jie Zhang:
__bswap_16 could not assume that it's zero extended when an unsigned short int is loaded into the data register.

Bernd Schmidt 18 سال پیش
والد
کامیت
b3ace38d1f
1فایلهای تغییر یافته به همراه4 افزوده شده و 3 حذف شده
  1. 4 3
      libc/sysdeps/linux/bfin/bits/byteswap.h

+ 4 - 3
libc/sysdeps/linux/bfin/bits/byteswap.h

@@ -25,9 +25,10 @@
 	 if (__builtin_constant_p (__x))				      \
 	   __v = __bswap_constant_16 (__x);				      \
 	 else								      \
-	   __asm__ ("%0 <<= 8;"						      \
-		    "%1.L = %0.L + %0.H (NS);"				      \
-		    : "+d" (__x), "=d" (__v));				      \
+	   __asm__ ("%0 = PACK (%1.L, %1.L);"				      \
+		    "%0 >>= 8;"						      \
+		    : "=d" (__v)					      \
+		    : "d" (__x));					      \
 	 __v; }))
 #else
 static __inline unsigned short int