aboutsummaryrefslogtreecommitdiff
path: root/arch/blackfin/kernel/process.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-09-17 09:53:04 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2009-09-17 09:53:04 -0700
commitabf5940dad78dde95edd7f6ba6e329cd10a92a5c (patch)
treeeebc8af6a41ad11c92d8f2858700c11bec558eb3 /arch/blackfin/kernel/process.c
parent66bc4a6f34a950c7aede597c578352c3eba82017 (diff)
parent5bf9cbef9972f851172391a37261b12bba63f733 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin: (75 commits) Blackfin: update ftrace for latest toolchain Blackfin: fix elf_fpregset_t definition Blackfin: unify cache init functions Blackfin: swap clocksource ratings for gptimer/cycles Blackfin: update ftrace_push_return_trace() breakage Blackfin: update cm board resources Blackfin: cm-bf537u: split board from cm-bf537e Blackfin: bf538-ezkit: add SPI IRQ resources Blackfin: increase default async timings for parallel flashes Blackfin: add ICPLB coverage for async banks Blackfin: use KERN_ALERT in all kgdb_test output Blackfin: fix BF54x SPI CS resources Blackfin: fix typo in isram_write() Blackfin: bf537-stamp: add adp5588 gpio resources Blackfin: add some isram-driver self tests Blackfin: workaround anomaly 05000283 Blackfin: fix spelling in a few comments Blackfin: use raw_smp_processor_id() in exception code Blackfin: remove useless duplicated assignment in gpio code Blackfin: Fix link errors with binutils 2.19 and GCC 4.3 ...
Diffstat (limited to 'arch/blackfin/kernel/process.c')
-rw-r--r--arch/blackfin/kernel/process.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c
index 9da36bab7cc..f5b28618964 100644
--- a/arch/blackfin/kernel/process.c
+++ b/arch/blackfin/kernel/process.c
@@ -282,25 +282,19 @@ void finish_atomic_sections (struct pt_regs *regs)
{
int __user *up0 = (int __user *)regs->p0;
- if (regs->pc < ATOMIC_SEQS_START || regs->pc >= ATOMIC_SEQS_END)
- return;
-
switch (regs->pc) {
case ATOMIC_XCHG32 + 2:
put_user(regs->r1, up0);
- regs->pc += 2;
+ regs->pc = ATOMIC_XCHG32 + 4;
break;
case ATOMIC_CAS32 + 2:
case ATOMIC_CAS32 + 4:
if (regs->r0 == regs->r1)
+ case ATOMIC_CAS32 + 6:
put_user(regs->r2, up0);
regs->pc = ATOMIC_CAS32 + 8;
break;
- case ATOMIC_CAS32 + 6:
- put_user(regs->r2, up0);
- regs->pc += 2;
- break;
case ATOMIC_ADD32 + 2:
regs->r0 = regs->r1 + regs->r0;