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