diff options
| author | Takashi Iwai <tiwai@suse.de> | 2009-12-01 09:58:15 -0500 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2009-12-01 09:58:15 -0500 |
| commit | b00615d163cd24fa98d155acfc1f9d81d6fe1103 (patch) | |
| tree | dde815788aaea3e336aaaf24763311ce63a22e1b /arch/arm/kernel | |
| parent | 75639e7ee1401b3876c7a00ffe96ea8027668690 (diff) | |
| parent | d6797322231af98b9bb4afb175dd614cf511e5f7 (diff) | |
Merge branch 'topic/pcm-dma-fix' into topic/core-change
Diffstat (limited to 'arch/arm/kernel')
| -rw-r--r-- | arch/arm/kernel/entry-armv.S | 7 | ||||
| -rw-r--r-- | arch/arm/kernel/head-common.S | 2 | ||||
| -rw-r--r-- | arch/arm/kernel/smp_scu.c | 4 | ||||
| -rw-r--r-- | arch/arm/kernel/traps.c | 4 |
4 files changed, 11 insertions, 6 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 0022b4d57f8b..d2903e3bc861 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #include <mach/entry-macro.S> | 21 | #include <mach/entry-macro.S> |
| 22 | #include <asm/thread_notify.h> | 22 | #include <asm/thread_notify.h> |
| 23 | #include <asm/unwind.h> | 23 | #include <asm/unwind.h> |
| 24 | #include <asm/unistd.h> | ||
| 24 | 25 | ||
| 25 | #include "entry-header.S" | 26 | #include "entry-header.S" |
| 26 | 27 | ||
| @@ -908,10 +909,10 @@ __kuser_cmpxchg: @ 0xffff0fc0 | |||
| 908 | * A special ghost syscall is used for that (see traps.c). | 909 | * A special ghost syscall is used for that (see traps.c). |
| 909 | */ | 910 | */ |
| 910 | stmfd sp!, {r7, lr} | 911 | stmfd sp!, {r7, lr} |
| 911 | mov r7, #0xff00 @ 0xfff0 into r7 for EABI | 912 | ldr r7, =1f @ it's 20 bits |
| 912 | orr r7, r7, #0xf0 | 913 | swi __ARM_NR_cmpxchg |
| 913 | swi #0x9ffff0 | ||
| 914 | ldmfd sp!, {r7, pc} | 914 | ldmfd sp!, {r7, pc} |
| 915 | 1: .word __ARM_NR_cmpxchg | ||
| 915 | 916 | ||
| 916 | #elif __LINUX_ARM_ARCH__ < 6 | 917 | #elif __LINUX_ARM_ARCH__ < 6 |
| 917 | 918 | ||
diff --git a/arch/arm/kernel/head-common.S b/arch/arm/kernel/head-common.S index 885a7214418d..b9505aa267c0 100644 --- a/arch/arm/kernel/head-common.S +++ b/arch/arm/kernel/head-common.S | |||
| @@ -97,7 +97,7 @@ __error_a: | |||
| 97 | bl printhex8 | 97 | bl printhex8 |
| 98 | adr r0, str_a2 | 98 | adr r0, str_a2 |
| 99 | bl printascii | 99 | bl printascii |
| 100 | adr r3, 3f | 100 | adr r3, 4f |
| 101 | ldmia r3, {r4, r5, r6} @ get machine desc list | 101 | ldmia r3, {r4, r5, r6} @ get machine desc list |
| 102 | sub r4, r3, r4 @ get offset between virt&phys | 102 | sub r4, r3, r4 @ get offset between virt&phys |
| 103 | add r5, r5, r4 @ convert virt addresses to | 103 | add r5, r5, r4 @ convert virt addresses to |
diff --git a/arch/arm/kernel/smp_scu.c b/arch/arm/kernel/smp_scu.c index d3831f616ee9..9ab4149bd983 100644 --- a/arch/arm/kernel/smp_scu.c +++ b/arch/arm/kernel/smp_scu.c | |||
| @@ -37,6 +37,10 @@ void __init scu_enable(void __iomem *scu_base) | |||
| 37 | u32 scu_ctrl; | 37 | u32 scu_ctrl; |
| 38 | 38 | ||
| 39 | scu_ctrl = __raw_readl(scu_base + SCU_CTRL); | 39 | scu_ctrl = __raw_readl(scu_base + SCU_CTRL); |
| 40 | /* already enabled? */ | ||
| 41 | if (scu_ctrl & 1) | ||
| 42 | return; | ||
| 43 | |||
| 40 | scu_ctrl |= 1; | 44 | scu_ctrl |= 1; |
| 41 | __raw_writel(scu_ctrl, scu_base + SCU_CTRL); | 45 | __raw_writel(scu_ctrl, scu_base + SCU_CTRL); |
| 42 | 46 | ||
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 95718a6b50a6..3f361a783f43 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
| @@ -528,7 +528,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) | |||
| 528 | * __kuser_cmpxchg code in entry-armv.S should be aware of its | 528 | * __kuser_cmpxchg code in entry-armv.S should be aware of its |
| 529 | * existence. Don't ever use this from user code. | 529 | * existence. Don't ever use this from user code. |
| 530 | */ | 530 | */ |
| 531 | case 0xfff0: | 531 | case NR(cmpxchg): |
| 532 | for (;;) { | 532 | for (;;) { |
| 533 | extern void do_DataAbort(unsigned long addr, unsigned int fsr, | 533 | extern void do_DataAbort(unsigned long addr, unsigned int fsr, |
| 534 | struct pt_regs *regs); | 534 | struct pt_regs *regs); |
| @@ -573,7 +573,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) | |||
| 573 | if not implemented, rather than raising SIGILL. This | 573 | if not implemented, rather than raising SIGILL. This |
| 574 | way the calling program can gracefully determine whether | 574 | way the calling program can gracefully determine whether |
| 575 | a feature is supported. */ | 575 | a feature is supported. */ |
| 576 | if (no <= 0x7ff) | 576 | if ((no & 0xffff) <= 0x7ff) |
| 577 | return -ENOSYS; | 577 | return -ENOSYS; |
| 578 | break; | 578 | break; |
| 579 | } | 579 | } |
