Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f7b548fa authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'x86-fixes-for-linus' of...

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()
parents 95f9354b 889a7a6a
Loading
Loading
Loading
Loading
+12 −12
Original line number Original line Diff line number Diff line
@@ -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;							\

arch/x86/include/asm/system_64.h

deleted100644 → 0
+0 −22
Original line number Original line Diff line number Diff line
#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 */
+1 −1
Original line number Original line Diff line number Diff line
@@ -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;