| ... | ... | @@ -248,37 +248,55 @@ typedef char bool; |
| 248 | 248 | |
| 249 | 249 | #if zig_has_builtin(trap) |
| 250 | 250 | #define zig_trap() __builtin_trap() |
| 251 | | #elif _MSC_VER && (_M_IX86 || _M_X64) |
| 251 | #elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) |
| 252 | 252 | #define zig_trap() __ud2() |
| 253 | | #elif _MSC_VER |
| 254 | | #define zig_trap() __fastfail(0) |
| 255 | | #elif defined(__i386__) || defined(__x86_64__) |
| 256 | | #define zig_trap() __asm__ volatile("ud2"); |
| 253 | #elif defined(_MSC_VER) |
| 254 | #define zig_trap() __fastfail(7) |
| 255 | #elif defined(__thumb__) |
| 256 | #define zig_trap() __asm__ volatile("udf #0xfe") |
| 257 | 257 | #elif defined(__arm__) || defined(__aarch64__) |
| 258 | | #define zig_trap() __asm__ volatile("udf #0"); |
| 258 | #define zig_trap() __asm__ volatile("udf #0xfdee") |
| 259 | #elif defined(__loongarch__) || defined(__powerpc__) |
| 260 | #define zig_trap() __asm__ volatile(".word 0x0") |
| 261 | #elif defined(__mips__) |
| 262 | #define zig_trap() __asm__ volatile(".word 0x3d") |
| 263 | #elif defined(__riscv) |
| 264 | #define zig_trap() __asm__ volatile("unimp") |
| 265 | #elif defined(__s390__) |
| 266 | #define zig_trap() __asm__ volatile("j 0x2") |
| 267 | #elif defined(__sparc__) |
| 268 | #define zig_trap() __asm__ volatile("illtrap") |
| 269 | #elif defined(__i386__) || defined(__x86_64__) |
| 270 | #define zig_trap() __asm__ volatile("ud2") |
| 259 | 271 | #else |
| 260 | | #include <stdlib.h> |
| 261 | | #define zig_trap() abort() |
| 272 | #define zig_trap() zig_trap_unavailable |
| 262 | 273 | #endif |
| 263 | 274 | |
| 264 | 275 | #if zig_has_builtin(debugtrap) |
| 265 | 276 | #define zig_breakpoint() __builtin_debugtrap() |
| 266 | 277 | #elif defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__) |
| 267 | 278 | #define zig_breakpoint() __debugbreak() |
| 268 | | #elif defined(__i386__) || defined(__x86_64__) |
| 269 | | #define zig_breakpoint() __asm__ volatile("int $0x03"); |
| 270 | 279 | #elif defined(__arm__) |
| 271 | | #define zig_breakpoint() __asm__ volatile("bkpt #0"); |
| 280 | #define zig_breakpoint() __asm__ volatile("bkpt #0x0") |
| 272 | 281 | #elif defined(__aarch64__) |
| 273 | | #define zig_breakpoint() __asm__ volatile("brk #0"); |
| 274 | | #else |
| 275 | | #include <signal.h> |
| 276 | | #if defined(SIGTRAP) |
| 277 | | #define zig_breakpoint() raise(SIGTRAP) |
| 282 | #define zig_breakpoint() __asm__ volatile("brk #0xf000") |
| 283 | #elif defined(__loongarch__) |
| 284 | #define zig_breakpoint() __asm__ volatile("break 0x0") |
| 285 | #elif defined(__mips__) |
| 286 | #define zig_breakpoint() __asm__ volatile("break") |
| 287 | #elif defined(__powerpc__) |
| 288 | #define zig_breakpoint() __asm__ volatile("trap") |
| 289 | #elif defined(__riscv) |
| 290 | #define zig_breakpoint() __asm__ volatile("ebreak") |
| 291 | #elif defined(__s390__) |
| 292 | #define zig_breakpoint() __asm__ volatile("j 0x6") |
| 293 | #elif defined(__sparc__) |
| 294 | #define zig_breakpoint() __asm__ volatile("ta 0x1") |
| 295 | #elif defined(__i386__) || defined(__x86_64__) |
| 296 | #define zig_breakpoint() __asm__ volatile("int $0x3") |
| 278 | 297 | #else |
| 279 | 298 | #define zig_breakpoint() zig_breakpoint_unavailable |
| 280 | 299 | #endif |
| 281 | | #endif |
| 282 | 300 | |
| 283 | 301 | #if zig_has_builtin(return_address) || defined(zig_gnuc) |
| 284 | 302 | #define zig_return_address() __builtin_extract_return_addr(__builtin_return_address(0)) |
| ... | ... | @@ -3592,7 +3610,6 @@ typedef enum memory_order zig_memory_order; |
| 3592 | 3610 | #define zig_atomicrmw_add_float zig_atomicrmw_add |
| 3593 | 3611 | #undef zig_atomicrmw_sub_float |
| 3594 | 3612 | #define zig_atomicrmw_sub_float zig_atomicrmw_sub |
| 3595 | | #define zig_fence(order) atomic_thread_fence(order) |
| 3596 | 3613 | #elif defined(__GNUC__) |
| 3597 | 3614 | typedef int zig_memory_order; |
| 3598 | 3615 | #define zig_memory_order_relaxed __ATOMIC_RELAXED |
| ... | ... | @@ -3616,7 +3633,6 @@ typedef int zig_memory_order; |
| 3616 | 3633 | #define zig_atomic_load(res, obj, order, Type, ReprType) __atomic_load (obj, &(res), order) |
| 3617 | 3634 | #undef zig_atomicrmw_xchg_float |
| 3618 | 3635 | #define zig_atomicrmw_xchg_float zig_atomicrmw_xchg |
| 3619 | | #define zig_fence(order) __atomic_thread_fence(order) |
| 3620 | 3636 | #elif _MSC_VER && (_M_IX86 || _M_X64) |
| 3621 | 3637 | #define zig_memory_order_relaxed 0 |
| 3622 | 3638 | #define zig_memory_order_acquire 2 |
| ... | ... | @@ -3637,11 +3653,6 @@ typedef int zig_memory_order; |
| 3637 | 3653 | #define zig_atomicrmw_max(res, obj, arg, order, Type, ReprType) res = zig_msvc_atomicrmw_max_ ##Type(obj, arg) |
| 3638 | 3654 | #define zig_atomic_store( obj, arg, order, Type, ReprType) zig_msvc_atomic_store_ ##Type(obj, arg) |
| 3639 | 3655 | #define zig_atomic_load(res, obj, order, Type, ReprType) res = zig_msvc_atomic_load_ ##order##_##Type(obj) |
| 3640 | | #if _M_X64 |
| 3641 | | #define zig_fence(order) __faststorefence() |
| 3642 | | #else |
| 3643 | | #define zig_fence(order) zig_msvc_atomic_barrier() |
| 3644 | | #endif |
| 3645 | 3656 | /* TODO: _MSC_VER && (_M_ARM || _M_ARM64) */ |
| 3646 | 3657 | #else |
| 3647 | 3658 | #define zig_memory_order_relaxed 0 |
| ... | ... | @@ -3663,7 +3674,6 @@ typedef int zig_memory_order; |
| 3663 | 3674 | #define zig_atomicrmw_max(res, obj, arg, order, Type, ReprType) zig_atomics_unavailable |
| 3664 | 3675 | #define zig_atomic_store( obj, arg, order, Type, ReprType) zig_atomics_unavailable |
| 3665 | 3676 | #define zig_atomic_load(res, obj, order, Type, ReprType) zig_atomics_unavailable |
| 3666 | | #define zig_fence(order) zig_fence_unavailable |
| 3667 | 3677 | #endif |
| 3668 | 3678 | |
| 3669 | 3679 | #if _MSC_VER && (_M_IX86 || _M_X64) |