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