xref: /kvm-unit-tests/lib/arm/asm/gic.h (revision ac4a67b630756080a9a08afad456cb8f74cc3aeb)
100cc96f0SAndrew Jones /*
200cc96f0SAndrew Jones  * Copyright (C) 2016, Red Hat Inc, Andrew Jones <drjones@redhat.com>
300cc96f0SAndrew Jones  *
400cc96f0SAndrew Jones  * This work is licensed under the terms of the GNU LGPL, version 2.
500cc96f0SAndrew Jones  */
600cc96f0SAndrew Jones #ifndef _ASMARM_GIC_H_
700cc96f0SAndrew Jones #define _ASMARM_GIC_H_
800cc96f0SAndrew Jones 
900cc96f0SAndrew Jones #include <asm/gic-v2.h>
1000cc96f0SAndrew Jones 
1100cc96f0SAndrew Jones /* Distributor registers */
1200cc96f0SAndrew Jones #define GICD_CTLR			0x0000
1300cc96f0SAndrew Jones #define GICD_TYPER			0x0004
1400cc96f0SAndrew Jones #define GICD_ISENABLER			0x0100
1500cc96f0SAndrew Jones #define GICD_IPRIORITYR			0x0400
16*ac4a67b6SAndrew Jones #define GICD_SGIR			0x0f00
1700cc96f0SAndrew Jones 
1800cc96f0SAndrew Jones #define GICD_TYPER_IRQS(typer)		((((typer) & 0x1f) + 1) * 32)
1900cc96f0SAndrew Jones #define GICD_INT_EN_SET_SGI		0x0000ffff
2000cc96f0SAndrew Jones #define GICD_INT_DEF_PRI_X4		0xa0a0a0a0
2100cc96f0SAndrew Jones 
2200cc96f0SAndrew Jones /* CPU interface registers */
2300cc96f0SAndrew Jones #define GICC_CTLR			0x0000
2400cc96f0SAndrew Jones #define GICC_PMR			0x0004
25*ac4a67b6SAndrew Jones #define GICC_IAR			0x000c
26*ac4a67b6SAndrew Jones #define GICC_EOIR			0x0010
2700cc96f0SAndrew Jones 
2800cc96f0SAndrew Jones #define GICC_INT_PRI_THRESHOLD		0xf0
29*ac4a67b6SAndrew Jones #define GICC_INT_SPURIOUS		0x3ff
3000cc96f0SAndrew Jones 
3100cc96f0SAndrew Jones #ifndef __ASSEMBLY__
3200cc96f0SAndrew Jones 
3300cc96f0SAndrew Jones /*
3400cc96f0SAndrew Jones  * gic_init will try to find all known gics, and then
3500cc96f0SAndrew Jones  * initialize the gic data for the one found.
3600cc96f0SAndrew Jones  * returns
3700cc96f0SAndrew Jones  *  0   : no gic was found
3800cc96f0SAndrew Jones  *  > 0 : the gic version of the gic found
3900cc96f0SAndrew Jones  */
4000cc96f0SAndrew Jones extern int gic_init(void);
4100cc96f0SAndrew Jones 
4200cc96f0SAndrew Jones #endif /* !__ASSEMBLY__ */
4300cc96f0SAndrew Jones #endif /* _ASMARM_GIC_H_ */
44