| ... | ... | @@ -36,6 +36,23 @@ export fn __umoddi3(a: u64, b: u64) -> u64 { |
| 36 | 36 | return r; |
| 37 | 37 | } |
| 38 | 38 | |
| 39 | const AeabiUlDivModResult = extern struct { |
| 40 | quot: u64, |
| 41 | rem: u64, |
| 42 | }; |
| 43 | export fn __aeabi_uldivmod(numerator: u64, denominator: u64) -> AeabiUlDivModResult { |
| 44 | @setDebugSafety(this, is_test); |
| 45 | if (comptime isArmArch()) { |
| 46 | @setGlobalLinkage(__aeabi_uldivmod, builtin.GlobalLinkage.LinkOnce); |
| 47 | var result: AeabiUlDivModResult = undefined; |
| 48 | result.quot = __udivmoddi4(numerator, denominator, &result.rem); |
| 49 | return result; |
| 50 | } |
| 51 | |
| 52 | @setGlobalLinkage(__aeabi_uldivmod, builtin.GlobalLinkage.Internal); |
| 53 | unreachable; |
| 54 | } |
| 55 | |
| 39 | 56 | fn isArmArch() -> bool { |
| 40 | 57 | return switch (builtin.arch) { |
| 41 | 58 | builtin.Arch.armv8_2a, |