14baa9922SRussell King /* 24baa9922SRussell King * arch/arm/include/asm/fiq.h 34baa9922SRussell King * 44baa9922SRussell King * Support for FIQ on ARM architectures. 54baa9922SRussell King * Written by Philip Blundell <philb@gnu.org>, 1998 64baa9922SRussell King * Re-written by Russell King 74baa9922SRussell King */ 84baa9922SRussell King 94baa9922SRussell King #ifndef __ASM_FIQ_H 104baa9922SRussell King #define __ASM_FIQ_H 114baa9922SRussell King 124baa9922SRussell King #include <asm/ptrace.h> 134baa9922SRussell King 144baa9922SRussell King struct fiq_handler { 154baa9922SRussell King struct fiq_handler *next; 164baa9922SRussell King /* Name 174baa9922SRussell King */ 184baa9922SRussell King const char *name; 194baa9922SRussell King /* Called to ask driver to relinquish/ 204baa9922SRussell King * reacquire FIQ 214baa9922SRussell King * return zero to accept, or -<errno> 224baa9922SRussell King */ 234baa9922SRussell King int (*fiq_op)(void *, int relinquish); 244baa9922SRussell King /* data for the relinquish/reacquire functions 254baa9922SRussell King */ 264baa9922SRussell King void *dev_id; 274baa9922SRussell King }; 284baa9922SRussell King 294baa9922SRussell King extern int claim_fiq(struct fiq_handler *f); 304baa9922SRussell King extern void release_fiq(struct fiq_handler *f); 314baa9922SRussell King extern void set_fiq_handler(void *start, unsigned int length); 324baa9922SRussell King extern void enable_fiq(int fiq); 334baa9922SRussell King extern void disable_fiq(int fiq); 344baa9922SRussell King 35*dc2eb928SDave Martin /* helpers defined in fiqasm.S: */ 36*dc2eb928SDave Martin extern void __set_fiq_regs(unsigned long const *regs); 37*dc2eb928SDave Martin extern void __get_fiq_regs(unsigned long *regs); 38*dc2eb928SDave Martin 39*dc2eb928SDave Martin static inline void set_fiq_regs(struct pt_regs const *regs) 40*dc2eb928SDave Martin { 41*dc2eb928SDave Martin __set_fiq_regs(®s->ARM_r8); 42*dc2eb928SDave Martin } 43*dc2eb928SDave Martin 44*dc2eb928SDave Martin static inline void get_fiq_regs(struct pt_regs *regs) 45*dc2eb928SDave Martin { 46*dc2eb928SDave Martin __get_fiq_regs(®s->ARM_r8); 47*dc2eb928SDave Martin } 48*dc2eb928SDave Martin 494baa9922SRussell King #endif 50