diff options
Diffstat (limited to 'arch/arm/kernel/entry-armv.S')
| -rw-r--r-- | arch/arm/kernel/entry-armv.S | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 322410be573..d2903e3bc86 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 | ||
| @@ -608,33 +609,33 @@ call_fpe: | |||
| 608 | THUMB( add pc, r8 ) | 609 | THUMB( add pc, r8 ) |
| 609 | nop | 610 | nop |
| 610 | 611 | ||
| 611 | W(mov) pc, lr @ CP#0 | 612 | movw_pc lr @ CP#0 |
| 612 | W(b) do_fpe @ CP#1 (FPE) | 613 | W(b) do_fpe @ CP#1 (FPE) |
| 613 | W(b) do_fpe @ CP#2 (FPE) | 614 | W(b) do_fpe @ CP#2 (FPE) |
| 614 | W(mov) pc, lr @ CP#3 | 615 | movw_pc lr @ CP#3 |
| 615 | #ifdef CONFIG_CRUNCH | 616 | #ifdef CONFIG_CRUNCH |
| 616 | b crunch_task_enable @ CP#4 (MaverickCrunch) | 617 | b crunch_task_enable @ CP#4 (MaverickCrunch) |
| 617 | b crunch_task_enable @ CP#5 (MaverickCrunch) | 618 | b crunch_task_enable @ CP#5 (MaverickCrunch) |
| 618 | b crunch_task_enable @ CP#6 (MaverickCrunch) | 619 | b crunch_task_enable @ CP#6 (MaverickCrunch) |
| 619 | #else | 620 | #else |
| 620 | W(mov) pc, lr @ CP#4 | 621 | movw_pc lr @ CP#4 |
| 621 | W(mov) pc, lr @ CP#5 | 622 | movw_pc lr @ CP#5 |
| 622 | W(mov) pc, lr @ CP#6 | 623 | movw_pc lr @ CP#6 |
| 623 | #endif | 624 | #endif |
| 624 | W(mov) pc, lr @ CP#7 | 625 | movw_pc lr @ CP#7 |
| 625 | W(mov) pc, lr @ CP#8 | 626 | movw_pc lr @ CP#8 |
| 626 | W(mov) pc, lr @ CP#9 | 627 | movw_pc lr @ CP#9 |
| 627 | #ifdef CONFIG_VFP | 628 | #ifdef CONFIG_VFP |
| 628 | W(b) do_vfp @ CP#10 (VFP) | 629 | W(b) do_vfp @ CP#10 (VFP) |
| 629 | W(b) do_vfp @ CP#11 (VFP) | 630 | W(b) do_vfp @ CP#11 (VFP) |
| 630 | #else | 631 | #else |
| 631 | W(mov) pc, lr @ CP#10 (VFP) | 632 | movw_pc lr @ CP#10 (VFP) |
| 632 | W(mov) pc, lr @ CP#11 (VFP) | 633 | movw_pc lr @ CP#11 (VFP) |
| 633 | #endif | 634 | #endif |
| 634 | W(mov) pc, lr @ CP#12 | 635 | movw_pc lr @ CP#12 |
| 635 | W(mov) pc, lr @ CP#13 | 636 | movw_pc lr @ CP#13 |
| 636 | W(mov) pc, lr @ CP#14 (Debug) | 637 | movw_pc lr @ CP#14 (Debug) |
| 637 | W(mov) pc, lr @ CP#15 (Control) | 638 | movw_pc lr @ CP#15 (Control) |
| 638 | 639 | ||
| 639 | #ifdef CONFIG_NEON | 640 | #ifdef CONFIG_NEON |
| 640 | .align 6 | 641 | .align 6 |
| @@ -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 | ||
