Blame view

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