SOURCES: kernel-gcc4.patch (NEW) - _proxy_pda fix for x86-64 ( x86...

pluto pluto at pld-linux.org
Wed Jan 31 00:14:24 CET 2007


Author: pluto                        Date: Tue Jan 30 23:14:24 2007 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- _proxy_pda fix for x86-64 ( x86-32 not finished/tested yet ).

---- Files affected:
SOURCES:
   kernel-gcc4.patch (1.1 -> 1.2)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/kernel-gcc4.patch
diff -u /dev/null SOURCES/kernel-gcc4.patch:1.2
--- /dev/null	Wed Jan 31 00:14:24 2007
+++ SOURCES/kernel-gcc4.patch	Wed Jan 31 00:14:19 2007
@@ -0,0 +1,77 @@
+--- a/include/asm-x86_64/pda.h	2006-11-29 22:57:37.000000000 +0100
++++ b/include/asm-x86_64/pda.h	2007-01-24 00:42:01.207003500 +0100
+@@ -55,22 +55,22 @@
+ 	if (0) { T__ tmp__; tmp__ = (val); }	/* type checking */ \
+ 	switch (sizeof(_proxy_pda.field)) {	\
+ 	case 2:					\
+-		asm(op "w %1,%%gs:%c2" : 	\
+-		    "+m" (_proxy_pda.field) :	\
++		asm volatile(op "w %0,%%gs:%c1" :: 	\
+ 		    "ri" ((T__)val),		\
+-		    "i"(pda_offset(field))); 	\
++		    "i"(pda_offset(field)) : 	\
++		    "memory");\
+  		break;				\
+ 	case 4:					\
+-		asm(op "l %1,%%gs:%c2" : 	\
+-		    "+m" (_proxy_pda.field) :	\
++		asm volatile(op "l %0,%%gs:%c1" :: 	\
+ 		    "ri" ((T__)val),		\
+-		    "i" (pda_offset(field))); 	\
++		    "i" (pda_offset(field)): 	\
++		    "memory");\
+ 		break;				\
+ 	case 8:					\
+-		asm(op "q %1,%%gs:%c2": 	\
+-		    "+m" (_proxy_pda.field) :	\
++		asm volatile(op "q %0,%%gs:%c1" :: 	\
+ 		    "ri" ((T__)val),		\
+-		    "i"(pda_offset(field))); 	\
++		    "i"(pda_offset(field)): 	\
++		    "memory");\
+ 		break;				\
+        default: 				\
+ 		__bad_pda_field();		\
+@@ -81,22 +81,22 @@
+ 	typeof(_proxy_pda.field) ret__;		\
+ 	switch (sizeof(_proxy_pda.field)) {	\
+        	case 2:					\
+-		asm(op "w %%gs:%c1,%0" : 	\
++		asm volatile(op "w %%gs:%c1,%0" : 	\
+ 		    "=r" (ret__) :		\
+-		    "i" (pda_offset(field)), 	\
+-		    "m" (_proxy_pda.field)); 	\
++		    "i" (pda_offset(field)) : 	\
++		    "memory");\
+ 		 break;				\
+ 	case 4:					\
+-		asm(op "l %%gs:%c1,%0":		\
++		asm volatile(op "l %%gs:%c1,%0":		\
+ 		    "=r" (ret__):		\
+-		    "i" (pda_offset(field)), 	\
+-		    "m" (_proxy_pda.field)); 	\
++		    "i" (pda_offset(field)) : 	\
++		    "memory");\
+ 		 break;				\
+        case 8:					\
+-		asm(op "q %%gs:%c1,%0":		\
++		asm volatile(op "q %%gs:%c1,%0":		\
+ 		    "=r" (ret__) :		\
+-		    "i" (pda_offset(field)), 	\
+-		    "m" (_proxy_pda.field)); 	\
++		    "i" (pda_offset(field)) : 	\
++		    "memory");\
+ 		 break;				\
+        default: 				\
+ 		__bad_pda_field();		\
+@@ -112,8 +112,8 @@
+ /* This is not atomic against other CPUs -- CPU preemption needs to be off */
+ #define test_and_clear_bit_pda(bit,field) ({		\
+ 	int old__;						\
+-	asm volatile("btr %2,%%gs:%c3\n\tsbbl %0,%0"		\
+-	    : "=r" (old__), "+m" (_proxy_pda.field) 		\
++	asm volatile("btr %1,%%gs:%c2\n\tsbbl %0,%0"		\
++	    : "=r" (old__) 		\
+ 	    : "dIr" (bit), "i" (pda_offset(field)) : "memory");	\
+ 	old__;							\
+ })
================================================================


More information about the pld-cvs-commit mailing list