linux/arch/arm/include/asm/fiq.h
<<
>>
Prefs
   1/*
   2 *  arch/arm/include/asm/fiq.h
   3 *
   4 * Support for FIQ on ARM architectures.
   5 * Written by Philip Blundell <philb@gnu.org>, 1998
   6 * Re-written by Russell King
   7 *
   8 * NOTE: The FIQ mode registers are not magically preserved across
   9 * suspend/resume.
  10 *
  11 * Drivers which require these registers to be preserved across power
  12 * management operations must implement appropriate suspend/resume handlers to
  13 * save and restore them.
  14 */
  15
  16#ifndef __ASM_FIQ_H
  17#define __ASM_FIQ_H
  18
  19#include <asm/ptrace.h>
  20
  21struct fiq_handler {
  22        struct fiq_handler *next;
  23        /* Name
  24         */
  25        const char *name;
  26        /* Called to ask driver to relinquish/
  27         * reacquire FIQ
  28         * return zero to accept, or -<errno>
  29         */
  30        int (*fiq_op)(void *, int relinquish);
  31        /* data for the relinquish/reacquire functions
  32         */
  33        void *dev_id;
  34};
  35
  36extern int claim_fiq(struct fiq_handler *f);
  37extern void release_fiq(struct fiq_handler *f);
  38extern void set_fiq_handler(void *start, unsigned int length);
  39extern void enable_fiq(int fiq);
  40extern void disable_fiq(int fiq);
  41
  42/* helpers defined in fiqasm.S: */
  43extern void __set_fiq_regs(unsigned long const *regs);
  44extern void __get_fiq_regs(unsigned long *regs);
  45
  46static inline void set_fiq_regs(struct pt_regs const *regs)
  47{
  48        __set_fiq_regs(&regs->ARM_r8);
  49}
  50
  51static inline void get_fiq_regs(struct pt_regs *regs)
  52{
  53        __get_fiq_regs(&regs->ARM_r8);
  54}
  55
  56#endif
  57