| ... | @@ -59,7 +59,7 @@ comptime { | ... | @@ -59,7 +59,7 @@ comptime { |
| 59 | @export("__umoddi3", __umoddi3, linkage); | 59 | @export("__umoddi3", __umoddi3, linkage); |
| 60 | @export("__udivmodsi4", __udivmodsi4, linkage); | 60 | @export("__udivmodsi4", __udivmodsi4, linkage); |
| 61 | | 61 | |
| 62 | if (isArmArch()) { | 62 | if (is_arm_arch and !is_arm_64) { |
| 63 | @export("__aeabi_uldivmod", __aeabi_uldivmod, linkage); | 63 | @export("__aeabi_uldivmod", __aeabi_uldivmod, linkage); |
| 64 | @export("__aeabi_uidivmod", __aeabi_uidivmod, linkage); | 64 | @export("__aeabi_uidivmod", __aeabi_uidivmod, linkage); |
| 65 | @export("__aeabi_uidiv", __udivsi3, linkage); | 65 | @export("__aeabi_uidiv", __udivsi3, linkage); |
| ... | @@ -149,68 +149,85 @@ extern fn __aeabi_uldivmod(numerator: u64, denominator: u64) AeabiUlDivModResult | ... | @@ -149,68 +149,85 @@ extern fn __aeabi_uldivmod(numerator: u64, denominator: u64) AeabiUlDivModResult |
| 149 | return result; | 149 | return result; |
| 150 | } | 150 | } |
| 151 | | 151 | |
| 152 | fn isArmArch() bool { | 152 | const is_arm_64 = switch (builtin.arch) { |
| 153 | return switch (builtin.arch) { | 153 | builtin.Arch.aarch64v8_3a, |
| 154 | builtin.Arch.armv8_3a, | 154 | builtin.Arch.aarch64v8_2a, |
| 155 | builtin.Arch.armv8_2a, | 155 | builtin.Arch.aarch64v8_1a, |
| 156 | builtin.Arch.armv8_1a, | 156 | builtin.Arch.aarch64v8, |
| 157 | builtin.Arch.armv8, | 157 | builtin.Arch.aarch64v8r, |
| 158 | builtin.Arch.armv8r, | 158 | builtin.Arch.aarch64v8m_baseline, |
| 159 | builtin.Arch.armv8m_baseline, | 159 | builtin.Arch.aarch64v8m_mainline, |
| 160 | builtin.Arch.armv8m_mainline, | 160 | builtin.Arch.aarch64_bev8_3a, |
| 161 | builtin.Arch.armv7, | 161 | builtin.Arch.aarch64_bev8_2a, |
| 162 | builtin.Arch.armv7em, | 162 | builtin.Arch.aarch64_bev8_1a, |
| 163 | builtin.Arch.armv7m, | 163 | builtin.Arch.aarch64_bev8, |
| 164 | builtin.Arch.armv7s, | 164 | builtin.Arch.aarch64_bev8r, |
| 165 | builtin.Arch.armv7k, | 165 | builtin.Arch.aarch64_bev8m_baseline, |
| 166 | builtin.Arch.armv7ve, | 166 | builtin.Arch.aarch64_bev8m_mainline, |
| 167 | builtin.Arch.armv6, | 167 | => true, |
| 168 | builtin.Arch.armv6m, | 168 | else => false, |
| 169 | builtin.Arch.armv6k, | 169 | }; |
| 170 | builtin.Arch.armv6t2, | 170 | |
| 171 | builtin.Arch.armv5, | 171 | const is_arm_arch = switch (builtin.arch) { |
| 172 | builtin.Arch.armv5te, | 172 | builtin.Arch.armv8_3a, |
| 173 | builtin.Arch.armv4t, | 173 | builtin.Arch.armv8_2a, |
| 174 | builtin.Arch.armebv8_3a, | 174 | builtin.Arch.armv8_1a, |
| 175 | builtin.Arch.armebv8_2a, | 175 | builtin.Arch.armv8, |
| 176 | builtin.Arch.armebv8_1a, | 176 | builtin.Arch.armv8r, |
| 177 | builtin.Arch.armebv8, | 177 | builtin.Arch.armv8m_baseline, |
| 178 | builtin.Arch.armebv8r, | 178 | builtin.Arch.armv8m_mainline, |
| 179 | builtin.Arch.armebv8m_baseline, | 179 | builtin.Arch.armv7, |
| 180 | builtin.Arch.armebv8m_mainline, | 180 | builtin.Arch.armv7em, |
| 181 | builtin.Arch.armebv7, | 181 | builtin.Arch.armv7m, |
| 182 | builtin.Arch.armebv7em, | 182 | builtin.Arch.armv7s, |
| 183 | builtin.Arch.armebv7m, | 183 | builtin.Arch.armv7k, |
| 184 | builtin.Arch.armebv7s, | 184 | builtin.Arch.armv7ve, |
| 185 | builtin.Arch.armebv7k, | 185 | builtin.Arch.armv6, |
| 186 | builtin.Arch.armebv7ve, | 186 | builtin.Arch.armv6m, |
| 187 | builtin.Arch.armebv6, | 187 | builtin.Arch.armv6k, |
| 188 | builtin.Arch.armebv6m, | 188 | builtin.Arch.armv6t2, |
| 189 | builtin.Arch.armebv6k, | 189 | builtin.Arch.armv5, |
| 190 | builtin.Arch.armebv6t2, | 190 | builtin.Arch.armv5te, |
| 191 | builtin.Arch.armebv5, | 191 | builtin.Arch.armv4t, |
| 192 | builtin.Arch.armebv5te, | 192 | builtin.Arch.armebv8_3a, |
| 193 | builtin.Arch.armebv4t, | 193 | builtin.Arch.armebv8_2a, |
| 194 | builtin.Arch.aarch64v8_3a, | 194 | builtin.Arch.armebv8_1a, |
| 195 | builtin.Arch.aarch64v8_2a, | 195 | builtin.Arch.armebv8, |
| 196 | builtin.Arch.aarch64v8_1a, | 196 | builtin.Arch.armebv8r, |
| 197 | builtin.Arch.aarch64v8, | 197 | builtin.Arch.armebv8m_baseline, |
| 198 | builtin.Arch.aarch64v8r, | 198 | builtin.Arch.armebv8m_mainline, |
| 199 | builtin.Arch.aarch64v8m_baseline, | 199 | builtin.Arch.armebv7, |
| 200 | builtin.Arch.aarch64v8m_mainline, | 200 | builtin.Arch.armebv7em, |
| 201 | builtin.Arch.aarch64_bev8_3a, | 201 | builtin.Arch.armebv7m, |
| 202 | builtin.Arch.aarch64_bev8_2a, | 202 | builtin.Arch.armebv7s, |
| 203 | builtin.Arch.aarch64_bev8_1a, | 203 | builtin.Arch.armebv7k, |
| 204 | builtin.Arch.aarch64_bev8, | 204 | builtin.Arch.armebv7ve, |
| 205 | builtin.Arch.aarch64_bev8r, | 205 | builtin.Arch.armebv6, |
| 206 | builtin.Arch.aarch64_bev8m_baseline, | 206 | builtin.Arch.armebv6m, |
| 207 | builtin.Arch.aarch64_bev8m_mainline, | 207 | builtin.Arch.armebv6k, |
| 208 | builtin.Arch.thumb, | 208 | builtin.Arch.armebv6t2, |
| 209 | builtin.Arch.thumbeb, | 209 | builtin.Arch.armebv5, |
| 210 | => true, | 210 | builtin.Arch.armebv5te, |
| 211 | else => false, | 211 | builtin.Arch.armebv4t, |
| 212 | }; | 212 | builtin.Arch.aarch64v8_3a, |
| 213 | } | 213 | builtin.Arch.aarch64v8_2a, |
| | 214 | builtin.Arch.aarch64v8_1a, |
| | 215 | builtin.Arch.aarch64v8, |
| | 216 | builtin.Arch.aarch64v8r, |
| | 217 | builtin.Arch.aarch64v8m_baseline, |
| | 218 | builtin.Arch.aarch64v8m_mainline, |
| | 219 | builtin.Arch.aarch64_bev8_3a, |
| | 220 | builtin.Arch.aarch64_bev8_2a, |
| | 221 | builtin.Arch.aarch64_bev8_1a, |
| | 222 | builtin.Arch.aarch64_bev8, |
| | 223 | builtin.Arch.aarch64_bev8r, |
| | 224 | builtin.Arch.aarch64_bev8m_baseline, |
| | 225 | builtin.Arch.aarch64_bev8m_mainline, |
| | 226 | builtin.Arch.thumb, |
| | 227 | builtin.Arch.thumbeb, |
| | 228 | => true, |
| | 229 | else => false, |
| | 230 | }; |
| 214 | | 231 | |
| 215 | nakedcc fn __aeabi_uidivmod() void { | 232 | nakedcc fn __aeabi_uidivmod() void { |
| 216 | @setRuntimeSafety(false); | 233 | @setRuntimeSafety(false); |