]> begriffs open source - cmsis/blob - CMSIS/Core/Test/src/cp15.c
Fix typos in headers
[cmsis] / CMSIS / Core / Test / src / cp15.c
1 // REQUIRES: armv7a
2 // RUN: %cc% %ccflags% %ccout% %T/%basename_t.o %s; llvm-objdump --mcpu=%mcpu% -d %T/%basename_t.o | FileCheck --allow-unused-prefixes --check-prefixes %prefixes% %s
3
4 #include "cmsis_compiler.h"
5
6 static volatile uint32_t u32;
7
8 void get_actlr() {
9     // CHECK-LABEL: <get_actlr>:
10     // CHECK: mrc p15, #0x0, {{r[0-9]+}}, c1, c0, #0x1
11     volatile uint32_t result = __get_ACTLR();
12     // CHECK: {{(bx lr)|(pop {.*pc})}}
13 }
14
15 void set_actlr() {
16     // CHECK-LABEL: <set_actlr>:
17     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c1, c0, #0x1
18     __set_ACTLR(u32);
19     // CHECK: {{(bx lr)|(pop {.*pc})}}
20 }
21
22 void get_cpacr() {
23     // CHECK-LABEL: <get_cpacr>:
24     // CHECK: mrc p15, #0x0, {{r[0-9]+}}, c1, c0, #0x2
25     volatile uint32_t result = __get_CPACR();
26     // CHECK: {{(bx lr)|(pop {.*pc})}}
27 }
28
29 void set_cpacr() {
30     // CHECK-LABEL: <set_cpacr>:
31     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c1, c0, #0x2
32     __set_CPACR(u32);
33     // CHECK: {{(bx lr)|(pop {.*pc})}}
34 }
35
36 void get_dfsr() {
37     // CHECK-LABEL: <get_dfsr>:
38     // CHECK: mrc p15, #0x0, {{r[0-9]+}}, c5, c0, #0x0
39     volatile uint32_t result = __get_DFSR();
40     // CHECK: {{(bx lr)|(pop {.*pc})}}
41 }
42
43 void set_dfsr() {
44     // CHECK-LABEL: <set_dfsr>:
45     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c5, c0, #0x0
46     __set_DFSR(u32);
47     // CHECK: {{(bx lr)|(pop {.*pc})}}
48 }
49
50 void get_ifsr() {
51     // CHECK-LABEL: <get_ifsr>:
52     // CHECK: mrc p15, #0x0, {{r[0-9]+}}, c5, c0, #0x1
53     volatile uint32_t result = __get_IFSR();
54     // CHECK: {{(bx lr)|(pop {.*pc})}}
55 }
56
57 void set_ifsr() {
58     // CHECK-LABEL: <set_ifsr>:
59     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c5, c0, #0x1
60     __set_IFSR(u32);
61     // CHECK: {{(bx lr)|(pop {.*pc})}}
62 }
63
64 void get_isr() {
65     // CHECK-LABEL: <get_isr>:
66     // CHECK: mrc p15, #0x0, {{r[0-9]+}}, c12, c1, #0x0
67     volatile uint32_t result = __get_ISR();
68     // CHECK: {{(bx lr)|(pop {.*pc})}}
69 }
70
71 void get_cbar() {
72     // CHECK-LABEL: <get_cbar>:
73     // CHECK: mrc p15, #0x4, {{r[0-9]+}}, c15, c0, #0x0
74     volatile uint32_t result = __get_CBAR();
75     // CHECK: {{(bx lr)|(pop {.*pc})}}
76 }
77
78 void get_ttbr0() {
79     // CHECK-LABEL: <get_ttbr0>:
80     // CHECK: mrc p15, #0x0, {{r[0-9]+}}, c2, c0, #0x0
81     volatile uint32_t result = __get_TTBR0();
82     // CHECK: {{(bx lr)|(pop {.*pc})}}
83 }
84
85 void set_ttbr0() {
86     // CHECK-LABEL: <set_ttbr0>:
87     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c2, c0, #0x0
88     __set_TTBR0(u32);
89     // CHECK: {{(bx lr)|(pop {.*pc})}}
90 }
91
92 void get_dacr() {
93     // CHECK-LABEL: <get_dacr>:
94     // CHECK: mrc p15, #0x0, {{r[0-9]+}}, c3, c0, #0x0
95     volatile uint32_t result = __get_DACR();
96     // CHECK: {{(bx lr)|(pop {.*pc})}}
97 }
98
99 void set_dacr() {
100     // CHECK-LABEL: <set_dacr>:
101     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c3, c0, #0x0
102     __set_DACR(u32);
103     // CHECK: {{(bx lr)|(pop {.*pc})}}
104 }
105
106 void get_sctlr() {
107     // CHECK-LABEL: <get_sctlr>:
108     // CHECK: mrc p15, #0x0, {{r[0-9]+}}, c1, c0, #0x0
109     volatile uint32_t result = __get_SCTLR();
110     // CHECK: {{(bx lr)|(pop {.*pc})}}
111 }
112
113 void set_sctlr() {
114     // CHECK-LABEL: <set_sctlr>:
115     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c1, c0, #0x0
116     __set_SCTLR(u32);
117     // CHECK: {{(bx lr)|(pop {.*pc})}}
118 }
119
120 void get_mpidr() {
121     // CHECK-LABEL: <get_mpidr>:
122     // CHECK: mrc p15, #0x0, {{r[0-9]+}}, c0, c0, #0x5
123     volatile uint32_t result = __get_MPIDR();
124     // CHECK: {{(bx lr)|(pop {.*pc})}}
125 }
126
127 void get_vbar() {
128     // CHECK-LABEL: <get_vbar>:
129     // CHECK: mrc p15, #0x0, {{r[0-9]+}}, c12, c0, #0x0
130     volatile uint32_t result = __get_VBAR();
131     // CHECK: {{(bx lr)|(pop {.*pc})}}
132 }
133
134 void set_vbar() {
135     // CHECK-LABEL: <set_vbar>:
136     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c12, c0, #0x0
137     __set_VBAR(u32);
138     // CHECK: {{(bx lr)|(pop {.*pc})}}
139 }
140
141 void get_mvbar() {
142     // CHECK-LABEL: <get_mvbar>:
143     // CHECK: mrc p15, #0x0, {{r[0-9]+}}, c12, c0, #0x1
144     volatile uint32_t result = __get_MVBAR();
145     // CHECK: {{(bx lr)|(pop {.*pc})}}
146 }
147
148 void set_mvbar() {
149     // CHECK-LABEL: <set_mvbar>:
150     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c12, c0, #0x1
151     __set_MVBAR(u32);
152     // CHECK: {{(bx lr)|(pop {.*pc})}}
153 }
154
155 void get_cntfrq() {
156     // CHECK-LABEL: <get_cntfrq>:
157     // CHECK: mrc p15, #0x0, {{r[0-9]+}}, c14, c0, #0x0
158     volatile uint32_t result = __get_CNTFRQ();
159     // CHECK: {{(bx lr)|(pop {.*pc})}}
160 }
161
162 void set_cntfrq() {
163     // CHECK-LABEL: <set_cntfrq>:
164     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c14, c0, #0x0
165     __set_CNTFRQ(u32);
166     // CHECK: {{(bx lr)|(pop {.*pc})}}
167 }
168
169 void get_cntp_tval() {
170     // CHECK-LABEL: <get_cntp_tval>:
171     // CHECK: mrc p15, #0x0, {{r[0-9]+}}, c14, c2, #0x0
172     volatile uint32_t result = __get_CNTP_TVAL();
173     // CHECK: {{(bx lr)|(pop {.*pc})}}
174 }
175
176 void set_cntp_tval() {
177     // CHECK-LABEL: <set_cntp_tval>:
178     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c14, c2, #0x0
179     __set_CNTP_TVAL(u32);
180     // CHECK: {{(bx lr)|(pop {.*pc})}}
181 }
182
183 void get_cntp_ctl() {
184     // CHECK-LABEL: <get_cntp_ctl>:
185     // CHECK: mrc p15, #0x0, {{r[0-9]+}}, c14, c2, #0x1
186     volatile uint32_t result = __get_CNTP_CTL();
187     // CHECK: {{(bx lr)|(pop {.*pc})}}
188 }
189
190 void set_cntp_ctl() {
191     // CHECK-LABEL: <set_cntp_ctl>:
192     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c14, c2, #0x1
193     __set_CNTP_CTL(u32);
194     // CHECK: {{(bx lr)|(pop {.*pc})}}
195 }
196
197 void set_tlbiall() {
198     // CHECK-LABEL: <set_tlbiall>:
199     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c8, c7, #0x0
200     __set_TLBIALL(u32);
201     // CHECK: {{(bx lr)|(pop {.*pc})}}
202 }
203
204 void set_bpiall() {
205     // CHECK-LABEL: <set_bpiall>:
206     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c5, #0x6
207     __set_BPIALL(u32);
208     // CHECK: {{(bx lr)|(pop {.*pc})}}
209 }
210
211 void set_iciallu() {
212     // CHECK-LABEL: <set_iciallu>:
213     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c5, #0x0
214     __set_ICIALLU(u32);
215     // CHECK: {{(bx lr)|(pop {.*pc})}}
216 }
217
218 void set_icimvac() {
219     // CHECK-LABEL: <set_icimvac>:
220     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c5, #0x1
221     __set_ICIMVAC(u32);
222     // CHECK: {{(bx lr)|(pop {.*pc})}}
223 }
224
225 void set_dccmvac() {
226     // CHECK-LABEL: <set_dccmvac>:
227     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c10, #0x1
228     __set_DCCMVAC(u32);
229     // CHECK: {{(bx lr)|(pop {.*pc})}}
230 }
231
232 void set_dcimvac() {
233     // CHECK-LABEL: <set_dcimvac>:
234     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c6, #0x1
235     __set_DCIMVAC(u32);
236     // CHECK: {{(bx lr)|(pop {.*pc})}}
237 }
238
239 void set_dccimvac() {
240     // CHECK-LABEL: <set_dccimvac>:
241     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c14, #0x1
242     __set_DCCIMVAC(u32);
243     // CHECK: {{(bx lr)|(pop {.*pc})}}
244 }
245
246 void get_csselr() {
247     // CHECK-LABEL: <get_csselr>:
248     // CHECK: mrc p15, #0x2, {{r[0-9]+}}, c0, c0, #0x0
249     volatile uint32_t result = __get_CSSELR();
250     // CHECK: {{(bx lr)|(pop {.*pc})}}
251 }
252
253 void set_csselr() {
254     // CHECK-LABEL: <set_csselr>:
255     // CHECK: mcr p15, #0x2, {{r[0-9]+}}, c0, c0, #0x0
256     __set_CSSELR(u32);
257     // CHECK: {{(bx lr)|(pop {.*pc})}}
258 }
259
260 void get_ccsidr() {
261     // CHECK-LABEL: <get_ccsidr>:
262     // CHECK: mrc p15, #0x1, {{r[0-9]+}}, c0, c0, #0x0
263     volatile uint32_t result = __get_CCSIDR();
264     // CHECK: {{(bx lr)|(pop {.*pc})}}
265 }
266
267 void get_clidr() {
268     // CHECK-LABEL: <get_clidr>:
269     // CHECK: mrc p15, #0x1, {{r[0-9]+}}, c0, c0, #0x1
270     volatile uint32_t result = __get_CLIDR();
271     // CHECK: {{(bx lr)|(pop {.*pc})}}
272 }
273
274 void set_dcisw() {
275     // CHECK-LABEL: <set_dcisw>:
276     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c6, #0x2
277     __set_DCISW(u32);
278     // CHECK: {{(bx lr)|(pop {.*pc})}}
279 }
280
281 void set_dccsw() {
282     // CHECK-LABEL: <set_dccsw>:
283     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c10, #0x2
284     __set_DCCSW(u32);
285     // CHECK: {{(bx lr)|(pop {.*pc})}}
286 }
287
288 void set_dccisw() {
289     // CHECK-LABEL: <set_dccisw>:
290     // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c14, #0x2
291     __set_DCCISW(u32);
292     // CHECK: {{(bx lr)|(pop {.*pc})}}
293 }