Logo Search packages:      
Sourcecode: linux version File versions

entry.h

#ifndef __BFIN_ENTRY_H
#define __BFIN_ENTRY_H

#include <asm/setup.h>
#include <asm/page.h>

#ifdef __ASSEMBLY__

#define     LFLUSH_I_AND_D    0x00000808
#define     LSIGTRAP    5

/* process bits for task_struct.flags */
#define     PF_TRACESYS_OFF   3
#define     PF_TRACESYS_BIT   5
#define     PF_PTRACED_OFF    3
#define     PF_PTRACED_BIT    4
#define     PF_DTRACE_OFF     1
#define     PF_DTRACE_BIT     5

/*
 * NOTE!  The single-stepping code assumes that all interrupt handlers
 * start by saving SYSCFG on the stack with their first instruction.
 */

/* This one is used for exceptions, emulation, and NMI.  It doesn't push
   RETI and doesn't do cli.  */
#define SAVE_ALL_SYS          save_context_no_interrupts
/* This is used for all normal interrupts.  It saves a minimum of registers
   to the stack, loads the IRQ number, and jumps to common code.  */
#define INTERRUPT_ENTRY(N)                                  \
    [--sp] = SYSCFG;                                        \
                                                      \
    [--sp] = P0;  /*orig_p0*/                         \
    [--sp] = R0;  /*orig_r0*/                         \
    [--sp] = (R7:0,P5:0);                                   \
    R0 = (N);                                               \
    jump __common_int_entry;

/* For timer interrupts, we need to save IPEND, since the user_mode
         macro accesses it to determine where to account time.  */
#define TIMER_INTERRUPT_ENTRY(N)                            \
    [--sp] = SYSCFG;                                        \
                                                      \
    [--sp] = P0;  /*orig_p0*/                         \
    [--sp] = R0;  /*orig_r0*/                         \
    [--sp] = (R7:0,P5:0);                                   \
    p0.l = lo(IPEND);                                       \
    p0.h = hi(IPEND);                                       \
    r1 = [p0];                                              \
    R0 = (N);                                               \
    jump __common_int_entry;

/* This one pushes RETI without using CLI.  Interrupts are enabled.  */
#define SAVE_CONTEXT_SYSCALL  save_context_syscall
#define SAVE_CONTEXT          save_context_with_interrupts

#define RESTORE_ALL_SYS       restore_context_no_interrupts
#define RESTORE_CONTEXT       restore_context_with_interrupts

#endif                        /* __ASSEMBLY__ */
#endif                        /* __BFIN_ENTRY_H */

Generated by  Doxygen 1.6.0   Back to index