Преглед на файлове

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