diff options
Diffstat (limited to 'arch/blackfin/include/asm/entry.h')
-rw-r--r-- | arch/blackfin/include/asm/entry.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/blackfin/include/asm/entry.h b/arch/blackfin/include/asm/entry.h index c4f721e0d00d..b30a2968e274 100644 --- a/arch/blackfin/include/asm/entry.h +++ b/arch/blackfin/include/asm/entry.h | |||
@@ -27,6 +27,14 @@ | |||
27 | #define SAVE_ALL_SYS save_context_no_interrupts | 27 | #define SAVE_ALL_SYS save_context_no_interrupts |
28 | /* This is used for all normal interrupts. It saves a minimum of registers | 28 | /* This is used for all normal interrupts. It saves a minimum of registers |
29 | to the stack, loads the IRQ number, and jumps to common code. */ | 29 | to the stack, loads the IRQ number, and jumps to common code. */ |
30 | #ifdef CONFIG_IPIPE | ||
31 | # define LOAD_IPIPE_IPEND \ | ||
32 | P0.l = lo(IPEND); \ | ||
33 | P0.h = hi(IPEND); \ | ||
34 | R1 = [P0]; | ||
35 | #else | ||
36 | # define LOAD_IPIPE_IPEND | ||
37 | #endif | ||
30 | #define INTERRUPT_ENTRY(N) \ | 38 | #define INTERRUPT_ENTRY(N) \ |
31 | [--sp] = SYSCFG; \ | 39 | [--sp] = SYSCFG; \ |
32 | \ | 40 | \ |
@@ -34,6 +42,7 @@ | |||
34 | [--sp] = R0; /*orig_r0*/ \ | 42 | [--sp] = R0; /*orig_r0*/ \ |
35 | [--sp] = (R7:0,P5:0); \ | 43 | [--sp] = (R7:0,P5:0); \ |
36 | R0 = (N); \ | 44 | R0 = (N); \ |
45 | LOAD_IPIPE_IPEND \ | ||
37 | jump __common_int_entry; | 46 | jump __common_int_entry; |
38 | 47 | ||
39 | /* For timer interrupts, we need to save IPEND, since the user_mode | 48 | /* For timer interrupts, we need to save IPEND, since the user_mode |
@@ -53,9 +62,11 @@ | |||
53 | /* This one pushes RETI without using CLI. Interrupts are enabled. */ | 62 | /* This one pushes RETI without using CLI. Interrupts are enabled. */ |
54 | #define SAVE_CONTEXT_SYSCALL save_context_syscall | 63 | #define SAVE_CONTEXT_SYSCALL save_context_syscall |
55 | #define SAVE_CONTEXT save_context_with_interrupts | 64 | #define SAVE_CONTEXT save_context_with_interrupts |
65 | #define SAVE_CONTEXT_CPLB save_context_cplb | ||
56 | 66 | ||
57 | #define RESTORE_ALL_SYS restore_context_no_interrupts | 67 | #define RESTORE_ALL_SYS restore_context_no_interrupts |
58 | #define RESTORE_CONTEXT restore_context_with_interrupts | 68 | #define RESTORE_CONTEXT restore_context_with_interrupts |
69 | #define RESTORE_CONTEXT_CPLB restore_context_cplb | ||
59 | 70 | ||
60 | #endif /* __ASSEMBLY__ */ | 71 | #endif /* __ASSEMBLY__ */ |
61 | #endif /* __BFIN_ENTRY_H */ | 72 | #endif /* __BFIN_ENTRY_H */ |