Blackfin arch: merge adeos blackfin part to arch/blackfin/
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / blackfin / include / asm / entry.h
CommitLineData
1394f032
BW
1#ifndef __BFIN_ENTRY_H
2#define __BFIN_ENTRY_H
3
4#include <asm/setup.h>
5#include <asm/page.h>
6
7#ifdef __ASSEMBLY__
8
9#define LFLUSH_I_AND_D 0x00000808
10#define LSIGTRAP 5
11
12/* process bits for task_struct.flags */
13#define PF_TRACESYS_OFF 3
14#define PF_TRACESYS_BIT 5
15#define PF_PTRACED_OFF 3
16#define PF_PTRACED_BIT 4
17#define PF_DTRACE_OFF 1
18#define PF_DTRACE_BIT 5
19
0893f125
BS
20/*
21 * NOTE! The single-stepping code assumes that all interrupt handlers
22 * start by saving SYSCFG on the stack with their first instruction.
23 */
24
1394f032
BW
25/* This one is used for exceptions, emulation, and NMI. It doesn't push
26 RETI and doesn't do cli. */
27#define SAVE_ALL_SYS save_context_no_interrupts
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. */
6a01f230
YL
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
1394f032
BW
38#define INTERRUPT_ENTRY(N) \
39 [--sp] = SYSCFG; \
40 \
41 [--sp] = P0; /*orig_p0*/ \
42 [--sp] = R0; /*orig_r0*/ \
43 [--sp] = (R7:0,P5:0); \
44 R0 = (N); \
6a01f230 45 LOAD_IPIPE_IPEND \
1394f032
BW
46 jump __common_int_entry;
47
48/* For timer interrupts, we need to save IPEND, since the user_mode
49 macro accesses it to determine where to account time. */
50#define TIMER_INTERRUPT_ENTRY(N) \
51 [--sp] = SYSCFG; \
52 \
53 [--sp] = P0; /*orig_p0*/ \
54 [--sp] = R0; /*orig_r0*/ \
55 [--sp] = (R7:0,P5:0); \
56 p0.l = lo(IPEND); \
57 p0.h = hi(IPEND); \
58 r1 = [p0]; \
59 R0 = (N); \
60 jump __common_int_entry;
61
62/* This one pushes RETI without using CLI. Interrupts are enabled. */
63#define SAVE_CONTEXT_SYSCALL save_context_syscall
64#define SAVE_CONTEXT save_context_with_interrupts
dbdf20db 65#define SAVE_CONTEXT_CPLB save_context_cplb
1394f032
BW
66
67#define RESTORE_ALL_SYS restore_context_no_interrupts
68#define RESTORE_CONTEXT restore_context_with_interrupts
dbdf20db 69#define RESTORE_CONTEXT_CPLB restore_context_cplb
1394f032
BW
70
71#endif /* __ASSEMBLY__ */
72#endif /* __BFIN_ENTRY_H */