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