@@ -99,7 +99,7 @@ mod tests {
99
99
use qc:: { U32 , U64 } ;
100
100
101
101
check ! {
102
- fn __divdi3( f: extern fn ( i64 , i64 ) -> i64 , n: U64 , d: U64 ) -> Option <i64 > {
102
+ fn __divdi3( f: extern "C" fn ( i64 , i64 ) -> i64 , n: U64 , d: U64 ) -> Option <i64 > {
103
103
let ( n, d) = ( n. 0 as i64 , d. 0 as i64 ) ;
104
104
if d == 0 {
105
105
None
@@ -108,7 +108,7 @@ mod tests {
108
108
}
109
109
}
110
110
111
- fn __moddi3( f: extern fn ( i64 , i64 ) -> i64 , n: U64 , d: U64 ) -> Option <i64 > {
111
+ fn __moddi3( f: extern "C" fn ( i64 , i64 ) -> i64 , n: U64 , d: U64 ) -> Option <i64 > {
112
112
let ( n, d) = ( n. 0 as i64 , d. 0 as i64 ) ;
113
113
if d == 0 {
114
114
None
@@ -117,7 +117,8 @@ mod tests {
117
117
}
118
118
}
119
119
120
- fn __divmoddi4( f: extern fn ( i64 , i64 , & mut i64 ) -> i64 ,
120
+ #[ cfg( target_arch = "arm" ) ]
121
+ fn __divmoddi4( f: extern "aapcs" fn ( i64 , i64 , & mut i64 ) -> i64 ,
121
122
n: U64 ,
122
123
d: U64 ) -> Option <( i64 , i64 ) > {
123
124
let ( n, d) = ( n. 0 as i64 , d. 0 as i64 ) ;
@@ -130,7 +131,21 @@ mod tests {
130
131
}
131
132
}
132
133
133
- fn __divsi3( f: extern fn ( i32 , i32 ) -> i32 ,
134
+ #[ cfg( not( target_arch = "arm" ) ) ]
135
+ fn __divmoddi4( f: extern "C" fn ( i64 , i64 , & mut i64 ) -> i64 ,
136
+ n: U64 ,
137
+ d: U64 ) -> Option <( i64 , i64 ) > {
138
+ let ( n, d) = ( n. 0 as i64 , d. 0 as i64 ) ;
139
+ if d == 0 {
140
+ None
141
+ } else {
142
+ let mut r = 0 ;
143
+ let q = f( n, d, & mut r) ;
144
+ Some ( ( q, r) )
145
+ }
146
+ }
147
+
148
+ fn __divsi3( f: extern "C" fn ( i32 , i32 ) -> i32 ,
134
149
n: U32 ,
135
150
d: U32 ) -> Option <i32 > {
136
151
let ( n, d) = ( n. 0 as i32 , d. 0 as i32 ) ;
@@ -141,7 +156,7 @@ mod tests {
141
156
}
142
157
}
143
158
144
- fn __modsi3( f: extern fn ( i32 , i32 ) -> i32 ,
159
+ fn __modsi3( f: extern "C" fn ( i32 , i32 ) -> i32 ,
145
160
n: U32 ,
146
161
d: U32 ) -> Option <i32 > {
147
162
let ( n, d) = ( n. 0 as i32 , d. 0 as i32 ) ;
@@ -152,7 +167,7 @@ mod tests {
152
167
}
153
168
}
154
169
155
- fn __divmodsi4( f: extern fn ( i32 , i32 , & mut i32 ) -> i32 ,
170
+ fn __divmodsi4( f: extern "C" fn ( i32 , i32 , & mut i32 ) -> i32 ,
156
171
n: U32 ,
157
172
d: U32 ) -> Option <( i32 , i32 ) > {
158
173
let ( n, d) = ( n. 0 as i32 , d. 0 as i32 ) ;
@@ -176,7 +191,7 @@ mod tests_i128 {
176
191
use qc:: U128 ;
177
192
check ! {
178
193
179
- fn __divti3( f: extern fn ( i128 , i128 ) -> i128 , n: U128 , d: U128 ) -> Option <i128 > {
194
+ fn __divti3( f: extern "C" fn ( i128 , i128 ) -> i128 , n: U128 , d: U128 ) -> Option <i128 > {
180
195
let ( n, d) = ( n. 0 as i128 , d. 0 as i128 ) ;
181
196
if d == 0 {
182
197
None
@@ -185,7 +200,7 @@ mod tests_i128 {
185
200
}
186
201
}
187
202
188
- fn __modti3( f: extern fn ( i128 , i128 ) -> i128 , n: U128 , d: U128 ) -> Option <i128 > {
203
+ fn __modti3( f: extern "C" fn ( i128 , i128 ) -> i128 , n: U128 , d: U128 ) -> Option <i128 > {
189
204
let ( n, d) = ( n. 0 as i128 , d. 0 as i128 ) ;
190
205
if d == 0 {
191
206
None
0 commit comments