xref: /kvm-unit-tests/lib/arm/asm/gic.h (revision 00cc96f0d25b6c110fda00bc03bfb428be186590)
1*00cc96f0SAndrew Jones /*
2*00cc96f0SAndrew Jones  * Copyright (C) 2016, Red Hat Inc, Andrew Jones <drjones@redhat.com>
3*00cc96f0SAndrew Jones  *
4*00cc96f0SAndrew Jones  * This work is licensed under the terms of the GNU LGPL, version 2.
5*00cc96f0SAndrew Jones  */
6*00cc96f0SAndrew Jones #ifndef _ASMARM_GIC_H_
7*00cc96f0SAndrew Jones #define _ASMARM_GIC_H_
8*00cc96f0SAndrew Jones 
9*00cc96f0SAndrew Jones #include <asm/gic-v2.h>
10*00cc96f0SAndrew Jones 
11*00cc96f0SAndrew Jones /* Distributor registers */
12*00cc96f0SAndrew Jones #define GICD_CTLR			0x0000
13*00cc96f0SAndrew Jones #define GICD_TYPER			0x0004
14*00cc96f0SAndrew Jones #define GICD_ISENABLER			0x0100
15*00cc96f0SAndrew Jones #define GICD_IPRIORITYR			0x0400
16*00cc96f0SAndrew Jones 
17*00cc96f0SAndrew Jones #define GICD_TYPER_IRQS(typer)		((((typer) & 0x1f) + 1) * 32)
18*00cc96f0SAndrew Jones #define GICD_INT_EN_SET_SGI		0x0000ffff
19*00cc96f0SAndrew Jones #define GICD_INT_DEF_PRI_X4		0xa0a0a0a0
20*00cc96f0SAndrew Jones 
21*00cc96f0SAndrew Jones /* CPU interface registers */
22*00cc96f0SAndrew Jones #define GICC_CTLR			0x0000
23*00cc96f0SAndrew Jones #define GICC_PMR			0x0004
24*00cc96f0SAndrew Jones 
25*00cc96f0SAndrew Jones #define GICC_INT_PRI_THRESHOLD		0xf0
26*00cc96f0SAndrew Jones 
27*00cc96f0SAndrew Jones #ifndef __ASSEMBLY__
28*00cc96f0SAndrew Jones 
29*00cc96f0SAndrew Jones /*
30*00cc96f0SAndrew Jones  * gic_init will try to find all known gics, and then
31*00cc96f0SAndrew Jones  * initialize the gic data for the one found.
32*00cc96f0SAndrew Jones  * returns
33*00cc96f0SAndrew Jones  *  0   : no gic was found
34*00cc96f0SAndrew Jones  *  > 0 : the gic version of the gic found
35*00cc96f0SAndrew Jones  */
36*00cc96f0SAndrew Jones extern int gic_init(void);
37*00cc96f0SAndrew Jones 
38*00cc96f0SAndrew Jones #endif /* !__ASSEMBLY__ */
39*00cc96f0SAndrew Jones #endif /* _ASMARM_GIC_H_ */
40