GFS2: Support for I/O barriers
[pandora-kernel.git] / arch / blackfin / include / asm / entry.h
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
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
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.  */
30 #define INTERRUPT_ENTRY(N)                                              \
31     [--sp] = SYSCFG;                                                    \
32                                                                         \
33     [--sp] = P0;        /*orig_p0*/                                     \
34     [--sp] = R0;        /*orig_r0*/                                     \
35     [--sp] = (R7:0,P5:0);                                               \
36     R0 = (N);                                                           \
37     jump __common_int_entry;
38
39 /* For timer interrupts, we need to save IPEND, since the user_mode
40            macro accesses it to determine where to account time.  */
41 #define TIMER_INTERRUPT_ENTRY(N)                                        \
42     [--sp] = SYSCFG;                                                    \
43                                                                         \
44     [--sp] = P0;        /*orig_p0*/                                     \
45     [--sp] = R0;        /*orig_r0*/                                     \
46     [--sp] = (R7:0,P5:0);                                               \
47     p0.l = lo(IPEND);                                                   \
48     p0.h = hi(IPEND);                                                   \
49     r1 = [p0];                                                          \
50     R0 = (N);                                                           \
51     jump __common_int_entry;
52
53 /* This one pushes RETI without using CLI.  Interrupts are enabled.  */
54 #define SAVE_CONTEXT_SYSCALL    save_context_syscall
55 #define SAVE_CONTEXT            save_context_with_interrupts
56
57 #define RESTORE_ALL_SYS         restore_context_no_interrupts
58 #define RESTORE_CONTEXT         restore_context_with_interrupts
59
60 #endif                          /* __ASSEMBLY__ */
61 #endif                          /* __BFIN_ENTRY_H */