diff options
Diffstat (limited to 'arch/blackfin/mach-common/entry.S')
-rw-r--r-- | arch/blackfin/mach-common/entry.S | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S index bc08c98d008d..f96933f48a7f 100644 --- a/arch/blackfin/mach-common/entry.S +++ b/arch/blackfin/mach-common/entry.S | |||
@@ -268,7 +268,7 @@ ENTRY(_handle_bad_cplb) | |||
268 | /* To get here, we just tried and failed to change a CPLB | 268 | /* To get here, we just tried and failed to change a CPLB |
269 | * so, handle things in trap_c (C code), by lowering to | 269 | * so, handle things in trap_c (C code), by lowering to |
270 | * IRQ5, just like we normally do. Since this is not a | 270 | * IRQ5, just like we normally do. Since this is not a |
271 | * "normal" return path, we have a do alot of stuff to | 271 | * "normal" return path, we have a do a lot of stuff to |
272 | * the stack to get ready so, we can fall through - we | 272 | * the stack to get ready so, we can fall through - we |
273 | * need to make a CPLB exception look like a normal exception | 273 | * need to make a CPLB exception look like a normal exception |
274 | */ | 274 | */ |
@@ -817,7 +817,7 @@ _new_old_task: | |||
817 | rets = [sp++]; | 817 | rets = [sp++]; |
818 | 818 | ||
819 | /* | 819 | /* |
820 | * When we come out of resume, r0 carries "old" task, becuase we are | 820 | * When we come out of resume, r0 carries "old" task, because we are |
821 | * in "new" task. | 821 | * in "new" task. |
822 | */ | 822 | */ |
823 | rts; | 823 | rts; |
@@ -952,8 +952,17 @@ ENDPROC(_evt_up_evt14) | |||
952 | #ifdef CONFIG_IPIPE | 952 | #ifdef CONFIG_IPIPE |
953 | 953 | ||
954 | _resume_kernel_from_int: | 954 | _resume_kernel_from_int: |
955 | r1 = LO(~0x8000) (Z); | ||
956 | r1 = r0 & r1; | ||
957 | r0 = 1; | ||
958 | r0 = r1 - r0; | ||
959 | r2 = r1 & r0; | ||
960 | cc = r2 == 0; | ||
961 | /* Sync the root stage only from the outer interrupt level. */ | ||
962 | if !cc jump .Lnosync; | ||
955 | r0.l = ___ipipe_sync_root; | 963 | r0.l = ___ipipe_sync_root; |
956 | r0.h = ___ipipe_sync_root; | 964 | r0.h = ___ipipe_sync_root; |
965 | [--sp] = reti; | ||
957 | [--sp] = rets; | 966 | [--sp] = rets; |
958 | [--sp] = ( r7:4, p5:3 ); | 967 | [--sp] = ( r7:4, p5:3 ); |
959 | SP += -12; | 968 | SP += -12; |
@@ -961,6 +970,8 @@ _resume_kernel_from_int: | |||
961 | SP += 12; | 970 | SP += 12; |
962 | ( r7:4, p5:3 ) = [sp++]; | 971 | ( r7:4, p5:3 ) = [sp++]; |
963 | rets = [sp++]; | 972 | rets = [sp++]; |
973 | reti = [sp++]; | ||
974 | .Lnosync: | ||
964 | rts | 975 | rts |
965 | #elif defined(CONFIG_PREEMPT) | 976 | #elif defined(CONFIG_PREEMPT) |
966 | 977 | ||
@@ -1738,6 +1749,10 @@ ENTRY(_sys_call_table) | |||
1738 | .long _sys_fanotify_mark | 1749 | .long _sys_fanotify_mark |
1739 | .long _sys_prlimit64 | 1750 | .long _sys_prlimit64 |
1740 | .long _sys_cacheflush | 1751 | .long _sys_cacheflush |
1752 | .long _sys_name_to_handle_at /* 375 */ | ||
1753 | .long _sys_open_by_handle_at | ||
1754 | .long _sys_clock_adjtime | ||
1755 | .long _sys_syncfs | ||
1741 | 1756 | ||
1742 | .rept NR_syscalls-(.-_sys_call_table)/4 | 1757 | .rept NR_syscalls-(.-_sys_call_table)/4 |
1743 | .long _sys_ni_syscall | 1758 | .long _sys_ni_syscall |