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 
get_actlr()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 
set_actlr()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 
get_cpacr()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 
set_cpacr()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 
get_dfsr()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 
set_dfsr()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 
get_ifsr()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 
set_ifsr()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 
get_isr()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 
get_cbar()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 
get_ttbr0()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 
set_ttbr0()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 
get_dacr()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 
set_dacr()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 
get_sctlr()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 
set_sctlr()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 
get_mpidr()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 
get_vbar()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 
set_vbar()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 
get_mvbar()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 
set_mvbar()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 
get_cntfrq()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 
set_cntfrq()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 
get_cntp_tval()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 
set_cntp_tval()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 
get_cntp_ctl()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 
set_cntp_ctl()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 
set_tlbiall()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 
set_bpiall()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 
set_iciallu()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 
set_icimvac()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 
set_dccmvac()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 
set_dcimvac()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 
set_dccimvac()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 
get_csselr()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 
set_csselr()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 
get_ccsidr()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 
get_clidr()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 
set_dcisw()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 
set_dccsw()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 
set_dccisw()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 }
294