Loading...
Searching...
No Matches
Go to the documentation of this file.
12#ifndef LOONGARCH_CSR_H_
13#define LOONGARCH_CSR_H_
24#define LOONGARCH_CSR_CRMD 0x0
25#define LOONGARCH_CSR_PRMD 0x1
26#define LOONGARCH_CSR_EUEN 0x2
27#define CSR_EUEN_LBTEN_SHIFT 3
28#define CSR_EUEN_LBTEN (0x1ULL << CSR_EUEN_LBTEN_SHIFT)
29#define CSR_EUEN_LASXEN_SHIFT 2
30#define CSR_EUEN_LASXEN (0x1ULL << CSR_EUEN_LASXEN_SHIFT)
31#define CSR_EUEN_LSXEN_SHIFT 1
32#define CSR_EUEN_LSXEN (0x1ULL << CSR_EUEN_LSXEN_SHIFT)
33#define CSR_EUEN_FPEN_SHIFT 0
34#define CSR_EUEN_FPEN (0x1ULL << CSR_EUEN_FPEN_SHIFT)
35#define LOONGARCH_CSR_MISC 0x3
36#define LOONGARCH_CSR_ECFG 0x4
38#define LOONGARCH_CSR_ESTAT 0x5
39#define CSR_ESTAT_ESUBCODE_SHIFT 22
40#define CSR_ESTAT_ESUBCODE_WIDTH 9
41#define CSR_ESTAT_ESUBCODE (0x1ffULL << CSR_ESTAT_ESUBCODE_SHIFT)
42#define CSR_ESTAT_EXC_SHIFT 16
43#define CSR_ESTAT_EXC_WIDTH 6
44#define CSR_ESTAT_EXC (0x3FULL << CSR_ESTAT_EXC_SHIFT)
45#define CSR_ESTAT_IS_SHIFT 0
46#define CSR_ESTAT_IS_WIDTH 15
47#define CSR_ESTAT_IS (0x7FFFULL << CSR_ESTAT_IS_SHIFT)
49#define LOONGARCH_CSR_ERA 0x6
50#define LOONGARCH_CSR_BADV 0x7
51#define LOONGARCH_CSR_BADI 0x8
52#define LOONGARCH_CSR_EBASE 0xC
57#define LOONGARCH_CSR_TLBIDX 0x10
58#define LOONGARCH_CSR_TLBEHI 0x11
59#define LOONGARCH_CSR_TLBELO0 0x12
60#define LOONGARCH_CSR_TLBELO1 0x13
61#define LOONGARCH_CSR_ASID 0x18
62#define LOONGARCH_CSR_PGDL 0x19
63#define LOONGARCH_CSR_PGDH 0x1A
64#define LOONGARCH_CSR_PGD 0x1B
65#define LOONGARCH_CSR_PWCTL0 0x1C
66#define LOONGARCH_CSR_PWCTL1 0x1D
67#define LOONGARCH_CSR_STLBPGSIZE 0x1E
68#define LOONGARCH_CSR_RVACFG 0x1F
73#define PAGE_VALID_SHIFT 0
74#define PAGE_DIRTY_SHIFT 1
75#define PAGE_PLV_SHIFT 2
77#define PAGE_GLOBAL_SHIFT 6
78#define PAGE_HUGE_SHIFT 6
80#define PAGE_HGLOBAL_SHIFT 12
81#define PAGE_PFN_SHIFT 12
82#define PAGE_PFN_END_SHIFT 48
83#define PAGE_NO_READ_SHIFT 61
84#define PAGE_NO_EXEC_SHIFT 62
85#define PAGE_RPLV_SHIFT 63
90#define PAGE_VALID ((UINTN)(1) << PAGE_VALID_SHIFT)
91#define PAGE_DIRTY ((UINTN)(1) << PAGE_DIRTY_SHIFT)
92#define PAGE_PLV ((UINTN)(3) << PAGE_PLV_SHIFT)
93#define PAGE_GLOBAL ((UINTN)(1) << PAGE_GLOBAL_SHIFT)
94#define PAGE_HUGE ((UINTN)(1) << PAGE_HUGE_SHIFT)
95#define PAGE_HGLOBAL ((UINTN)(1) << PAGE_HGLOBAL_SHIFT)
96#define PAGE_NO_READ ((UINTN)(1) << PAGE_NO_READ_SHIFT)
97#define PAGE_NO_EXEC ((UINTN)(1) << PAGE_NO_EXEC_SHIFT)
98#define PAGE_RPLV ((UINTN)(1) << PAGE_RPLV_SHIFT)
99#define CACHE_MASK ((UINTN)(3) << CACHE_SHIFT)
100#define PFN_SHIFT (EFI_PAGE_SHIFT - 12 + PAGE_PFN_SHIFT)
105#define PAGE_USER (PLV_USER << PAGE_PLV_SHIFT)
106#define PAGE_KERNEL (PLV_KERN << PAGE_PLV_SHIFT)
108#define CACHE_SUC (0 << CACHE_SHIFT)
109#define CACHE_CC (1 << CACHE_SHIFT)
110#define CACHE_WUC (2 << CACHE_SHIFT)
115#define LOONGARCH_CSR_CPUID 0x20
116#define LOONGARCH_CSR_PRCFG1 0x21
117#define LOONGARCH_CSR_PRCFG2 0x22
118#define LOONGARCH_CSR_PRCFG3 0x23
123#define LOONGARCH_CSR_KS0 0x30
124#define LOONGARCH_CSR_KS1 0x31
125#define LOONGARCH_CSR_KS2 0x32
126#define LOONGARCH_CSR_KS3 0x33
127#define LOONGARCH_CSR_KS4 0x34
128#define LOONGARCH_CSR_KS5 0x35
129#define LOONGARCH_CSR_KS6 0x36
130#define LOONGARCH_CSR_KS7 0x37
131#define LOONGARCH_CSR_KS8 0x38
136#define LOONGARCH_CSR_TMID 0x40
137#define LOONGARCH_CSR_TMCFG 0x41
138#define LOONGARCH_CSR_TMCFG_EN (1ULL << 0)
139#define LOONGARCH_CSR_TMCFG_PERIOD (1ULL << 1)
140#define LOONGARCH_CSR_TMCFG_TIMEVAL (0x3FFFFFFFFFFFULL << 2)
141#define LOONGARCH_CSR_TVAL 0x42
142#define LOONGARCH_CSR_CNTC 0x43
143#define LOONGARCH_CSR_TINTCLR 0x44
148#define LOONGARCH_CSR_TLBREBASE 0x88
149#define LOONGARCH_CSR_TLBRBADV 0x89
150#define LOONGARCH_CSR_TLBRERA 0x8a
151#define LOONGARCH_CSR_TLBRSAVE 0x8b
152#define LOONGARCH_CSR_TLBRELO0 0x8c
153#define LOONGARCH_CSR_TLBRELO1 0x8d
154#define LOONGARCH_CSR_TLBREHI 0x8e
159#define LOONGARCH_CSR_DMWIN0 0x180
160#define LOONGARCH_CSR_DMWIN1 0x181
161#define LOONGARCH_CSR_DMWIN2 0x182
162#define LOONGARCH_CSR_DMWIN3 0x183
170#define LOONGARCH_IOCSR_FEATURES 0x8
171#define IOCSRF_TEMP (1ULL << 0)
172#define IOCSRF_NODECNT (1ULL << 1)
173#define IOCSRF_MSI (1ULL << 2)
174#define IOCSRF_EXTIOI (1ULL << 3)
175#define IOCSRF_CSRIPI (1ULL << 4)
176#define IOCSRF_FREQCSR (1ULL << 5)
177#define IOCSRF_FREQSCALE (1ULL << 6)
178#define IOCSRF_DVFSV1 (1ULL << 7)
179#define IOCSRF_EXTIOI_DECODE (1ULL << 9)
180#define IOCSRF_FLATMODE (1ULL << 10)
181#define IOCSRF_VM (1ULL << 11)
183#define LOONGARCH_IOCSR_VENDOR 0x10
185#define LOONGARCH_IOCSR_CPUNAME 0x20
187#define LOONGARCH_IOCSR_NODECNT 0x408
189#define LOONGARCH_IOCSR_MISC_FUNC 0x420
190#define IOCSR_MISC_FUNC_TIMER_RESET (1ULL << 21)
191#define IOCSR_MISC_FUNC_EXT_IOI_EN (1ULL << 48)
193#define LOONGARCH_IOCSR_CPUTEMP 0x428
198#define LOONGARCH_IOCSR_IPI_STATUS 0x1000
199#define LOONGARCH_IOCSR_IPI_EN 0x1004
200#define LOONGARCH_IOCSR_IPI_SET 0x1008
201#define LOONGARCH_IOCSR_IPI_CLEAR 0x100c
202#define LOONGARCH_IOCSR_MBUF0 0x1020
203#define LOONGARCH_IOCSR_MBUF1 0x1028
204#define LOONGARCH_IOCSR_MBUF2 0x1030
205#define LOONGARCH_IOCSR_MBUF3 0x1038
207#define LOONGARCH_IOCSR_IPI_SEND 0x1040
208#define IOCSR_IPI_SEND_IP_SHIFT 0
209#define IOCSR_IPI_SEND_CPU_SHIFT 16
210#define IOCSR_IPI_SEND_BLOCKING (1ULL << 31)
212#define LOONGARCH_IOCSR_MBUF_SEND 0x1048
213#define IOCSR_MBUF_SEND_BLOCKING (1ULL << 31)
214#define IOCSR_MBUF_SEND_BOX_SHIFT 2
215#define IOCSR_MBUF_SEND_BOX_LO(box) (box << 1)
216#define IOCSR_MBUF_SEND_BOX_HI(box) ((box << 1) + 1)
217#define IOCSR_MBUF_SEND_CPU_SHIFT 16
218#define IOCSR_MBUF_SEND_BUF_SHIFT 32
219#define IOCSR_MBUF_SEND_H32_MASK 0xFFFFFFFF00000000ULL
221#define LOONGARCH_IOCSR_ANY_SEND 0x1158
222#define IOCSR_ANY_SEND_BLOCKING (1ULL << 31)
223#define IOCSR_ANY_SEND_CPU_SHIFT 16
224#define IOCSR_ANY_SEND_MASK_SHIFT 27
225#define IOCSR_ANY_SEND_BUF_SHIFT 32
226#define IOCSR_ANY_SEND_H32_MASK 0xFFFFFFFF00000000ULL
231#define LOONGARCH_IOCSR_TIMER_CFG 0x1060
232#define LOONGARCH_IOCSR_TIMER_TICK 0x1070
233#define IOCSR_TIMER_CFG_RESERVED BIT63
234#define IOCSR_TIMER_CFG_PERIODIC BIT62
235#define IOCSR_TIMER_CFG_EN BIT61
236#define IOCSR_TIMER_MASK 0x0FFFFFFFFFFFFULL
237#define IOCSR_TIMER_INITVAL_RST (0xFFFFULL << 48)
245#define INVTLB_ADDR_GTRUE_OR_ASID 0x6
250#define FPU_CSR_RM 0x300
251#define FPU_CSR_RN 0x000
252#define FPU_CSR_RZ 0x100
253#define FPU_CSR_RU 0x200
254#define FPU_CSR_RD 0x300
256#define DEFAULT_PAGE_SIZE 0x0c
257#define CSR_TLBIDX_SIZE_MASK 0x3f000000
258#define CSR_TLBIDX_PS_SHIFT 24
259#define CSR_TLBIDX_SIZE CSR_TLBIDX_PS_SHIFT
260#define CSR_TLBREHI_PS_SHIFT 0x0
261#define CSR_TLBREHI_PS 0x3f