diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/kernel/entry-armv.S | 1 | ||||
-rw-r--r-- | arch/arm/kernel/entry-common.S | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index cc10a093a545..d645897652c2 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -27,6 +27,7 @@ | |||
27 | * Interrupt handling. Preserves r7, r8, r9 | 27 | * Interrupt handling. Preserves r7, r8, r9 |
28 | */ | 28 | */ |
29 | .macro irq_handler | 29 | .macro irq_handler |
30 | get_irqnr_preamble r5, lr | ||
30 | 1: get_irqnr_and_base r0, r6, r5, lr | 31 | 1: get_irqnr_and_base r0, r6, r5, lr |
31 | movne r1, sp | 32 | movne r1, sp |
32 | @ | 33 | @ |
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index 6f5e7c50d42f..c589dc3ecd1a 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S | |||
@@ -9,6 +9,7 @@ | |||
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <asm/unistd.h> | 11 | #include <asm/unistd.h> |
12 | #include <asm/arch/entry-macro.S> | ||
12 | 13 | ||
13 | #include "entry-header.S" | 14 | #include "entry-header.S" |
14 | 15 | ||
@@ -25,6 +26,9 @@ ret_fast_syscall: | |||
25 | tst r1, #_TIF_WORK_MASK | 26 | tst r1, #_TIF_WORK_MASK |
26 | bne fast_work_pending | 27 | bne fast_work_pending |
27 | 28 | ||
29 | /* perform architecture specific actions before user return */ | ||
30 | arch_ret_to_user r1, lr | ||
31 | |||
28 | @ fast_restore_user_regs | 32 | @ fast_restore_user_regs |
29 | ldr r1, [sp, #S_OFF + S_PSR] @ get calling cpsr | 33 | ldr r1, [sp, #S_OFF + S_PSR] @ get calling cpsr |
30 | ldr lr, [sp, #S_OFF + S_PC]! @ get pc | 34 | ldr lr, [sp, #S_OFF + S_PC]! @ get pc |
@@ -61,6 +65,9 @@ ret_slow_syscall: | |||
61 | tst r1, #_TIF_WORK_MASK | 65 | tst r1, #_TIF_WORK_MASK |
62 | bne work_pending | 66 | bne work_pending |
63 | no_work_pending: | 67 | no_work_pending: |
68 | /* perform architecture specific actions before user return */ | ||
69 | arch_ret_to_user r1, lr | ||
70 | |||
64 | @ slow_restore_user_regs | 71 | @ slow_restore_user_regs |
65 | ldr r1, [sp, #S_PSR] @ get calling cpsr | 72 | ldr r1, [sp, #S_PSR] @ get calling cpsr |
66 | ldr lr, [sp, #S_PC]! @ get pc | 73 | ldr lr, [sp, #S_PC]! @ get pc |