File tree 4 files changed +9
-13
lines changed
4 files changed +9
-13
lines changed Original file line number Diff line number Diff line change @@ -289,27 +289,16 @@ mod c {
289
289
"arm/clzdi2.S" ,
290
290
"arm/clzsi2.S" ,
291
291
"arm/divmodsi4.S" ,
292
+ "arm/divsi3.S" ,
292
293
"arm/modsi3.S" ,
293
294
"arm/switch16.S" ,
294
295
"arm/switch32.S" ,
295
296
"arm/switch8.S" ,
296
297
"arm/switchu8.S" ,
297
298
"arm/sync_synchronize.S" ,
298
299
"arm/udivmodsi4.S" ,
300
+ "arm/udivsi3.S" ,
299
301
"arm/umodsi3.S" ,
300
-
301
- // Exclude these two files for now even though we haven't
302
- // translated their implementation into Rust yet (#173).
303
- // They appear... buggy? The `udivsi3` implementation was
304
- // the one that seemed buggy, but the `divsi3` file
305
- // references a symbol from `udivsi3` so we compile them
306
- // both with the Rust versions.
307
- //
308
- // Note that if these are added back they should be removed
309
- // from thumbv6m below.
310
- //
311
- // "arm/divsi3.S",
312
- // "arm/udivsi3.S",
313
302
] ,
314
303
) ;
315
304
@@ -427,12 +416,14 @@ mod c {
427
416
"clzdi2" ,
428
417
"clzsi2" ,
429
418
"divmodsi4" ,
419
+ "divsi3" ,
430
420
"modsi3" ,
431
421
"switch16" ,
432
422
"switch32" ,
433
423
"switch8" ,
434
424
"switchu8" ,
435
425
"udivmodsi4" ,
426
+ "udivsi3" ,
436
427
"umodsi3" ,
437
428
] ,
438
429
) ;
Original file line number Diff line number Diff line change @@ -24,6 +24,7 @@ run() {
24
24
-v ` pwd` :/checkout:ro \
25
25
-v ` rustc --print sysroot` :/rust:ro \
26
26
-w /checkout \
27
+ --init \
27
28
$target \
28
29
sh -c " HOME=/tmp PATH=\$ PATH:/rust/bin ci/run.sh $target "
29
30
}
Original file line number Diff line number Diff line change @@ -57,6 +57,7 @@ impl Divmod for i32 {}
57
57
impl Divmod for i64 { }
58
58
59
59
intrinsics ! {
60
+ #[ use_c_shim_if( all( target_arch = "arm" , not( target_os = "ios" ) , not( thumbv6m) ) ) ]
60
61
#[ arm_aeabi_alias = __aeabi_idiv]
61
62
pub extern "C" fn __divsi3( a: i32 , b: i32 ) -> i32 {
62
63
a. div( b)
Original file line number Diff line number Diff line change @@ -152,6 +152,9 @@ macro_rules! udivmod_inner {
152
152
}
153
153
154
154
intrinsics ! {
155
+ #[ use_c_shim_if( all( target_arch = "arm" ,
156
+ not( target_os = "ios" ) ,
157
+ not( thumbv6m) ) ) ]
155
158
#[ arm_aeabi_alias = __aeabi_uidiv]
156
159
/// Returns `n / d`
157
160
pub extern "C" fn __udivsi3( n: u32 , d: u32 ) -> u32 {
You can’t perform that action at this time.
0 commit comments