@@ -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 )
0 commit comments