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()
This commit is contained in:
commit
f7b548fa3d
|
@ -273,34 +273,34 @@ do { \
|
||||||
typeof(var) pxo_new__ = (nval); \
|
typeof(var) pxo_new__ = (nval); \
|
||||||
switch (sizeof(var)) { \
|
switch (sizeof(var)) { \
|
||||||
case 1: \
|
case 1: \
|
||||||
asm("\n1:mov "__percpu_arg(1)",%%al" \
|
asm("\n\tmov "__percpu_arg(1)",%%al" \
|
||||||
"\n\tcmpxchgb %2, "__percpu_arg(1) \
|
"\n1:\tcmpxchgb %2, "__percpu_arg(1) \
|
||||||
"\n\tjnz 1b" \
|
"\n\tjnz 1b" \
|
||||||
: "=a" (pxo_ret__), "+m" (var) \
|
: "=&a" (pxo_ret__), "+m" (var) \
|
||||||
: "q" (pxo_new__) \
|
: "q" (pxo_new__) \
|
||||||
: "memory"); \
|
: "memory"); \
|
||||||
break; \
|
break; \
|
||||||
case 2: \
|
case 2: \
|
||||||
asm("\n1:mov "__percpu_arg(1)",%%ax" \
|
asm("\n\tmov "__percpu_arg(1)",%%ax" \
|
||||||
"\n\tcmpxchgw %2, "__percpu_arg(1) \
|
"\n1:\tcmpxchgw %2, "__percpu_arg(1) \
|
||||||
"\n\tjnz 1b" \
|
"\n\tjnz 1b" \
|
||||||
: "=a" (pxo_ret__), "+m" (var) \
|
: "=&a" (pxo_ret__), "+m" (var) \
|
||||||
: "r" (pxo_new__) \
|
: "r" (pxo_new__) \
|
||||||
: "memory"); \
|
: "memory"); \
|
||||||
break; \
|
break; \
|
||||||
case 4: \
|
case 4: \
|
||||||
asm("\n1:mov "__percpu_arg(1)",%%eax" \
|
asm("\n\tmov "__percpu_arg(1)",%%eax" \
|
||||||
"\n\tcmpxchgl %2, "__percpu_arg(1) \
|
"\n1:\tcmpxchgl %2, "__percpu_arg(1) \
|
||||||
"\n\tjnz 1b" \
|
"\n\tjnz 1b" \
|
||||||
: "=a" (pxo_ret__), "+m" (var) \
|
: "=&a" (pxo_ret__), "+m" (var) \
|
||||||
: "r" (pxo_new__) \
|
: "r" (pxo_new__) \
|
||||||
: "memory"); \
|
: "memory"); \
|
||||||
break; \
|
break; \
|
||||||
case 8: \
|
case 8: \
|
||||||
asm("\n1:mov "__percpu_arg(1)",%%rax" \
|
asm("\n\tmov "__percpu_arg(1)",%%rax" \
|
||||||
"\n\tcmpxchgq %2, "__percpu_arg(1) \
|
"\n1:\tcmpxchgq %2, "__percpu_arg(1) \
|
||||||
"\n\tjnz 1b" \
|
"\n\tjnz 1b" \
|
||||||
: "=a" (pxo_ret__), "+m" (var) \
|
: "=&a" (pxo_ret__), "+m" (var) \
|
||||||
: "r" (pxo_new__) \
|
: "r" (pxo_new__) \
|
||||||
: "memory"); \
|
: "memory"); \
|
||||||
break; \
|
break; \
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
#ifndef _ASM_X86_SYSTEM_64_H
|
|
||||||
#define _ASM_X86_SYSTEM_64_H
|
|
||||||
|
|
||||||
#include <asm/segment.h>
|
|
||||||
#include <asm/cmpxchg.h>
|
|
||||||
|
|
||||||
|
|
||||||
static inline unsigned long read_cr8(void)
|
|
||||||
{
|
|
||||||
unsigned long cr8;
|
|
||||||
asm volatile("movq %%cr8,%0" : "=r" (cr8));
|
|
||||||
return cr8;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void write_cr8(unsigned long val)
|
|
||||||
{
|
|
||||||
asm volatile("movq %0,%%cr8" :: "r" (val) : "memory");
|
|
||||||
}
|
|
||||||
|
|
||||||
#include <linux/irqflags.h>
|
|
||||||
|
|
||||||
#endif /* _ASM_X86_SYSTEM_64_H */
|
|
|
@ -149,13 +149,13 @@ void dump_trace(struct task_struct *task,
|
||||||
unsigned used = 0;
|
unsigned used = 0;
|
||||||
struct thread_info *tinfo;
|
struct thread_info *tinfo;
|
||||||
int graph = 0;
|
int graph = 0;
|
||||||
|
unsigned long dummy;
|
||||||
unsigned long bp;
|
unsigned long bp;
|
||||||
|
|
||||||
if (!task)
|
if (!task)
|
||||||
task = current;
|
task = current;
|
||||||
|
|
||||||
if (!stack) {
|
if (!stack) {
|
||||||
unsigned long dummy;
|
|
||||||
stack = &dummy;
|
stack = &dummy;
|
||||||
if (task && task != current)
|
if (task && task != current)
|
||||||
stack = (unsigned long *)task->thread.sp;
|
stack = (unsigned long *)task->thread.sp;
|
||||||
|
|
Loading…
Reference in New Issue