blob: 45bb3eeeab7c012726123b733bf6a21631175782 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
Russell King4baa9922008-08-02 10:55:55 +01002 * arch/arm/include/asm/fiq.h
Linus Torvalds1da177e2005-04-16 15:20:36 -07003 *
4 * Support for FIQ on ARM architectures.
5 * Written by Philip Blundell <philb@gnu.org>, 1998
6 * Re-written by Russell King
7 */
8
9#ifndef __ASM_FIQ_H
10#define __ASM_FIQ_H
11
12#include <asm/ptrace.h>
13
14struct fiq_handler {
15 struct fiq_handler *next;
16 /* Name
17 */
18 const char *name;
19 /* Called to ask driver to relinquish/
20 * reacquire FIQ
21 * return zero to accept, or -<errno>
22 */
23 int (*fiq_op)(void *, int relinquish);
24 /* data for the relinquish/reacquire functions
25 */
26 void *dev_id;
27};
28
29extern int claim_fiq(struct fiq_handler *f);
30extern void release_fiq(struct fiq_handler *f);
31extern void set_fiq_handler(void *start, unsigned int length);
Linus Torvalds1da177e2005-04-16 15:20:36 -070032extern void enable_fiq(int fiq);
33extern void disable_fiq(int fiq);
34
Dave Martindc2eb922011-05-23 12:22:10 +010035/* helpers defined in fiqasm.S: */
36extern void __set_fiq_regs(unsigned long const *regs);
37extern void __get_fiq_regs(unsigned long *regs);
38
39static inline void set_fiq_regs(struct pt_regs const *regs)
40{
41 __set_fiq_regs(&regs->ARM_r8);
42}
43
44static inline void get_fiq_regs(struct pt_regs *regs)
45{
46 __get_fiq_regs(&regs->ARM_r8);
47}
48
Linus Torvalds1da177e2005-04-16 15:20:36 -070049#endif