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