home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / blackfin / include / asm / entry.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.8 KB  |  62 lines

  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 */
  62.