File tree 4 files changed +299
-264
lines changed
4 files changed +299
-264
lines changed Original file line number Diff line number Diff line change
1
+ //! ARM compiler specific intrinsics
2
+ //!
3
+ //! # References
4
+ //!
5
+ //! - [ARM Compiler v 6.10 - armclang Reference Guide](https://developer.arm.com/docs/100067/0610)
6
+
7
+ /// This intrinsic inserts a BKPT instruction into the instruction stream generated by the compiler
8
+ ///
9
+ /// It enables you to include a breakpoint instruction in your Rust code
10
+ ///
11
+ /// `val` is a compile-time constant integer whose range is:
12
+ ///
13
+ /// - `0...65535` if you are compiling source as A32 code.
14
+ /// - `0...255` if you are compiling source as T32 code.
15
+ ///
16
+ /// **NOTE** Due compiler limitations this function only supports the range `0...255` in A32 mode.
17
+ // TODO support the extended range `0...65535` when compiling as A32 code (`cfg(not(target_feature =
18
+ // "thumb-mode"))`). T32 mode (`cfg(target_feature = "thumb-mode")`) should continue to support the
19
+ // range `0...255`.
20
+ #[ cfg_attr( test, assert_instr( bkpt) ) ]
21
+ #[ inline( always) ]
22
+ #[ rustc_args_required_const( 0 ) ]
23
+ pub unsafe fn __breakpoint ( val : i32 ) {
24
+ macro_rules! call {
25
+ ( $imm8: expr) => {
26
+ asm!( concat!( "BKPT " , stringify!( $imm8) ) : : : : "volatile" )
27
+ }
28
+ }
29
+
30
+ constify_imm8 ! ( val, call) ;
31
+ }
Original file line number Diff line number Diff line change 7
7
//! [arm_dat]: https://developer.arm.com/technologies/neon/intrinsics
8
8
#![ allow( non_camel_case_types) ]
9
9
10
+ mod armclang;
11
+
12
+ pub use self :: armclang:: * ;
13
+
10
14
#[ cfg( any( target_feature = "mclass" , dox) ) ]
11
15
mod cmsis;
12
16
#[ cfg( any( target_feature = "mclass" , dox) ) ]
Original file line number Diff line number Diff line change 1
1
//! Utility macros.
2
2
3
+ macro_rules! constify_imm8 {
4
+ ( $imm8: expr, $expand: ident) => {
5
+ #[ allow( overflowing_literals) ]
6
+ match ( $imm8) & 0b1111_1111 {
7
+ 0 => $expand!( 0 ) ,
8
+ 1 => $expand!( 1 ) ,
9
+ 2 => $expand!( 2 ) ,
10
+ 3 => $expand!( 3 ) ,
11
+ 4 => $expand!( 4 ) ,
12
+ 5 => $expand!( 5 ) ,
13
+ 6 => $expand!( 6 ) ,
14
+ 7 => $expand!( 7 ) ,
15
+ 8 => $expand!( 8 ) ,
16
+ 9 => $expand!( 9 ) ,
17
+ 10 => $expand!( 10 ) ,
18
+ 11 => $expand!( 11 ) ,
19
+ 12 => $expand!( 12 ) ,
20
+ 13 => $expand!( 13 ) ,
21
+ 14 => $expand!( 14 ) ,
22
+ 15 => $expand!( 15 ) ,
23
+ 16 => $expand!( 16 ) ,
24
+ 17 => $expand!( 17 ) ,
25
+ 18 => $expand!( 18 ) ,
26
+ 19 => $expand!( 19 ) ,
27
+ 20 => $expand!( 20 ) ,
28
+ 21 => $expand!( 21 ) ,
29
+ 22 => $expand!( 22 ) ,
30
+ 23 => $expand!( 23 ) ,
31
+ 24 => $expand!( 24 ) ,
32
+ 25 => $expand!( 25 ) ,
33
+ 26 => $expand!( 26 ) ,
34
+ 27 => $expand!( 27 ) ,
35
+ 28 => $expand!( 28 ) ,
36
+ 29 => $expand!( 29 ) ,
37
+ 30 => $expand!( 30 ) ,
38
+ 31 => $expand!( 31 ) ,
39
+ 32 => $expand!( 32 ) ,
40
+ 33 => $expand!( 33 ) ,
41
+ 34 => $expand!( 34 ) ,
42
+ 35 => $expand!( 35 ) ,
43
+ 36 => $expand!( 36 ) ,
44
+ 37 => $expand!( 37 ) ,
45
+ 38 => $expand!( 38 ) ,
46
+ 39 => $expand!( 39 ) ,
47
+ 40 => $expand!( 40 ) ,
48
+ 41 => $expand!( 41 ) ,
49
+ 42 => $expand!( 42 ) ,
50
+ 43 => $expand!( 43 ) ,
51
+ 44 => $expand!( 44 ) ,
52
+ 45 => $expand!( 45 ) ,
53
+ 46 => $expand!( 46 ) ,
54
+ 47 => $expand!( 47 ) ,
55
+ 48 => $expand!( 48 ) ,
56
+ 49 => $expand!( 49 ) ,
57
+ 50 => $expand!( 50 ) ,
58
+ 51 => $expand!( 51 ) ,
59
+ 52 => $expand!( 52 ) ,
60
+ 53 => $expand!( 53 ) ,
61
+ 54 => $expand!( 54 ) ,
62
+ 55 => $expand!( 55 ) ,
63
+ 56 => $expand!( 56 ) ,
64
+ 57 => $expand!( 57 ) ,
65
+ 58 => $expand!( 58 ) ,
66
+ 59 => $expand!( 59 ) ,
67
+ 60 => $expand!( 60 ) ,
68
+ 61 => $expand!( 61 ) ,
69
+ 62 => $expand!( 62 ) ,
70
+ 63 => $expand!( 63 ) ,
71
+ 64 => $expand!( 64 ) ,
72
+ 65 => $expand!( 65 ) ,
73
+ 66 => $expand!( 66 ) ,
74
+ 67 => $expand!( 67 ) ,
75
+ 68 => $expand!( 68 ) ,
76
+ 69 => $expand!( 69 ) ,
77
+ 70 => $expand!( 70 ) ,
78
+ 71 => $expand!( 71 ) ,
79
+ 72 => $expand!( 72 ) ,
80
+ 73 => $expand!( 73 ) ,
81
+ 74 => $expand!( 74 ) ,
82
+ 75 => $expand!( 75 ) ,
83
+ 76 => $expand!( 76 ) ,
84
+ 77 => $expand!( 77 ) ,
85
+ 78 => $expand!( 78 ) ,
86
+ 79 => $expand!( 79 ) ,
87
+ 80 => $expand!( 80 ) ,
88
+ 81 => $expand!( 81 ) ,
89
+ 82 => $expand!( 82 ) ,
90
+ 83 => $expand!( 83 ) ,
91
+ 84 => $expand!( 84 ) ,
92
+ 85 => $expand!( 85 ) ,
93
+ 86 => $expand!( 86 ) ,
94
+ 87 => $expand!( 87 ) ,
95
+ 88 => $expand!( 88 ) ,
96
+ 89 => $expand!( 89 ) ,
97
+ 90 => $expand!( 90 ) ,
98
+ 91 => $expand!( 91 ) ,
99
+ 92 => $expand!( 92 ) ,
100
+ 93 => $expand!( 93 ) ,
101
+ 94 => $expand!( 94 ) ,
102
+ 95 => $expand!( 95 ) ,
103
+ 96 => $expand!( 96 ) ,
104
+ 97 => $expand!( 97 ) ,
105
+ 98 => $expand!( 98 ) ,
106
+ 99 => $expand!( 99 ) ,
107
+ 100 => $expand!( 100 ) ,
108
+ 101 => $expand!( 101 ) ,
109
+ 102 => $expand!( 102 ) ,
110
+ 103 => $expand!( 103 ) ,
111
+ 104 => $expand!( 104 ) ,
112
+ 105 => $expand!( 105 ) ,
113
+ 106 => $expand!( 106 ) ,
114
+ 107 => $expand!( 107 ) ,
115
+ 108 => $expand!( 108 ) ,
116
+ 109 => $expand!( 109 ) ,
117
+ 110 => $expand!( 110 ) ,
118
+ 111 => $expand!( 111 ) ,
119
+ 112 => $expand!( 112 ) ,
120
+ 113 => $expand!( 113 ) ,
121
+ 114 => $expand!( 114 ) ,
122
+ 115 => $expand!( 115 ) ,
123
+ 116 => $expand!( 116 ) ,
124
+ 117 => $expand!( 117 ) ,
125
+ 118 => $expand!( 118 ) ,
126
+ 119 => $expand!( 119 ) ,
127
+ 120 => $expand!( 120 ) ,
128
+ 121 => $expand!( 121 ) ,
129
+ 122 => $expand!( 122 ) ,
130
+ 123 => $expand!( 123 ) ,
131
+ 124 => $expand!( 124 ) ,
132
+ 125 => $expand!( 125 ) ,
133
+ 126 => $expand!( 126 ) ,
134
+ 127 => $expand!( 127 ) ,
135
+ 128 => $expand!( 128 ) ,
136
+ 129 => $expand!( 129 ) ,
137
+ 130 => $expand!( 130 ) ,
138
+ 131 => $expand!( 131 ) ,
139
+ 132 => $expand!( 132 ) ,
140
+ 133 => $expand!( 133 ) ,
141
+ 134 => $expand!( 134 ) ,
142
+ 135 => $expand!( 135 ) ,
143
+ 136 => $expand!( 136 ) ,
144
+ 137 => $expand!( 137 ) ,
145
+ 138 => $expand!( 138 ) ,
146
+ 139 => $expand!( 139 ) ,
147
+ 140 => $expand!( 140 ) ,
148
+ 141 => $expand!( 141 ) ,
149
+ 142 => $expand!( 142 ) ,
150
+ 143 => $expand!( 143 ) ,
151
+ 144 => $expand!( 144 ) ,
152
+ 145 => $expand!( 145 ) ,
153
+ 146 => $expand!( 146 ) ,
154
+ 147 => $expand!( 147 ) ,
155
+ 148 => $expand!( 148 ) ,
156
+ 149 => $expand!( 149 ) ,
157
+ 150 => $expand!( 150 ) ,
158
+ 151 => $expand!( 151 ) ,
159
+ 152 => $expand!( 152 ) ,
160
+ 153 => $expand!( 153 ) ,
161
+ 154 => $expand!( 154 ) ,
162
+ 155 => $expand!( 155 ) ,
163
+ 156 => $expand!( 156 ) ,
164
+ 157 => $expand!( 157 ) ,
165
+ 158 => $expand!( 158 ) ,
166
+ 159 => $expand!( 159 ) ,
167
+ 160 => $expand!( 160 ) ,
168
+ 161 => $expand!( 161 ) ,
169
+ 162 => $expand!( 162 ) ,
170
+ 163 => $expand!( 163 ) ,
171
+ 164 => $expand!( 164 ) ,
172
+ 165 => $expand!( 165 ) ,
173
+ 166 => $expand!( 166 ) ,
174
+ 167 => $expand!( 167 ) ,
175
+ 168 => $expand!( 168 ) ,
176
+ 169 => $expand!( 169 ) ,
177
+ 170 => $expand!( 170 ) ,
178
+ 171 => $expand!( 171 ) ,
179
+ 172 => $expand!( 172 ) ,
180
+ 173 => $expand!( 173 ) ,
181
+ 174 => $expand!( 174 ) ,
182
+ 175 => $expand!( 175 ) ,
183
+ 176 => $expand!( 176 ) ,
184
+ 177 => $expand!( 177 ) ,
185
+ 178 => $expand!( 178 ) ,
186
+ 179 => $expand!( 179 ) ,
187
+ 180 => $expand!( 180 ) ,
188
+ 181 => $expand!( 181 ) ,
189
+ 182 => $expand!( 182 ) ,
190
+ 183 => $expand!( 183 ) ,
191
+ 184 => $expand!( 184 ) ,
192
+ 185 => $expand!( 185 ) ,
193
+ 186 => $expand!( 186 ) ,
194
+ 187 => $expand!( 187 ) ,
195
+ 188 => $expand!( 188 ) ,
196
+ 189 => $expand!( 189 ) ,
197
+ 190 => $expand!( 190 ) ,
198
+ 191 => $expand!( 191 ) ,
199
+ 192 => $expand!( 192 ) ,
200
+ 193 => $expand!( 193 ) ,
201
+ 194 => $expand!( 194 ) ,
202
+ 195 => $expand!( 195 ) ,
203
+ 196 => $expand!( 196 ) ,
204
+ 197 => $expand!( 197 ) ,
205
+ 198 => $expand!( 198 ) ,
206
+ 199 => $expand!( 199 ) ,
207
+ 200 => $expand!( 200 ) ,
208
+ 201 => $expand!( 201 ) ,
209
+ 202 => $expand!( 202 ) ,
210
+ 203 => $expand!( 203 ) ,
211
+ 204 => $expand!( 204 ) ,
212
+ 205 => $expand!( 205 ) ,
213
+ 206 => $expand!( 206 ) ,
214
+ 207 => $expand!( 207 ) ,
215
+ 208 => $expand!( 208 ) ,
216
+ 209 => $expand!( 209 ) ,
217
+ 210 => $expand!( 210 ) ,
218
+ 211 => $expand!( 211 ) ,
219
+ 212 => $expand!( 212 ) ,
220
+ 213 => $expand!( 213 ) ,
221
+ 214 => $expand!( 214 ) ,
222
+ 215 => $expand!( 215 ) ,
223
+ 216 => $expand!( 216 ) ,
224
+ 217 => $expand!( 217 ) ,
225
+ 218 => $expand!( 218 ) ,
226
+ 219 => $expand!( 219 ) ,
227
+ 220 => $expand!( 220 ) ,
228
+ 221 => $expand!( 221 ) ,
229
+ 222 => $expand!( 222 ) ,
230
+ 223 => $expand!( 223 ) ,
231
+ 224 => $expand!( 224 ) ,
232
+ 225 => $expand!( 225 ) ,
233
+ 226 => $expand!( 226 ) ,
234
+ 227 => $expand!( 227 ) ,
235
+ 228 => $expand!( 228 ) ,
236
+ 229 => $expand!( 229 ) ,
237
+ 230 => $expand!( 230 ) ,
238
+ 231 => $expand!( 231 ) ,
239
+ 232 => $expand!( 232 ) ,
240
+ 233 => $expand!( 233 ) ,
241
+ 234 => $expand!( 234 ) ,
242
+ 235 => $expand!( 235 ) ,
243
+ 236 => $expand!( 236 ) ,
244
+ 237 => $expand!( 237 ) ,
245
+ 238 => $expand!( 238 ) ,
246
+ 239 => $expand!( 239 ) ,
247
+ 240 => $expand!( 240 ) ,
248
+ 241 => $expand!( 241 ) ,
249
+ 242 => $expand!( 242 ) ,
250
+ 243 => $expand!( 243 ) ,
251
+ 244 => $expand!( 244 ) ,
252
+ 245 => $expand!( 245 ) ,
253
+ 246 => $expand!( 246 ) ,
254
+ 247 => $expand!( 247 ) ,
255
+ 248 => $expand!( 248 ) ,
256
+ 249 => $expand!( 249 ) ,
257
+ 250 => $expand!( 250 ) ,
258
+ 251 => $expand!( 251 ) ,
259
+ 252 => $expand!( 252 ) ,
260
+ 253 => $expand!( 253 ) ,
261
+ 254 => $expand!( 254 ) ,
262
+ _ => $expand!( 255 ) ,
263
+ }
264
+ } ;
265
+ }
266
+
3
267
#[ allow( unused) ]
4
268
macro_rules! types {
5
269
( $(
You can’t perform that action at this time.
0 commit comments