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__;                                                  \
+ })
================================================================
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to