2 // RUN: %cc% %ccflags% %ccout% %s.o %s; llvm-objdump --mcpu=%mcpu% -d %s.o | FileCheck --allow-unused-prefixes --check-prefixes %prefixes% %s
4 #include "cmsis_compiler.h"
6 static volatile uint32_t u32;
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})}}
16 // CHECK-LABEL: <set_actlr>:
17 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c1, c0, #0x1
19 // CHECK: {{(bx lr)|(pop {.*pc})}}
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})}}
30 // CHECK-LABEL: <set_cpacr>:
31 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c1, c0, #0x2
33 // CHECK: {{(bx lr)|(pop {.*pc})}}
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})}}
44 // CHECK-LABEL: <set_dfsr>:
45 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c5, c0, #0x0
47 // CHECK: {{(bx lr)|(pop {.*pc})}}
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})}}
58 // CHECK-LABEL: <set_ifsr>:
59 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c5, c0, #0x1
61 // CHECK: {{(bx lr)|(pop {.*pc})}}
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})}}
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})}}
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})}}
86 // CHECK-LABEL: <set_ttbr0>:
87 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c2, c0, #0x0
89 // CHECK: {{(bx lr)|(pop {.*pc})}}
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})}}
100 // CHECK-LABEL: <set_dacr>:
101 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c3, c0, #0x0
103 // CHECK: {{(bx lr)|(pop {.*pc})}}
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})}}
114 // CHECK-LABEL: <set_sctlr>:
115 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c1, c0, #0x0
117 // CHECK: {{(bx lr)|(pop {.*pc})}}
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})}}
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})}}
135 // CHECK-LABEL: <set_vbar>:
136 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c12, c0, #0x0
138 // CHECK: {{(bx lr)|(pop {.*pc})}}
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})}}
149 // CHECK-LABEL: <set_mvbar>:
150 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c12, c0, #0x1
152 // CHECK: {{(bx lr)|(pop {.*pc})}}
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})}}
163 // CHECK-LABEL: <set_cntfrq>:
164 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c14, c0, #0x0
166 // CHECK: {{(bx lr)|(pop {.*pc})}}
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})}}
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})}}
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})}}
190 void set_cntp_ctl() {
191 // CHECK-LABEL: <set_cntp_ctl>:
192 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c14, c2, #0x1
194 // CHECK: {{(bx lr)|(pop {.*pc})}}
198 // CHECK-LABEL: <set_tlbiall>:
199 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c8, c7, #0x0
201 // CHECK: {{(bx lr)|(pop {.*pc})}}
205 // CHECK-LABEL: <set_bpiall>:
206 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c5, #0x6
208 // CHECK: {{(bx lr)|(pop {.*pc})}}
212 // CHECK-LABEL: <set_iciallu>:
213 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c5, #0x0
215 // CHECK: {{(bx lr)|(pop {.*pc})}}
219 // CHECK-LABEL: <set_icimvac>:
220 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c5, #0x1
222 // CHECK: {{(bx lr)|(pop {.*pc})}}
226 // CHECK-LABEL: <set_dccmvac>:
227 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c10, #0x1
229 // CHECK: {{(bx lr)|(pop {.*pc})}}
233 // CHECK-LABEL: <set_dcimvac>:
234 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c6, #0x1
236 // CHECK: {{(bx lr)|(pop {.*pc})}}
239 void set_dccimvac() {
240 // CHECK-LABEL: <set_dccimvac>:
241 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c14, #0x1
243 // CHECK: {{(bx lr)|(pop {.*pc})}}
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})}}
254 // CHECK-LABEL: <set_csselr>:
255 // CHECK: mcr p15, #0x2, {{r[0-9]+}}, c0, c0, #0x0
257 // CHECK: {{(bx lr)|(pop {.*pc})}}
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})}}
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})}}
275 // CHECK-LABEL: <set_dcisw>:
276 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c6, #0x2
278 // CHECK: {{(bx lr)|(pop {.*pc})}}
282 // CHECK-LABEL: <set_dccsw>:
283 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c10, #0x2
285 // CHECK: {{(bx lr)|(pop {.*pc})}}
289 // CHECK-LABEL: <set_dccisw>:
290 // CHECK: mcr p15, #0x0, {{r[0-9]+}}, c7, c14, #0x2
292 // CHECK: {{(bx lr)|(pop {.*pc})}}