]> git.pld-linux.org Git - packages/kernel.git/commitdiff
- _proxy_pda fix for x86-64 ( x86-32 not finished/tested yet ).
authorPaweł Sikora <pluto@pld-linux.org>
Tue, 30 Jan 2007 23:14:19 +0000 (23:14 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    kernel-gcc4.patch -> 1.2

kernel-gcc4.patch [new file with mode: 0644]

diff --git a/kernel-gcc4.patch b/kernel-gcc4.patch
new file mode 100644 (file)
index 0000000..f041919
--- /dev/null
@@ -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__;                                                  \
+ })
This page took 0.062808 seconds and 4 git commands to generate.