1 #ifndef __LUNAIX_AA64_GIC_H
2 #define __LUNAIX_AA64_GIC_H
4 #include <lunaix/bits.h>
7 #define FRAME_SIZE 0x10000
9 typedef unsigned int gicreg_t;
10 typedef unsigned long gicreg64_t;
11 #define FRAME_LEN (FRAME_SIZE / sizeof(gicreg_t))
12 #define REG_INDEX(addr) ((addr) / sizeof(gicreg_t))
14 #define ICC_CTLR_EL1 __sr_encode(3, 0, 12, 12, 4)
15 #define ICC_SRE_EL1 __sr_encode(3, 0, 12, 12, 5)
16 #define ICC_IGRPEN0_EL1 __sr_encode(3, 0, 12, 12, 6)
17 #define ICC_IGRPEN1_EL1 __sr_encode(3, 0, 12, 12, 7)
19 #define ICC_IAR1_EL1 __sr_encode(3, 0, 12, 12, 0)
20 #define ICC_EOIR1_EL1 __sr_encode(3, 0, 12, 12, 1)
22 #define INTID_ACKED_S 1020
23 #define INTID_ACKED_NS 1021
24 #define INTID_IAR1_NMI 1022
25 #define INTID_NOTHING 1023
26 #define check_special_intid(intid) \
27 ((intid) >= INTID_ACKED_S && (intid) <= INTID_NOTHING)
29 #define LPI_PRIORITY BITFIELD(7, 2)
32 #define ICC_SRE_SRE BITFLAG(0)
33 #define ICC_SRE_DFB BITFLAG(1)
34 #define ICC_SRE_DIB BITFLAG(2)
36 #define ICC_CTRL_EXTRAN BITFLAG(19)
37 #define ICC_CTRL_IDbits BITFIELD(13, 11)
38 #define ICC_CTRL_PRIbits BITFIELD(10, 8)
39 #define ICC_CTRL_PMHE BITFLAG(6)
40 #define ICC_CTRL_EOImode BITFLAG(1)
41 #define ICC_CTRL_CBPR BITFLAG(0)
43 #define ICC_IGRPEN_ENABLE BITFLAG(0)
45 #define GICD_CTLR REG_INDEX(0x0000)
46 #define GICD_TYPER REG_INDEX(0x0004)
47 #define GICD_IIDR REG_INDEX(0x0008)
49 #define GICD_IGROUPRn REG_INDEX(0x0080)
50 #define GICD_ISENABLER REG_INDEX(0x0100)
51 #define GICD_ICENABLER REG_INDEX(0x0180)
52 #define GICD_IPRIORITYR REG_INDEX(0x0400)
53 #define GICD_ICFGR REG_INDEX(0x0C00)
54 #define GICD_IGRPMODRn REG_INDEX(0x0D00)
55 #define GICD_INMIR REG_INDEX(0x0F80)
57 #define GICR_CTLR REG_INDEX(0x0000)
58 #define GICR_TYPER REG_INDEX(0x0008)
59 #define GICR_PROPBASER REG_INDEX(0x0070)
60 #define GICR_PENDBASER REG_INDEX(0x0078)
62 #define GICD_CTLR_G1SEN BITFLAG(2)
63 #define GICD_CTLR_G1NSEN BITFLAG(1)
64 #define GICD_CTLR_G0EN BITFLAG(0)
66 #define GICD_TYPER_nESPI BITFIELD(31, 27)
67 #define GICD_TYPER_No1N BITFLAG(25)
68 #define GICD_TYPER_LPIS BITFLAG(17)
69 #define GICD_TYPER_MBIS BITFLAG(16)
70 #define GICD_TYPER_nLPI BITFIELD(15, 11)
71 #define GICD_TYPER_NMI BITFLAG(9)
72 #define GICD_TYPER_ESPI BITFLAG(8)
73 #define GICD_TYPER_nSPI BITFIELD(4, 0)
74 #define GICD_TYPER_IDbits BITFIELD(23, 19)
76 #define GICR_TYPER_AffVal BITFIELD(63, 32)
77 #define GICR_TYPER_PPInum BITFIELD(31, 27)
79 #define GICR_BASER_PAddr BITFIELD(51, 12)
80 #define GICR_BASER_Share BITFIELD(11, 10)
81 #define GICR_PENDBASER_PTZ BITFLAG(62)
82 #define GICR_PROPBASER_IDbits\
85 #endif /* __LUNAIX_AA64_GIC_H */