xref: /openbmc/linux/arch/arm/include/asm/fiq.h (revision dc2eb928a1bcf6a48f40c1f2ff21b66bdbf91a3c)
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(&regs->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(&regs->ARM_r8);
47*dc2eb928SDave Martin }
48*dc2eb928SDave Martin 
494baa9922SRussell King #endif
50