Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
percpu, x86: Fix percpu_xchg_op()
x86: Remove left over system_64.h
x86-64: Don't use pointer to out-of-scope variable in dump_trace()

+13 -35
+12 -12
arch/x86/include/asm/percpu.h
··· 273 typeof(var) pxo_new__ = (nval); \ 274 switch (sizeof(var)) { \ 275 case 1: \ 276 - asm("\n1:mov "__percpu_arg(1)",%%al" \ 277 - "\n\tcmpxchgb %2, "__percpu_arg(1) \ 278 "\n\tjnz 1b" \ 279 - : "=a" (pxo_ret__), "+m" (var) \ 280 : "q" (pxo_new__) \ 281 : "memory"); \ 282 break; \ 283 case 2: \ 284 - asm("\n1:mov "__percpu_arg(1)",%%ax" \ 285 - "\n\tcmpxchgw %2, "__percpu_arg(1) \ 286 "\n\tjnz 1b" \ 287 - : "=a" (pxo_ret__), "+m" (var) \ 288 : "r" (pxo_new__) \ 289 : "memory"); \ 290 break; \ 291 case 4: \ 292 - asm("\n1:mov "__percpu_arg(1)",%%eax" \ 293 - "\n\tcmpxchgl %2, "__percpu_arg(1) \ 294 "\n\tjnz 1b" \ 295 - : "=a" (pxo_ret__), "+m" (var) \ 296 : "r" (pxo_new__) \ 297 : "memory"); \ 298 break; \ 299 case 8: \ 300 - asm("\n1:mov "__percpu_arg(1)",%%rax" \ 301 - "\n\tcmpxchgq %2, "__percpu_arg(1) \ 302 "\n\tjnz 1b" \ 303 - : "=a" (pxo_ret__), "+m" (var) \ 304 : "r" (pxo_new__) \ 305 : "memory"); \ 306 break; \
··· 273 typeof(var) pxo_new__ = (nval); \ 274 switch (sizeof(var)) { \ 275 case 1: \ 276 + asm("\n\tmov "__percpu_arg(1)",%%al" \ 277 + "\n1:\tcmpxchgb %2, "__percpu_arg(1) \ 278 "\n\tjnz 1b" \ 279 + : "=&a" (pxo_ret__), "+m" (var) \ 280 : "q" (pxo_new__) \ 281 : "memory"); \ 282 break; \ 283 case 2: \ 284 + asm("\n\tmov "__percpu_arg(1)",%%ax" \ 285 + "\n1:\tcmpxchgw %2, "__percpu_arg(1) \ 286 "\n\tjnz 1b" \ 287 + : "=&a" (pxo_ret__), "+m" (var) \ 288 : "r" (pxo_new__) \ 289 : "memory"); \ 290 break; \ 291 case 4: \ 292 + asm("\n\tmov "__percpu_arg(1)",%%eax" \ 293 + "\n1:\tcmpxchgl %2, "__percpu_arg(1) \ 294 "\n\tjnz 1b" \ 295 + : "=&a" (pxo_ret__), "+m" (var) \ 296 : "r" (pxo_new__) \ 297 : "memory"); \ 298 break; \ 299 case 8: \ 300 + asm("\n\tmov "__percpu_arg(1)",%%rax" \ 301 + "\n1:\tcmpxchgq %2, "__percpu_arg(1) \ 302 "\n\tjnz 1b" \ 303 + : "=&a" (pxo_ret__), "+m" (var) \ 304 : "r" (pxo_new__) \ 305 : "memory"); \ 306 break; \
-22
arch/x86/include/asm/system_64.h
··· 1 - #ifndef _ASM_X86_SYSTEM_64_H 2 - #define _ASM_X86_SYSTEM_64_H 3 - 4 - #include <asm/segment.h> 5 - #include <asm/cmpxchg.h> 6 - 7 - 8 - static inline unsigned long read_cr8(void) 9 - { 10 - unsigned long cr8; 11 - asm volatile("movq %%cr8,%0" : "=r" (cr8)); 12 - return cr8; 13 - } 14 - 15 - static inline void write_cr8(unsigned long val) 16 - { 17 - asm volatile("movq %0,%%cr8" :: "r" (val) : "memory"); 18 - } 19 - 20 - #include <linux/irqflags.h> 21 - 22 - #endif /* _ASM_X86_SYSTEM_64_H */
···
+1 -1
arch/x86/kernel/dumpstack_64.c
··· 149 unsigned used = 0; 150 struct thread_info *tinfo; 151 int graph = 0; 152 unsigned long bp; 153 154 if (!task) 155 task = current; 156 157 if (!stack) { 158 - unsigned long dummy; 159 stack = &dummy; 160 if (task && task != current) 161 stack = (unsigned long *)task->thread.sp;
··· 149 unsigned used = 0; 150 struct thread_info *tinfo; 151 int graph = 0; 152 + unsigned long dummy; 153 unsigned long bp; 154 155 if (!task) 156 task = current; 157 158 if (!stack) { 159 stack = &dummy; 160 if (task && task != current) 161 stack = (unsigned long *)task->thread.sp;