From 76d04c1662e638854f84b6b32cca04ea1acd80c3 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 14 Jul 2025 18:00:46 -0700 Subject: [PATCH] zig fmt --- lib/compiler_rt/aarch64_outline_atomics.zig | 300 ++++++------------ lib/compiler_rt/arm.zig | 12 +- lib/compiler_rt/atomics.zig | 6 +- lib/compiler_rt/clear_cache.zig | 3 +- lib/std/Thread.zig | 36 +-- lib/std/crypto/sha2.zig | 3 +- lib/std/debug.zig | 2 +- lib/std/debug/SelfInfo.zig | 3 +- lib/std/mem.zig | 3 +- lib/std/os/linux/aarch64.zig | 27 +- lib/std/os/linux/arm.zig | 33 +- lib/std/os/linux/hexagon.zig | 24 +- lib/std/os/linux/loongarch64.zig | 24 +- lib/std/os/linux/m68k.zig | 24 +- lib/std/os/linux/mips.zig | 33 +- lib/std/os/linux/mips64.zig | 33 +- lib/std/os/linux/powerpc.zig | 24 +- lib/std/os/linux/powerpc64.zig | 24 +- lib/std/os/linux/riscv32.zig | 24 +- lib/std/os/linux/riscv64.zig | 24 +- lib/std/os/linux/s390x.zig | 24 +- lib/std/os/linux/sparc64.zig | 30 +- lib/std/os/linux/thumb.zig | 24 +- lib/std/os/linux/tls.zig | 3 +- lib/std/os/linux/x86.zig | 42 +-- lib/std/os/linux/x86_64.zig | 33 +- lib/std/os/plan9/x86_64.zig | 12 +- lib/std/pie.zig | 15 +- lib/std/start.zig | 12 +- lib/std/valgrind.zig | 30 +- lib/std/zig/render.zig | 6 +- lib/std/zig/system/x86.zig | 3 +- test/behavior/asm.zig | 18 +- ...ment_address_space_reading_and_writing.zig | 4 +- test/standalone/stack_iterator/unwind.zig | 8 +- .../stack_iterator/unwind_freestanding.zig | 3 +- 36 files changed, 311 insertions(+), 618 deletions(-) diff --git a/lib/compiler_rt/aarch64_outline_atomics.zig b/lib/compiler_rt/aarch64_outline_atomics.zig index f5f003c455..817800eb21 100644 --- a/lib/compiler_rt/aarch64_outline_atomics.zig +++ b/lib/compiler_rt/aarch64_outline_atomics.zig @@ -28,8 +28,7 @@ fn __aarch64_cas1_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp1_relax() align(16) callconv(.naked) void { @@ -48,8 +47,7 @@ fn __aarch64_swp1_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd1_relax() align(16) callconv(.naked) void { @@ -69,8 +67,7 @@ fn __aarch64_ldadd1_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr1_relax() align(16) callconv(.naked) void { @@ -90,8 +87,7 @@ fn __aarch64_ldclr1_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor1_relax() align(16) callconv(.naked) void { @@ -111,8 +107,7 @@ fn __aarch64_ldeor1_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset1_relax() align(16) callconv(.naked) void { @@ -132,8 +127,7 @@ fn __aarch64_ldset1_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas1_acq() align(16) callconv(.naked) void { @@ -154,8 +148,7 @@ fn __aarch64_cas1_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp1_acq() align(16) callconv(.naked) void { @@ -174,8 +167,7 @@ fn __aarch64_swp1_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd1_acq() align(16) callconv(.naked) void { @@ -195,8 +187,7 @@ fn __aarch64_ldadd1_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr1_acq() align(16) callconv(.naked) void { @@ -216,8 +207,7 @@ fn __aarch64_ldclr1_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor1_acq() align(16) callconv(.naked) void { @@ -237,8 +227,7 @@ fn __aarch64_ldeor1_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset1_acq() align(16) callconv(.naked) void { @@ -258,8 +247,7 @@ fn __aarch64_ldset1_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas1_rel() align(16) callconv(.naked) void { @@ -280,8 +268,7 @@ fn __aarch64_cas1_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp1_rel() align(16) callconv(.naked) void { @@ -300,8 +287,7 @@ fn __aarch64_swp1_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd1_rel() align(16) callconv(.naked) void { @@ -321,8 +307,7 @@ fn __aarch64_ldadd1_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr1_rel() align(16) callconv(.naked) void { @@ -342,8 +327,7 @@ fn __aarch64_ldclr1_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor1_rel() align(16) callconv(.naked) void { @@ -363,8 +347,7 @@ fn __aarch64_ldeor1_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset1_rel() align(16) callconv(.naked) void { @@ -384,8 +367,7 @@ fn __aarch64_ldset1_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas1_acq_rel() align(16) callconv(.naked) void { @@ -406,8 +388,7 @@ fn __aarch64_cas1_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp1_acq_rel() align(16) callconv(.naked) void { @@ -426,8 +407,7 @@ fn __aarch64_swp1_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd1_acq_rel() align(16) callconv(.naked) void { @@ -447,8 +427,7 @@ fn __aarch64_ldadd1_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr1_acq_rel() align(16) callconv(.naked) void { @@ -468,8 +447,7 @@ fn __aarch64_ldclr1_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor1_acq_rel() align(16) callconv(.naked) void { @@ -489,8 +467,7 @@ fn __aarch64_ldeor1_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset1_acq_rel() align(16) callconv(.naked) void { @@ -510,8 +487,7 @@ fn __aarch64_ldset1_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas2_relax() align(16) callconv(.naked) void { @@ -532,8 +508,7 @@ fn __aarch64_cas2_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp2_relax() align(16) callconv(.naked) void { @@ -552,8 +527,7 @@ fn __aarch64_swp2_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd2_relax() align(16) callconv(.naked) void { @@ -573,8 +547,7 @@ fn __aarch64_ldadd2_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr2_relax() align(16) callconv(.naked) void { @@ -594,8 +567,7 @@ fn __aarch64_ldclr2_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor2_relax() align(16) callconv(.naked) void { @@ -615,8 +587,7 @@ fn __aarch64_ldeor2_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset2_relax() align(16) callconv(.naked) void { @@ -636,8 +607,7 @@ fn __aarch64_ldset2_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas2_acq() align(16) callconv(.naked) void { @@ -658,8 +628,7 @@ fn __aarch64_cas2_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp2_acq() align(16) callconv(.naked) void { @@ -678,8 +647,7 @@ fn __aarch64_swp2_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd2_acq() align(16) callconv(.naked) void { @@ -699,8 +667,7 @@ fn __aarch64_ldadd2_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr2_acq() align(16) callconv(.naked) void { @@ -720,8 +687,7 @@ fn __aarch64_ldclr2_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor2_acq() align(16) callconv(.naked) void { @@ -741,8 +707,7 @@ fn __aarch64_ldeor2_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset2_acq() align(16) callconv(.naked) void { @@ -762,8 +727,7 @@ fn __aarch64_ldset2_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas2_rel() align(16) callconv(.naked) void { @@ -784,8 +748,7 @@ fn __aarch64_cas2_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp2_rel() align(16) callconv(.naked) void { @@ -804,8 +767,7 @@ fn __aarch64_swp2_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd2_rel() align(16) callconv(.naked) void { @@ -825,8 +787,7 @@ fn __aarch64_ldadd2_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr2_rel() align(16) callconv(.naked) void { @@ -846,8 +807,7 @@ fn __aarch64_ldclr2_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor2_rel() align(16) callconv(.naked) void { @@ -867,8 +827,7 @@ fn __aarch64_ldeor2_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset2_rel() align(16) callconv(.naked) void { @@ -888,8 +847,7 @@ fn __aarch64_ldset2_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas2_acq_rel() align(16) callconv(.naked) void { @@ -910,8 +868,7 @@ fn __aarch64_cas2_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp2_acq_rel() align(16) callconv(.naked) void { @@ -930,8 +887,7 @@ fn __aarch64_swp2_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd2_acq_rel() align(16) callconv(.naked) void { @@ -951,8 +907,7 @@ fn __aarch64_ldadd2_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr2_acq_rel() align(16) callconv(.naked) void { @@ -972,8 +927,7 @@ fn __aarch64_ldclr2_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor2_acq_rel() align(16) callconv(.naked) void { @@ -993,8 +947,7 @@ fn __aarch64_ldeor2_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset2_acq_rel() align(16) callconv(.naked) void { @@ -1014,8 +967,7 @@ fn __aarch64_ldset2_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas4_relax() align(16) callconv(.naked) void { @@ -1036,8 +988,7 @@ fn __aarch64_cas4_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp4_relax() align(16) callconv(.naked) void { @@ -1056,8 +1007,7 @@ fn __aarch64_swp4_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd4_relax() align(16) callconv(.naked) void { @@ -1077,8 +1027,7 @@ fn __aarch64_ldadd4_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr4_relax() align(16) callconv(.naked) void { @@ -1098,8 +1047,7 @@ fn __aarch64_ldclr4_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor4_relax() align(16) callconv(.naked) void { @@ -1119,8 +1067,7 @@ fn __aarch64_ldeor4_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset4_relax() align(16) callconv(.naked) void { @@ -1140,8 +1087,7 @@ fn __aarch64_ldset4_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas4_acq() align(16) callconv(.naked) void { @@ -1162,8 +1108,7 @@ fn __aarch64_cas4_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp4_acq() align(16) callconv(.naked) void { @@ -1182,8 +1127,7 @@ fn __aarch64_swp4_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd4_acq() align(16) callconv(.naked) void { @@ -1203,8 +1147,7 @@ fn __aarch64_ldadd4_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr4_acq() align(16) callconv(.naked) void { @@ -1224,8 +1167,7 @@ fn __aarch64_ldclr4_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor4_acq() align(16) callconv(.naked) void { @@ -1245,8 +1187,7 @@ fn __aarch64_ldeor4_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset4_acq() align(16) callconv(.naked) void { @@ -1266,8 +1207,7 @@ fn __aarch64_ldset4_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas4_rel() align(16) callconv(.naked) void { @@ -1288,8 +1228,7 @@ fn __aarch64_cas4_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp4_rel() align(16) callconv(.naked) void { @@ -1308,8 +1247,7 @@ fn __aarch64_swp4_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd4_rel() align(16) callconv(.naked) void { @@ -1329,8 +1267,7 @@ fn __aarch64_ldadd4_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr4_rel() align(16) callconv(.naked) void { @@ -1350,8 +1287,7 @@ fn __aarch64_ldclr4_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor4_rel() align(16) callconv(.naked) void { @@ -1371,8 +1307,7 @@ fn __aarch64_ldeor4_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset4_rel() align(16) callconv(.naked) void { @@ -1392,8 +1327,7 @@ fn __aarch64_ldset4_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas4_acq_rel() align(16) callconv(.naked) void { @@ -1414,8 +1348,7 @@ fn __aarch64_cas4_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp4_acq_rel() align(16) callconv(.naked) void { @@ -1434,8 +1367,7 @@ fn __aarch64_swp4_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd4_acq_rel() align(16) callconv(.naked) void { @@ -1455,8 +1387,7 @@ fn __aarch64_ldadd4_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr4_acq_rel() align(16) callconv(.naked) void { @@ -1476,8 +1407,7 @@ fn __aarch64_ldclr4_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor4_acq_rel() align(16) callconv(.naked) void { @@ -1497,8 +1427,7 @@ fn __aarch64_ldeor4_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset4_acq_rel() align(16) callconv(.naked) void { @@ -1518,8 +1447,7 @@ fn __aarch64_ldset4_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas8_relax() align(16) callconv(.naked) void { @@ -1540,8 +1468,7 @@ fn __aarch64_cas8_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp8_relax() align(16) callconv(.naked) void { @@ -1560,8 +1487,7 @@ fn __aarch64_swp8_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd8_relax() align(16) callconv(.naked) void { @@ -1581,8 +1507,7 @@ fn __aarch64_ldadd8_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr8_relax() align(16) callconv(.naked) void { @@ -1602,8 +1527,7 @@ fn __aarch64_ldclr8_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor8_relax() align(16) callconv(.naked) void { @@ -1623,8 +1547,7 @@ fn __aarch64_ldeor8_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset8_relax() align(16) callconv(.naked) void { @@ -1644,8 +1567,7 @@ fn __aarch64_ldset8_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas8_acq() align(16) callconv(.naked) void { @@ -1666,8 +1588,7 @@ fn __aarch64_cas8_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp8_acq() align(16) callconv(.naked) void { @@ -1686,8 +1607,7 @@ fn __aarch64_swp8_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd8_acq() align(16) callconv(.naked) void { @@ -1707,8 +1627,7 @@ fn __aarch64_ldadd8_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr8_acq() align(16) callconv(.naked) void { @@ -1728,8 +1647,7 @@ fn __aarch64_ldclr8_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor8_acq() align(16) callconv(.naked) void { @@ -1749,8 +1667,7 @@ fn __aarch64_ldeor8_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset8_acq() align(16) callconv(.naked) void { @@ -1770,8 +1687,7 @@ fn __aarch64_ldset8_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas8_rel() align(16) callconv(.naked) void { @@ -1792,8 +1708,7 @@ fn __aarch64_cas8_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp8_rel() align(16) callconv(.naked) void { @@ -1812,8 +1727,7 @@ fn __aarch64_swp8_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd8_rel() align(16) callconv(.naked) void { @@ -1833,8 +1747,7 @@ fn __aarch64_ldadd8_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr8_rel() align(16) callconv(.naked) void { @@ -1854,8 +1767,7 @@ fn __aarch64_ldclr8_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor8_rel() align(16) callconv(.naked) void { @@ -1875,8 +1787,7 @@ fn __aarch64_ldeor8_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset8_rel() align(16) callconv(.naked) void { @@ -1896,8 +1807,7 @@ fn __aarch64_ldset8_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas8_acq_rel() align(16) callconv(.naked) void { @@ -1918,8 +1828,7 @@ fn __aarch64_cas8_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_swp8_acq_rel() align(16) callconv(.naked) void { @@ -1938,8 +1847,7 @@ fn __aarch64_swp8_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldadd8_acq_rel() align(16) callconv(.naked) void { @@ -1959,8 +1867,7 @@ fn __aarch64_ldadd8_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldclr8_acq_rel() align(16) callconv(.naked) void { @@ -1980,8 +1887,7 @@ fn __aarch64_ldclr8_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldeor8_acq_rel() align(16) callconv(.naked) void { @@ -2001,8 +1907,7 @@ fn __aarch64_ldeor8_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_ldset8_acq_rel() align(16) callconv(.naked) void { @@ -2022,8 +1927,7 @@ fn __aarch64_ldset8_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas16_relax() align(16) callconv(.naked) void { @@ -2046,8 +1950,7 @@ fn __aarch64_cas16_relax() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas16_acq() align(16) callconv(.naked) void { @@ -2070,8 +1973,7 @@ fn __aarch64_cas16_acq() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas16_rel() align(16) callconv(.naked) void { @@ -2094,8 +1996,7 @@ fn __aarch64_cas16_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } fn __aarch64_cas16_acq_rel() align(16) callconv(.naked) void { @@ -2118,8 +2019,7 @@ fn __aarch64_cas16_acq_rel() align(16) callconv(.naked) void { \\ ret : : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), - : "w15", "w16", "w17", "memory" - ); + : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true }); unreachable; } diff --git a/lib/compiler_rt/arm.zig b/lib/compiler_rt/arm.zig index 8fd6f2938b..e349e18630 100644 --- a/lib/compiler_rt/arm.zig +++ b/lib/compiler_rt/arm.zig @@ -142,8 +142,7 @@ pub fn __aeabi_uidivmod() callconv(.naked) void { \\ pop {pc} : : [__udivmodsi4] "X" (&__udivmodsi4), - : "memory" - ); + : .{ .memory = true }); unreachable; } @@ -162,8 +161,7 @@ pub fn __aeabi_uldivmod() callconv(.naked) void { \\ pop {r4, pc} : : [__udivmoddi4] "X" (&__udivmoddi4), - : "memory" - ); + : .{ .memory = true }); unreachable; } @@ -180,8 +178,7 @@ pub fn __aeabi_idivmod() callconv(.naked) void { \\ pop {pc} : : [__divmodsi4] "X" (&__divmodsi4), - : "memory" - ); + : .{ .memory = true }); unreachable; } @@ -200,8 +197,7 @@ pub fn __aeabi_ldivmod() callconv(.naked) void { \\ pop {r4, pc} : : [__divmoddi4] "X" (&__divmoddi4), - : "memory" - ); + : .{ .memory = true }); unreachable; } diff --git a/lib/compiler_rt/atomics.zig b/lib/compiler_rt/atomics.zig index 6eec50e1ba..09fd1c2c90 100644 --- a/lib/compiler_rt/atomics.zig +++ b/lib/compiler_rt/atomics.zig @@ -71,8 +71,7 @@ const SpinlockTable = struct { break :flag asm volatile ("ldstub [%[addr]], %[flag]" : [flag] "=r" (-> @TypeOf(self.v)), : [addr] "r" (&self.v), - : "memory" - ); + : .{ .memory = true }); } else flag: { break :flag @atomicRmw(@TypeOf(self.v), &self.v, .Xchg, .Locked, .acquire); }; @@ -88,8 +87,7 @@ const SpinlockTable = struct { _ = asm volatile ("clrb [%[addr]]" : : [addr] "r" (&self.v), - : "memory" - ); + : .{ .memory = true }); } else { @atomicStore(@TypeOf(self.v), &self.v, .Unlocked, .release); } diff --git a/lib/compiler_rt/clear_cache.zig b/lib/compiler_rt/clear_cache.zig index 6cf819ccf3..d63d8e6b68 100644 --- a/lib/compiler_rt/clear_cache.zig +++ b/lib/compiler_rt/clear_cache.zig @@ -103,8 +103,7 @@ fn clear_cache(start: usize, end: usize) callconv(.c) void { : [_] "{$2}" (165), // nr = SYS_sysarch [_] "{$4}" (0), // op = MIPS_CACHEFLUSH [_] "{$5}" (&cfa), // args = &cfa - : "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$2" = true, .@"$3" = true, .@"$4" = true, .@"$5" = true, .@"$6" = true, .@"$7" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); exportIt(); } else if (mips and os == .openbsd) { // TODO diff --git a/lib/std/Thread.zig b/lib/std/Thread.zig index fdde73142b..7438c3d908 100644 --- a/lib/std/Thread.zig +++ b/lib/std/Thread.zig @@ -1198,8 +1198,7 @@ const LinuxThreadImpl = struct { : : [ptr] "r" (@intFromPtr(self.mapped.ptr)), [len] "r" (self.mapped.len), - : "memory" - ), + : .{ .memory = true }), .x86_64 => asm volatile ( \\ movq $11, %%rax # SYS_munmap \\ syscall @@ -1221,8 +1220,7 @@ const LinuxThreadImpl = struct { : : [ptr] "r" (@intFromPtr(self.mapped.ptr)), [len] "r" (self.mapped.len), - : "memory" - ), + : .{ .memory = true }), .aarch64, .aarch64_be => asm volatile ( \\ mov x8, #215 // SYS_munmap \\ mov x0, %[ptr] @@ -1234,8 +1232,7 @@ const LinuxThreadImpl = struct { : : [ptr] "r" (@intFromPtr(self.mapped.ptr)), [len] "r" (self.mapped.len), - : "memory" - ), + : .{ .memory = true }), .hexagon => asm volatile ( \\ r6 = #215 // SYS_munmap \\ r0 = %[ptr] @@ -1247,8 +1244,7 @@ const LinuxThreadImpl = struct { : : [ptr] "r" (@intFromPtr(self.mapped.ptr)), [len] "r" (self.mapped.len), - : "memory" - ), + : .{ .memory = true }), // We set `sp` to the address of the current function as a workaround for a Linux // kernel bug that caused syscalls to return EFAULT if the stack pointer is invalid. // The bug was introduced in 46e12c07b3b9603c60fc1d421ff18618241cb081 and fixed in @@ -1265,8 +1261,7 @@ const LinuxThreadImpl = struct { : : [ptr] "r" (@intFromPtr(self.mapped.ptr)), [len] "r" (self.mapped.len), - : "memory" - ), + : .{ .memory = true }), .mips64, .mips64el => asm volatile ( \\ li $2, 5011 # SYS_munmap \\ move $4, %[ptr] @@ -1278,8 +1273,7 @@ const LinuxThreadImpl = struct { : : [ptr] "r" (@intFromPtr(self.mapped.ptr)), [len] "r" (self.mapped.len), - : "memory" - ), + : .{ .memory = true }), .powerpc, .powerpcle, .powerpc64, .powerpc64le => asm volatile ( \\ li 0, 91 # SYS_munmap \\ mr 3, %[ptr] @@ -1292,8 +1286,7 @@ const LinuxThreadImpl = struct { : : [ptr] "r" (@intFromPtr(self.mapped.ptr)), [len] "r" (self.mapped.len), - : "memory" - ), + : .{ .memory = true }), .riscv32, .riscv64 => asm volatile ( \\ li a7, 215 # SYS_munmap \\ mv a0, %[ptr] @@ -1305,8 +1298,7 @@ const LinuxThreadImpl = struct { : : [ptr] "r" (@intFromPtr(self.mapped.ptr)), [len] "r" (self.mapped.len), - : "memory" - ), + : .{ .memory = true }), .s390x => asm volatile ( \\ lgr %%r2, %[ptr] \\ lgr %%r3, %[len] @@ -1316,8 +1308,7 @@ const LinuxThreadImpl = struct { : : [ptr] "r" (@intFromPtr(self.mapped.ptr)), [len] "r" (self.mapped.len), - : "memory" - ), + : .{ .memory = true }), .sparc => asm volatile ( \\ # See sparc64 comments below. \\ 1: @@ -1338,8 +1329,7 @@ const LinuxThreadImpl = struct { : : [ptr] "r" (@intFromPtr(self.mapped.ptr)), [len] "r" (self.mapped.len), - : "memory" - ), + : .{ .memory = true }), .sparc64 => asm volatile ( \\ # SPARCs really don't like it when active stack frames \\ # is unmapped (it will result in a segfault), so we @@ -1365,8 +1355,7 @@ const LinuxThreadImpl = struct { : : [ptr] "r" (@intFromPtr(self.mapped.ptr)), [len] "r" (self.mapped.len), - : "memory" - ), + : .{ .memory = true }), .loongarch32, .loongarch64 => asm volatile ( \\ or $a0, $zero, %[ptr] \\ or $a1, $zero, %[len] @@ -1378,8 +1367,7 @@ const LinuxThreadImpl = struct { : : [ptr] "r" (@intFromPtr(self.mapped.ptr)), [len] "r" (self.mapped.len), - : "memory" - ), + : .{ .memory = true }), else => |cpu_arch| @compileError("Unsupported linux arch: " ++ @tagName(cpu_arch)), } unreachable; diff --git a/lib/std/crypto/sha2.zig b/lib/std/crypto/sha2.zig index 20a883d49f..1abc2b0edc 100644 --- a/lib/std/crypto/sha2.zig +++ b/lib/std/crypto/sha2.zig @@ -229,8 +229,7 @@ fn Sha2x32(comptime iv: Iv32, digest_bits: comptime_int) type { : [_] "0" (x), [_] "1" (y), [w] "w" (w), - : "v0" - ); + : .{ .v0 = true }); } d.s[0..4].* = x +% @as(V4u32, d.s[0..4].*); diff --git a/lib/std/debug.zig b/lib/std/debug.zig index 0950441f73..a7b88e4257 100644 --- a/lib/std/debug.zig +++ b/lib/std/debug.zig @@ -785,7 +785,7 @@ pub const StackIterator = struct { "flushw" else "ta 3" // ST_FLUSH_WINDOWS - ::: "memory"); + ::: .{ .memory = true }); } return StackIterator{ diff --git a/lib/std/debug/SelfInfo.zig b/lib/std/debug/SelfInfo.zig index a879309870..3e60e86ed3 100644 --- a/lib/std/debug/SelfInfo.zig +++ b/lib/std/debug/SelfInfo.zig @@ -1547,8 +1547,7 @@ pub inline fn stripInstructionPtrAuthCode(ptr: usize) usize { \\mov x30, x16 : [ret] "={x15}" (-> usize), : [ptr] "{x15}" (ptr), - : "x16" - ); + : .{ .x16 = true }); } return ptr; diff --git a/lib/std/mem.zig b/lib/std/mem.zig index c9d0bddc74..33e68eedad 100644 --- a/lib/std/mem.zig +++ b/lib/std/mem.zig @@ -4497,8 +4497,7 @@ pub fn doNotOptimizeAway(val: anytype) void { asm volatile ("" : : [val] "m" (val), - : "memory" - ); + : .{ .memory = true }); } }, .array => { diff --git a/lib/std/os/linux/aarch64.zig b/lib/std/os/linux/aarch64.zig index cd3d1ab027..c0d1aabd08 100644 --- a/lib/std/os/linux/aarch64.zig +++ b/lib/std/os/linux/aarch64.zig @@ -18,8 +18,7 @@ pub fn syscall0(number: SYS) usize { return asm volatile ("svc #0" : [ret] "={x0}" (-> usize), : [number] "{x8}" (@intFromEnum(number)), - : "memory", "cc" - ); + : .{ .memory = true, .cc = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -27,8 +26,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={x0}" (-> usize), : [number] "{x8}" (@intFromEnum(number)), [arg1] "{x0}" (arg1), - : "memory", "cc" - ); + : .{ .memory = true, .cc = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -37,8 +35,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{x8}" (@intFromEnum(number)), [arg1] "{x0}" (arg1), [arg2] "{x1}" (arg2), - : "memory", "cc" - ); + : .{ .memory = true, .cc = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -48,8 +45,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{x0}" (arg1), [arg2] "{x1}" (arg2), [arg3] "{x2}" (arg3), - : "memory", "cc" - ); + : .{ .memory = true, .cc = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -60,8 +56,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{x1}" (arg2), [arg3] "{x2}" (arg3), [arg4] "{x3}" (arg4), - : "memory", "cc" - ); + : .{ .memory = true, .cc = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -73,8 +68,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{x2}" (arg3), [arg4] "{x3}" (arg4), [arg5] "{x4}" (arg5), - : "memory", "cc" - ); + : .{ .memory = true, .cc = true }); } pub fn syscall6( @@ -95,8 +89,7 @@ pub fn syscall6( [arg4] "{x3}" (arg4), [arg5] "{x4}" (arg5), [arg6] "{x5}" (arg6), - : "memory", "cc" - ); + : .{ .memory = true, .cc = true }); } pub fn clone() callconv(.naked) usize { @@ -148,14 +141,12 @@ pub fn restore_rt() callconv(.naked) noreturn { \\ svc #0 : : [number] "i" (@intFromEnum(SYS.rt_sigreturn)), - : "memory", "cc" - ), + : .{ .memory = true, .cc = true }), else => asm volatile ( \\ svc #0 : : [number] "{x8}" (@intFromEnum(SYS.rt_sigreturn)), - : "memory", "cc" - ), + : .{ .memory = true, .cc = true }), } } diff --git a/lib/std/os/linux/arm.zig b/lib/std/os/linux/arm.zig index ec7616fe82..1b9bc913f8 100644 --- a/lib/std/os/linux/arm.zig +++ b/lib/std/os/linux/arm.zig @@ -17,8 +17,7 @@ pub fn syscall0(number: SYS) usize { return asm volatile ("svc #0" : [ret] "={r0}" (-> usize), : [number] "{r7}" (@intFromEnum(number)), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -26,8 +25,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={r0}" (-> usize), : [number] "{r7}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -36,8 +34,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{r7}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -47,8 +44,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), [arg3] "{r2}" (arg3), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -59,8 +55,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{r1}" (arg2), [arg3] "{r2}" (arg3), [arg4] "{r3}" (arg4), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -72,8 +67,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{r2}" (arg3), [arg4] "{r3}" (arg4), [arg5] "{r4}" (arg5), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall6( @@ -94,8 +88,7 @@ pub fn syscall6( [arg4] "{r3}" (arg4), [arg5] "{r4}" (arg5), [arg6] "{r5}" (arg6), - : "memory" - ); + : .{ .memory = true }); } pub fn clone() callconv(.naked) usize { @@ -141,14 +134,12 @@ pub fn restore() callconv(.naked) noreturn { \\ svc #0 : : [number] "I" (@intFromEnum(SYS.sigreturn)), - : "memory" - ), + : .{ .memory = true }), else => asm volatile ( \\ svc #0 : : [number] "{r7}" (@intFromEnum(SYS.sigreturn)), - : "memory" - ), + : .{ .memory = true }), } } @@ -159,14 +150,12 @@ pub fn restore_rt() callconv(.naked) noreturn { \\ svc #0 : : [number] "I" (@intFromEnum(SYS.rt_sigreturn)), - : "memory" - ), + : .{ .memory = true }), else => asm volatile ( \\ svc #0 : : [number] "{r7}" (@intFromEnum(SYS.rt_sigreturn)), - : "memory" - ), + : .{ .memory = true }), } } diff --git a/lib/std/os/linux/hexagon.zig b/lib/std/os/linux/hexagon.zig index dcc19cd96b..a3acbee50b 100644 --- a/lib/std/os/linux/hexagon.zig +++ b/lib/std/os/linux/hexagon.zig @@ -15,8 +15,7 @@ pub fn syscall0(number: SYS) usize { return asm volatile ("trap0(#1)" : [ret] "={r0}" (-> usize), : [number] "{r6}" (@intFromEnum(number)), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -24,8 +23,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={r0}" (-> usize), : [number] "{r6}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -34,8 +32,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{r6}" (@intFromEnum(number)), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -45,8 +42,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), [arg3] "{r2}" (arg3), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -57,8 +53,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{r1}" (arg2), [arg3] "{r2}" (arg3), [arg4] "{r3}" (arg4), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -70,8 +65,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{r2}" (arg3), [arg4] "{r3}" (arg4), [arg5] "{r4}" (arg5), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall6( @@ -92,8 +86,7 @@ pub fn syscall6( [arg4] "{r3}" (arg4), [arg5] "{r4}" (arg5), [arg6] "{r5}" (arg6), - : "memory" - ); + : .{ .memory = true }); } pub fn clone() callconv(.naked) usize { @@ -142,8 +135,7 @@ pub fn restore_rt() callconv(.naked) noreturn { \\ trap0(#0) : : [number] "{r6}" (@intFromEnum(SYS.rt_sigreturn)), - : "memory" - ); + : .{ .memory = true }); } pub const F = struct { diff --git a/lib/std/os/linux/loongarch64.zig b/lib/std/os/linux/loongarch64.zig index 50c4664ac8..89863dda1c 100644 --- a/lib/std/os/linux/loongarch64.zig +++ b/lib/std/os/linux/loongarch64.zig @@ -17,8 +17,7 @@ pub fn syscall0(number: SYS) usize { \\ syscall 0 : [ret] "={$r4}" (-> usize), : [number] "{$r11}" (@intFromEnum(number)), - : "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8", "memory" - ); + : .{ .@"$t0" = true, .@"$t1" = true, .@"$t2" = true, .@"$t3" = true, .@"$t4" = true, .@"$t5" = true, .@"$t6" = true, .@"$t7" = true, .@"$t8" = true, .memory = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -27,8 +26,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={$r4}" (-> usize), : [number] "{$r11}" (@intFromEnum(number)), [arg1] "{$r4}" (arg1), - : "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8", "memory" - ); + : .{ .@"$t0" = true, .@"$t1" = true, .@"$t2" = true, .@"$t3" = true, .@"$t4" = true, .@"$t5" = true, .@"$t6" = true, .@"$t7" = true, .@"$t8" = true, .memory = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -38,8 +36,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{$r11}" (@intFromEnum(number)), [arg1] "{$r4}" (arg1), [arg2] "{$r5}" (arg2), - : "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8", "memory" - ); + : .{ .@"$t0" = true, .@"$t1" = true, .@"$t2" = true, .@"$t3" = true, .@"$t4" = true, .@"$t5" = true, .@"$t6" = true, .@"$t7" = true, .@"$t8" = true, .memory = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -50,8 +47,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{$r4}" (arg1), [arg2] "{$r5}" (arg2), [arg3] "{$r6}" (arg3), - : "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8", "memory" - ); + : .{ .@"$t0" = true, .@"$t1" = true, .@"$t2" = true, .@"$t3" = true, .@"$t4" = true, .@"$t5" = true, .@"$t6" = true, .@"$t7" = true, .@"$t8" = true, .memory = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -63,8 +59,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{$r5}" (arg2), [arg3] "{$r6}" (arg3), [arg4] "{$r7}" (arg4), - : "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8", "memory" - ); + : .{ .@"$t0" = true, .@"$t1" = true, .@"$t2" = true, .@"$t3" = true, .@"$t4" = true, .@"$t5" = true, .@"$t6" = true, .@"$t7" = true, .@"$t8" = true, .memory = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -77,8 +72,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{$r6}" (arg3), [arg4] "{$r7}" (arg4), [arg5] "{$r8}" (arg5), - : "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8", "memory" - ); + : .{ .@"$t0" = true, .@"$t1" = true, .@"$t2" = true, .@"$t3" = true, .@"$t4" = true, .@"$t5" = true, .@"$t6" = true, .@"$t7" = true, .@"$t8" = true, .memory = true }); } pub fn syscall6( @@ -100,8 +94,7 @@ pub fn syscall6( [arg4] "{$r7}" (arg4), [arg5] "{$r8}" (arg5), [arg6] "{$r9}" (arg6), - : "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8", "memory" - ); + : .{ .@"$t0" = true, .@"$t1" = true, .@"$t2" = true, .@"$t3" = true, .@"$t4" = true, .@"$t5" = true, .@"$t6" = true, .@"$t7" = true, .@"$t8" = true, .memory = true }); } pub fn clone() callconv(.naked) usize { @@ -150,8 +143,7 @@ pub fn restore_rt() callconv(.naked) noreturn { \\ syscall 0 : : [number] "r" (@intFromEnum(SYS.rt_sigreturn)), - : "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8", "memory" - ); + : .{ .@"$t0" = true, .@"$t1" = true, .@"$t2" = true, .@"$t3" = true, .@"$t4" = true, .@"$t5" = true, .@"$t6" = true, .@"$t7" = true, .@"$t8" = true, .memory = true }); } pub const msghdr = extern struct { diff --git a/lib/std/os/linux/m68k.zig b/lib/std/os/linux/m68k.zig index 0b89c329a8..fde03e3fa9 100644 --- a/lib/std/os/linux/m68k.zig +++ b/lib/std/os/linux/m68k.zig @@ -15,8 +15,7 @@ pub fn syscall0(number: SYS) usize { return asm volatile ("trap #0" : [ret] "={d0}" (-> usize), : [number] "{d0}" (@intFromEnum(number)), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -24,8 +23,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={d0}" (-> usize), : [number] "{d0}" (@intFromEnum(number)), [arg1] "{d1}" (arg1), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -34,8 +32,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{d0}" (@intFromEnum(number)), [arg1] "{d1}" (arg1), [arg2] "{d2}" (arg2), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -45,8 +42,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{d1}" (arg1), [arg2] "{d2}" (arg2), [arg3] "{d3}" (arg3), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -57,8 +53,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{d2}" (arg2), [arg3] "{d3}" (arg3), [arg4] "{d4}" (arg4), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -70,8 +65,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{d3}" (arg3), [arg4] "{d4}" (arg4), [arg5] "{d5}" (arg5), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall6( @@ -92,8 +86,7 @@ pub fn syscall6( [arg4] "{d4}" (arg4), [arg5] "{d5}" (arg5), [arg6] "{a0}" (arg6), - : "memory" - ); + : .{ .memory = true }); } pub fn clone() callconv(.naked) usize { @@ -155,8 +148,7 @@ pub fn restore_rt() callconv(.naked) noreturn { asm volatile ("trap #0" : : [number] "{d0}" (@intFromEnum(SYS.rt_sigreturn)), - : "memory" - ); + : .{ .memory = true }); } pub const F = struct { diff --git a/lib/std/os/linux/mips.zig b/lib/std/os/linux/mips.zig index b12854ea17..c720a03fac 100644 --- a/lib/std/os/linux/mips.zig +++ b/lib/std/os/linux/mips.zig @@ -21,8 +21,7 @@ pub fn syscall0(number: SYS) usize { \\ 1: : [ret] "={$2}" (-> usize), : [number] "{$2}" (@intFromEnum(number)), - : "$1", "$3", "$4", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$4" = true, .@"$5" = true, .@"$6" = true, .@"$7" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn syscall_pipe(fd: *[2]i32) usize { @@ -41,8 +40,7 @@ pub fn syscall_pipe(fd: *[2]i32) usize { : [ret] "={$2}" (-> usize), : [number] "{$2}" (@intFromEnum(SYS.pipe)), [fd] "{$4}" (fd), - : "$1", "$3", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$5" = true, .@"$6" = true, .@"$7" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -55,8 +53,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={$2}" (-> usize), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), - : "$1", "$3", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$5" = true, .@"$6" = true, .@"$7" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -70,8 +67,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), - : "$1", "$3", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$6" = true, .@"$7" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -86,8 +82,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), [arg3] "{$6}" (arg3), - : "$1", "$3", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$7" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -103,8 +98,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{$5}" (arg2), [arg3] "{$6}" (arg3), [arg4] "{$7}" (arg4), - : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -125,8 +119,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{$6}" (arg3), [arg4] "{$7}" (arg4), [arg5] "r" (arg5), - : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } // NOTE: The o32 calling convention requires the callee to reserve 16 bytes for @@ -160,8 +153,7 @@ pub fn syscall6( [arg4] "{$7}" (arg4), [arg5] "r" (arg5), [arg6] "r" (arg6), - : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn syscall7( @@ -195,8 +187,7 @@ pub fn syscall7( [arg5] "r" (arg5), [arg6] "r" (arg6), [arg7] "r" (arg7), - : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn clone() callconv(.naked) usize { @@ -255,8 +246,7 @@ pub fn restore() callconv(.naked) noreturn { \\ syscall : : [number] "{$2}" (@intFromEnum(SYS.sigreturn)), - : "$1", "$3", "$4", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$4" = true, .@"$5" = true, .@"$6" = true, .@"$7" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn restore_rt() callconv(.naked) noreturn { @@ -264,8 +254,7 @@ pub fn restore_rt() callconv(.naked) noreturn { \\ syscall : : [number] "{$2}" (@intFromEnum(SYS.rt_sigreturn)), - : "$1", "$3", "$4", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$4" = true, .@"$5" = true, .@"$6" = true, .@"$7" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub const F = struct { diff --git a/lib/std/os/linux/mips64.zig b/lib/std/os/linux/mips64.zig index 6e47f203a6..d2929d5d28 100644 --- a/lib/std/os/linux/mips64.zig +++ b/lib/std/os/linux/mips64.zig @@ -21,8 +21,7 @@ pub fn syscall0(number: SYS) usize { \\ 1: : [ret] "={$2}" (-> usize), : [number] "{$2}" (@intFromEnum(number)), - : "$1", "$3", "$4", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$4" = true, .@"$5" = true, .@"$6" = true, .@"$7" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn syscall_pipe(fd: *[2]i32) usize { @@ -41,8 +40,7 @@ pub fn syscall_pipe(fd: *[2]i32) usize { : [ret] "={$2}" (-> usize), : [number] "{$2}" (@intFromEnum(SYS.pipe)), [fd] "{$4}" (fd), - : "$1", "$3", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$5" = true, .@"$6" = true, .@"$7" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -56,8 +54,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={$2}" (-> usize), : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), - : "$1", "$3", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$5" = true, .@"$6" = true, .@"$7" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -71,8 +68,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{$2}" (@intFromEnum(number)), [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), - : "$1", "$3", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$6" = true, .@"$7" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -87,8 +83,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{$4}" (arg1), [arg2] "{$5}" (arg2), [arg3] "{$6}" (arg3), - : "$1", "$3", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$7" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -104,8 +99,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{$5}" (arg2), [arg3] "{$6}" (arg3), [arg4] "{$7}" (arg4), - : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -122,8 +116,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{$6}" (arg3), [arg4] "{$7}" (arg4), [arg5] "{$8}" (arg5), - : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn syscall6( @@ -149,8 +142,7 @@ pub fn syscall6( [arg4] "{$7}" (arg4), [arg5] "{$8}" (arg5), [arg6] "{$9}" (arg6), - : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn syscall7( @@ -178,8 +170,7 @@ pub fn syscall7( [arg5] "{$8}" (arg5), [arg6] "{$9}" (arg6), [arg7] "{$10}" (arg7), - : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn clone() callconv(.naked) usize { @@ -234,8 +225,7 @@ pub fn restore() callconv(.naked) noreturn { \\ syscall : : [number] "{$2}" (@intFromEnum(SYS.rt_sigreturn)), - : "$1", "$3", "$4", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$4" = true, .@"$5" = true, .@"$6" = true, .@"$7" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub fn restore_rt() callconv(.naked) noreturn { @@ -243,8 +233,7 @@ pub fn restore_rt() callconv(.naked) noreturn { \\ syscall : : [number] "{$2}" (@intFromEnum(SYS.rt_sigreturn)), - : "$1", "$3", "$4", "$5", "$6", "$7", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "hi", "lo", "memory" - ); + : .{ .@"$1" = true, .@"$3" = true, .@"$4" = true, .@"$5" = true, .@"$6" = true, .@"$7" = true, .@"$8" = true, .@"$9" = true, .@"$10" = true, .@"$11" = true, .@"$12" = true, .@"$13" = true, .@"$14" = true, .@"$15" = true, .@"$24" = true, .@"$25" = true, .hi = true, .lo = true, .memory = true }); } pub const F = struct { diff --git a/lib/std/os/linux/powerpc.zig b/lib/std/os/linux/powerpc.zig index 1fe4c8349f..018ea2309c 100644 --- a/lib/std/os/linux/powerpc.zig +++ b/lib/std/os/linux/powerpc.zig @@ -22,8 +22,7 @@ pub fn syscall0(number: SYS) usize { \\ 1: : [ret] "={r3}" (-> usize), : [number] "{r0}" (@intFromEnum(number)), - : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -35,8 +34,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={r3}" (-> usize), : [number] "{r0}" (@intFromEnum(number)), [arg1] "{r3}" (arg1), - : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -49,8 +47,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{r0}" (@intFromEnum(number)), [arg1] "{r3}" (arg1), [arg2] "{r4}" (arg2), - : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -64,8 +61,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{r3}" (arg1), [arg2] "{r4}" (arg2), [arg3] "{r5}" (arg3), - : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -80,8 +76,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{r4}" (arg2), [arg3] "{r5}" (arg3), [arg4] "{r6}" (arg4), - : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -97,8 +92,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{r5}" (arg3), [arg4] "{r6}" (arg4), [arg5] "{r7}" (arg5), - : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub fn syscall6( @@ -123,8 +117,7 @@ pub fn syscall6( [arg4] "{r6}" (arg4), [arg5] "{r7}" (arg5), [arg6] "{r8}" (arg6), - : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub fn clone() callconv(.naked) usize { @@ -204,8 +197,7 @@ pub fn restore_rt() callconv(.naked) noreturn { \\ sc : : [number] "{r0}" (@intFromEnum(SYS.rt_sigreturn)), - : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub const F = struct { diff --git a/lib/std/os/linux/powerpc64.zig b/lib/std/os/linux/powerpc64.zig index 88414b7207..d737738c4c 100644 --- a/lib/std/os/linux/powerpc64.zig +++ b/lib/std/os/linux/powerpc64.zig @@ -22,8 +22,7 @@ pub fn syscall0(number: SYS) usize { \\ 1: : [ret] "={r3}" (-> usize), : [number] "{r0}" (@intFromEnum(number)), - : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -35,8 +34,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={r3}" (-> usize), : [number] "{r0}" (@intFromEnum(number)), [arg1] "{r3}" (arg1), - : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -49,8 +47,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{r0}" (@intFromEnum(number)), [arg1] "{r3}" (arg1), [arg2] "{r4}" (arg2), - : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -64,8 +61,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{r3}" (arg1), [arg2] "{r4}" (arg2), [arg3] "{r5}" (arg3), - : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -80,8 +76,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{r4}" (arg2), [arg3] "{r5}" (arg3), [arg4] "{r6}" (arg4), - : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -97,8 +92,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{r5}" (arg3), [arg4] "{r6}" (arg4), [arg5] "{r7}" (arg5), - : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub fn syscall6( @@ -123,8 +117,7 @@ pub fn syscall6( [arg4] "{r6}" (arg4), [arg5] "{r7}" (arg5), [arg6] "{r8}" (arg6), - : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub fn clone() callconv(.naked) usize { @@ -189,8 +182,7 @@ pub fn restore_rt() callconv(.naked) noreturn { \\ sc : : [number] "{r0}" (@intFromEnum(SYS.rt_sigreturn)), - : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" - ); + : .{ .memory = true, .cr0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); } pub const F = struct { diff --git a/lib/std/os/linux/riscv32.zig b/lib/std/os/linux/riscv32.zig index bbe9fab8f0..31e97743dc 100644 --- a/lib/std/os/linux/riscv32.zig +++ b/lib/std/os/linux/riscv32.zig @@ -17,8 +17,7 @@ pub fn syscall0(number: SYS) usize { return asm volatile ("ecall" : [ret] "={x10}" (-> usize), : [number] "{x17}" (@intFromEnum(number)), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -26,8 +25,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={x10}" (-> usize), : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -36,8 +34,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), [arg2] "{x11}" (arg2), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -47,8 +44,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{x10}" (arg1), [arg2] "{x11}" (arg2), [arg3] "{x12}" (arg3), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -59,8 +55,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{x11}" (arg2), [arg3] "{x12}" (arg3), [arg4] "{x13}" (arg4), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -72,8 +67,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{x12}" (arg3), [arg4] "{x13}" (arg4), [arg5] "{x14}" (arg5), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall6( @@ -94,8 +88,7 @@ pub fn syscall6( [arg4] "{x13}" (arg4), [arg5] "{x14}" (arg5), [arg6] "{x15}" (arg6), - : "memory" - ); + : .{ .memory = true }); } pub fn clone() callconv(.naked) usize { @@ -149,8 +142,7 @@ pub fn restore_rt() callconv(.naked) noreturn { \\ ecall : : [number] "{x17}" (@intFromEnum(SYS.rt_sigreturn)), - : "memory" - ); + : .{ .memory = true }); } pub const F = struct { diff --git a/lib/std/os/linux/riscv64.zig b/lib/std/os/linux/riscv64.zig index 5fea49b8e2..3498fb8fba 100644 --- a/lib/std/os/linux/riscv64.zig +++ b/lib/std/os/linux/riscv64.zig @@ -17,8 +17,7 @@ pub fn syscall0(number: SYS) usize { return asm volatile ("ecall" : [ret] "={x10}" (-> usize), : [number] "{x17}" (@intFromEnum(number)), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -26,8 +25,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={x10}" (-> usize), : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -36,8 +34,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{x17}" (@intFromEnum(number)), [arg1] "{x10}" (arg1), [arg2] "{x11}" (arg2), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -47,8 +44,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{x10}" (arg1), [arg2] "{x11}" (arg2), [arg3] "{x12}" (arg3), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -59,8 +55,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{x11}" (arg2), [arg3] "{x12}" (arg3), [arg4] "{x13}" (arg4), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -72,8 +67,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{x12}" (arg3), [arg4] "{x13}" (arg4), [arg5] "{x14}" (arg5), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall6( @@ -94,8 +88,7 @@ pub fn syscall6( [arg4] "{x13}" (arg4), [arg5] "{x14}" (arg5), [arg6] "{x15}" (arg6), - : "memory" - ); + : .{ .memory = true }); } pub fn clone() callconv(.naked) usize { @@ -149,8 +142,7 @@ pub fn restore_rt() callconv(.naked) noreturn { \\ ecall : : [number] "{x17}" (@intFromEnum(SYS.rt_sigreturn)), - : "memory" - ); + : .{ .memory = true }); } pub const F = struct { diff --git a/lib/std/os/linux/s390x.zig b/lib/std/os/linux/s390x.zig index 614c33d076..50109aa35f 100644 --- a/lib/std/os/linux/s390x.zig +++ b/lib/std/os/linux/s390x.zig @@ -17,8 +17,7 @@ pub fn syscall0(number: SYS) usize { return asm volatile ("svc 0" : [ret] "={r2}" (-> usize), : [number] "{r1}" (@intFromEnum(number)), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -26,8 +25,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={r2}" (-> usize), : [number] "{r1}" (@intFromEnum(number)), [arg1] "{r2}" (arg1), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -36,8 +34,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{r1}" (@intFromEnum(number)), [arg1] "{r2}" (arg1), [arg2] "{r3}" (arg2), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -47,8 +44,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{r2}" (arg1), [arg2] "{r3}" (arg2), [arg3] "{r4}" (arg3), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -59,8 +55,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{r3}" (arg2), [arg3] "{r4}" (arg3), [arg4] "{r5}" (arg4), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -72,8 +67,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{r4}" (arg3), [arg4] "{r5}" (arg4), [arg5] "{r6}" (arg5), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall6(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize, arg6: usize) usize { @@ -86,8 +80,7 @@ pub fn syscall6(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg4] "{r5}" (arg4), [arg5] "{r6}" (arg5), [arg6] "{r7}" (arg6), - : "memory" - ); + : .{ .memory = true }); } pub fn clone() callconv(.naked) usize { @@ -161,8 +154,7 @@ pub fn restore_rt() callconv(.naked) noreturn { \\svc 0 : : [number] "{r1}" (@intFromEnum(SYS.rt_sigreturn)), - : "memory" - ); + : .{ .memory = true }); } pub const F = struct { diff --git a/lib/std/os/linux/sparc64.zig b/lib/std/os/linux/sparc64.zig index d34ca92368..1377343888 100644 --- a/lib/std/os/linux/sparc64.zig +++ b/lib/std/os/linux/sparc64.zig @@ -32,8 +32,7 @@ pub fn syscall_pipe(fd: *[2]i32) usize { : [ret] "={o0}" (-> usize), : [number] "{g1}" (@intFromEnum(SYS.pipe)), [arg] "r" (fd), - : "memory", "g3" - ); + : .{ .memory = true, .g3 = true }); } pub fn syscall_fork() usize { @@ -55,8 +54,7 @@ pub fn syscall_fork() usize { \\ 2: : [ret] "={o0}" (-> usize), : [number] "{g1}" (@intFromEnum(SYS.fork)), - : "memory", "xcc", "o1", "o2", "o3", "o4", "o5", "o7" - ); + : .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } pub fn syscall0(number: SYS) usize { @@ -68,8 +66,7 @@ pub fn syscall0(number: SYS) usize { \\ 1: : [ret] "={o0}" (-> usize), : [number] "{g1}" (@intFromEnum(number)), - : "memory", "xcc", "o1", "o2", "o3", "o4", "o5", "o7" - ); + : .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -82,8 +79,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={o0}" (-> usize), : [number] "{g1}" (@intFromEnum(number)), [arg1] "{o0}" (arg1), - : "memory", "xcc", "o1", "o2", "o3", "o4", "o5", "o7" - ); + : .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -97,8 +93,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{g1}" (@intFromEnum(number)), [arg1] "{o0}" (arg1), [arg2] "{o1}" (arg2), - : "memory", "xcc", "o1", "o2", "o3", "o4", "o5", "o7" - ); + : .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -113,8 +108,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{o0}" (arg1), [arg2] "{o1}" (arg2), [arg3] "{o2}" (arg3), - : "memory", "xcc", "o1", "o2", "o3", "o4", "o5", "o7" - ); + : .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -130,8 +124,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{o1}" (arg2), [arg3] "{o2}" (arg3), [arg4] "{o3}" (arg4), - : "memory", "xcc", "o1", "o2", "o3", "o4", "o5", "o7" - ); + : .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -148,8 +141,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{o2}" (arg3), [arg4] "{o3}" (arg4), [arg5] "{o4}" (arg5), - : "memory", "xcc", "o1", "o2", "o3", "o4", "o5", "o7" - ); + : .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } pub fn syscall6( @@ -175,8 +167,7 @@ pub fn syscall6( [arg4] "{o3}" (arg4), [arg5] "{o4}" (arg5), [arg6] "{o5}" (arg6), - : "memory", "xcc", "o1", "o2", "o3", "o4", "o5", "o7" - ); + : .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } pub fn clone() callconv(.naked) usize { @@ -242,8 +233,7 @@ pub fn restore_rt() callconv(.c) void { return asm volatile ("t 0x6d" : : [number] "{g1}" (@intFromEnum(SYS.rt_sigreturn)), - : "memory", "xcc", "o0", "o1", "o2", "o3", "o4", "o5", "o7" - ); + : .{ .memory = true, .xcc = true, .o0 = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true }); } pub const F = struct { diff --git a/lib/std/os/linux/thumb.zig b/lib/std/os/linux/thumb.zig index 6816b47c26..5146355d77 100644 --- a/lib/std/os/linux/thumb.zig +++ b/lib/std/os/linux/thumb.zig @@ -18,8 +18,7 @@ pub fn syscall0(number: SYS) usize { \\ ldr r7, [%[tmp], #4] : [ret] "={r0}" (-> usize), : [tmp] "{r1}" (&buf), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -34,8 +33,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={r0}" (-> usize), : [tmp] "{r1}" (&buf), [arg1] "{r0}" (arg1), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -51,8 +49,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [tmp] "{r2}" (&buf), [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -69,8 +66,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{r0}" (arg1), [arg2] "{r1}" (arg2), [arg3] "{r2}" (arg3), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -88,8 +84,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{r1}" (arg2), [arg3] "{r2}" (arg3), [arg4] "{r3}" (arg4), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -108,8 +103,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{r2}" (arg3), [arg4] "{r3}" (arg4), [arg5] "{r4}" (arg5), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall6( @@ -137,8 +131,7 @@ pub fn syscall6( [arg4] "{r3}" (arg4), [arg5] "{r4}" (arg5), [arg6] "{r5}" (arg6), - : "memory" - ); + : .{ .memory = true }); } pub const clone = @import("arm.zig").clone; @@ -158,6 +151,5 @@ pub fn restore_rt() callconv(.naked) noreturn { \\ svc #0 : : [number] "I" (@intFromEnum(SYS.rt_sigreturn)), - : "memory" - ); + : .{ .memory = true }); } diff --git a/lib/std/os/linux/tls.zig b/lib/std/os/linux/tls.zig index 3587512e65..4433727d9a 100644 --- a/lib/std/os/linux/tls.zig +++ b/lib/std/os/linux/tls.zig @@ -308,8 +308,7 @@ pub fn setThreadPointer(addr: usize) void { \\ sar %%a0, %%r0 : : [addr] "r" (addr), - : "r0" - ); + : .{ .r0 = true }); }, .sparc, .sparc64 => { asm volatile ( diff --git a/lib/std/os/linux/x86.zig b/lib/std/os/linux/x86.zig index cc3932c899..8a2310ebed 100644 --- a/lib/std/os/linux/x86.zig +++ b/lib/std/os/linux/x86.zig @@ -18,8 +18,7 @@ pub fn syscall0(number: SYS) usize { return asm volatile ("int $0x80" : [ret] "={eax}" (-> usize), : [number] "{eax}" (@intFromEnum(number)), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -27,8 +26,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={eax}" (-> usize), : [number] "{eax}" (@intFromEnum(number)), [arg1] "{ebx}" (arg1), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -37,8 +35,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{eax}" (@intFromEnum(number)), [arg1] "{ebx}" (arg1), [arg2] "{ecx}" (arg2), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -48,8 +45,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{ebx}" (arg1), [arg2] "{ecx}" (arg2), [arg3] "{edx}" (arg3), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -60,8 +56,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{ecx}" (arg2), [arg3] "{edx}" (arg3), [arg4] "{esi}" (arg4), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -73,8 +68,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{edx}" (arg3), [arg4] "{esi}" (arg4), [arg5] "{edi}" (arg5), - : "memory" - ); + : .{ .memory = true }); } pub fn syscall6( @@ -108,8 +102,7 @@ pub fn syscall6( [arg4] "{esi}" (arg4), [arg5] "rm" (arg5), [arg6] "rm" (arg6), - : "memory" - ); + : .{ .memory = true }); } pub fn socketcall(call: usize, args: [*]const usize) usize { @@ -118,8 +111,7 @@ pub fn socketcall(call: usize, args: [*]const usize) usize { : [number] "{eax}" (@intFromEnum(SYS.socketcall)), [arg1] "{ebx}" (call), [arg2] "{ecx}" (@intFromPtr(args)), - : "memory" - ); + : .{ .memory = true }); } pub fn clone() callconv(.naked) usize { @@ -179,14 +171,12 @@ pub fn restore() callconv(.naked) noreturn { \\ int $0x80 : : [number] "i" (@intFromEnum(SYS.sigreturn)), - : "memory" - ), + : .{ .memory = true }), else => asm volatile ( \\ int $0x80 : : [number] "{eax}" (@intFromEnum(SYS.sigreturn)), - : "memory" - ), + : .{ .memory = true }), } } @@ -197,14 +187,12 @@ pub fn restore_rt() callconv(.naked) noreturn { \\ int $0x80 : : [number] "i" (@intFromEnum(SYS.rt_sigreturn)), - : "memory" - ), + : .{ .memory = true }), else => asm volatile ( \\ int $0x80 : : [number] "{eax}" (@intFromEnum(SYS.rt_sigreturn)), - : "memory" - ), + : .{ .memory = true }), } } @@ -442,8 +430,7 @@ pub fn getContextInternal() callconv(.naked) usize { [sigprocmask] "i" (@intFromEnum(linux.SYS.rt_sigprocmask)), [sigmask_offset] "i" (@offsetOf(ucontext_t, "sigmask")), [sigset_size] "i" (linux.NSIG / 8), - : "cc", "memory", "eax", "ecx", "edx" - ); + : .{ .cc = true, .memory = true, .eax = true, .ecx = true, .edx = true }); } pub inline fn getcontext(context: *ucontext_t) usize { @@ -457,6 +444,5 @@ pub inline fn getcontext(context: *ucontext_t) usize { [_] "={edx}" (clobber_edx), : [_] "{edx}" (context), [getContextInternal] "X" (&getContextInternal), - : "cc", "memory", "ecx" - ); + : .{ .cc = true, .memory = true, .ecx = true }); } diff --git a/lib/std/os/linux/x86_64.zig b/lib/std/os/linux/x86_64.zig index bd08c3f147..cf9714dd13 100644 --- a/lib/std/os/linux/x86_64.zig +++ b/lib/std/os/linux/x86_64.zig @@ -20,8 +20,7 @@ pub fn syscall0(number: SYS) usize { return asm volatile ("syscall" : [ret] "={rax}" (-> usize), : [number] "{rax}" (@intFromEnum(number)), - : "rcx", "r11", "memory" - ); + : .{ .rcx = true, .r11 = true, .memory = true }); } pub fn syscall1(number: SYS, arg1: usize) usize { @@ -29,8 +28,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize { : [ret] "={rax}" (-> usize), : [number] "{rax}" (@intFromEnum(number)), [arg1] "{rdi}" (arg1), - : "rcx", "r11", "memory" - ); + : .{ .rcx = true, .r11 = true, .memory = true }); } pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { @@ -39,8 +37,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { : [number] "{rax}" (@intFromEnum(number)), [arg1] "{rdi}" (arg1), [arg2] "{rsi}" (arg2), - : "rcx", "r11", "memory" - ); + : .{ .rcx = true, .r11 = true, .memory = true }); } pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { @@ -50,8 +47,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { [arg1] "{rdi}" (arg1), [arg2] "{rsi}" (arg2), [arg3] "{rdx}" (arg3), - : "rcx", "r11", "memory" - ); + : .{ .rcx = true, .r11 = true, .memory = true }); } pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { @@ -62,8 +58,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) [arg2] "{rsi}" (arg2), [arg3] "{rdx}" (arg3), [arg4] "{r10}" (arg4), - : "rcx", "r11", "memory" - ); + : .{ .rcx = true, .r11 = true, .memory = true }); } pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { @@ -75,8 +70,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, [arg3] "{rdx}" (arg3), [arg4] "{r10}" (arg4), [arg5] "{r8}" (arg5), - : "rcx", "r11", "memory" - ); + : .{ .rcx = true, .r11 = true, .memory = true }); } pub fn syscall6( @@ -97,8 +91,7 @@ pub fn syscall6( [arg4] "{r10}" (arg4), [arg5] "{r8}" (arg5), [arg6] "{r9}" (arg6), - : "rcx", "r11", "memory" - ); + : .{ .rcx = true, .r11 = true, .memory = true }); } pub fn clone() callconv(.naked) usize { @@ -144,14 +137,12 @@ pub fn restore_rt() callconv(.naked) noreturn { \\ syscall : : [number] "i" (@intFromEnum(SYS.rt_sigreturn)), - : "rcx", "r11", "memory" - ), + : .{ .rcx = true, .r11 = true, .memory = true }), else => asm volatile ( \\ syscall : : [number] "{rax}" (@intFromEnum(SYS.rt_sigreturn)), - : "rcx", "r11", "memory" - ), + : .{ .rcx = true, .r11 = true, .memory = true }), } } @@ -440,8 +431,7 @@ fn getContextInternal() callconv(.naked) usize { [sigprocmask] "i" (@intFromEnum(linux.SYS.rt_sigprocmask)), [sigmask_offset] "i" (@offsetOf(ucontext_t, "sigmask")), [sigset_size] "i" (@sizeOf(sigset_t)), - : "cc", "memory", "rax", "rcx", "rdx", "rdi", "rsi", "r8", "r10", "r11" - ); + : .{ .cc = true, .memory = true, .rax = true, .rcx = true, .rdx = true, .rdi = true, .rsi = true, .r8 = true, .r10 = true, .r11 = true }); } pub inline fn getcontext(context: *ucontext_t) usize { @@ -455,6 +445,5 @@ pub inline fn getcontext(context: *ucontext_t) usize { [_] "={rdi}" (clobber_rdi), : [_] "{rdi}" (context), [getContextInternal] "X" (&getContextInternal), - : "cc", "memory", "rcx", "rdx", "rsi", "r8", "r10", "r11" - ); + : .{ .cc = true, .memory = true, .rcx = true, .rdx = true, .rsi = true, .r8 = true, .r10 = true, .r11 = true }); } diff --git a/lib/std/os/plan9/x86_64.zig b/lib/std/os/plan9/x86_64.zig index ce8d44ff46..b921c079ef 100644 --- a/lib/std/os/plan9/x86_64.zig +++ b/lib/std/os/plan9/x86_64.zig @@ -11,8 +11,7 @@ pub fn syscall1(sys: plan9.SYS, arg0: usize) usize { : [ret] "={rax}" (-> usize), : [arg0] "{r8}" (arg0), [syscall_number] "{rbp}" (@intFromEnum(sys)), - : "rcx", "rax", "rbp", "r11", "memory" - ); + : .{ .rcx = true, .rax = true, .rbp = true, .r11 = true, .memory = true }); } pub fn syscall2(sys: plan9.SYS, arg0: usize, arg1: usize) usize { return asm volatile ( @@ -27,8 +26,7 @@ pub fn syscall2(sys: plan9.SYS, arg0: usize, arg1: usize) usize { : [arg0] "{r8}" (arg0), [arg1] "{r9}" (arg1), [syscall_number] "{rbp}" (@intFromEnum(sys)), - : "rcx", "rax", "rbp", "r11", "memory" - ); + : .{ .rcx = true, .rax = true, .rbp = true, .r11 = true, .memory = true }); } pub fn syscall3(sys: plan9.SYS, arg0: usize, arg1: usize, arg2: usize) usize { return asm volatile ( @@ -46,8 +44,7 @@ pub fn syscall3(sys: plan9.SYS, arg0: usize, arg1: usize, arg2: usize) usize { [arg1] "{r9}" (arg1), [arg2] "{r10}" (arg2), [syscall_number] "{rbp}" (@intFromEnum(sys)), - : "rcx", "rax", "rbp", "r11", "memory" - ); + : .{ .rcx = true, .rax = true, .rbp = true, .r11 = true, .memory = true }); } pub fn syscall4(sys: plan9.SYS, arg0: usize, arg1: usize, arg2: usize, arg3: usize) usize { return asm volatile ( @@ -68,6 +65,5 @@ pub fn syscall4(sys: plan9.SYS, arg0: usize, arg1: usize, arg2: usize, arg3: usi [arg2] "{r10}" (arg2), [arg3] "{r11}" (arg3), [syscall_number] "{rbp}" (@intFromEnum(sys)), - : "rcx", "rax", "rbp", "r11", "memory" - ); + : .{ .rcx = true, .rax = true, .rbp = true, .r11 = true, .memory = true }); } diff --git a/lib/std/pie.zig b/lib/std/pie.zig index 0f4b4ff4b3..74cc02a635 100644 --- a/lib/std/pie.zig +++ b/lib/std/pie.zig @@ -100,8 +100,7 @@ inline fn getDynamicSymbol() [*]const elf.Dyn { \\ %[ret] = add(r1, %[ret]) : [ret] "=r" (-> [*]const elf.Dyn), : - : "r1" - ), + : .{ .r1 = true }), .loongarch32, .loongarch64 => asm volatile ( \\ .weak _DYNAMIC \\ .hidden _DYNAMIC @@ -127,8 +126,7 @@ inline fn getDynamicSymbol() [*]const elf.Dyn { \\ addu %[ret], %[ret], $gp : [ret] "=r" (-> [*]const elf.Dyn), : - : "lr" - ), + : .{ .lr = true }), .mips64, .mips64el => asm volatile ( \\ .weak _DYNAMIC \\ .hidden _DYNAMIC @@ -140,8 +138,7 @@ inline fn getDynamicSymbol() [*]const elf.Dyn { \\ daddu %[ret], %[ret], $gp : [ret] "=r" (-> [*]const elf.Dyn), : - : "lr" - ), + : .{ .lr = true }), .powerpc, .powerpcle => asm volatile ( \\ .weak _DYNAMIC \\ .hidden _DYNAMIC @@ -153,8 +150,7 @@ inline fn getDynamicSymbol() [*]const elf.Dyn { \\ add %[ret], 4, %[ret] : [ret] "=r" (-> [*]const elf.Dyn), : - : "lr", "r4" - ), + : .{ .lr = true, .r4 = true }), .powerpc64, .powerpc64le => asm volatile ( \\ .weak _DYNAMIC \\ .hidden _DYNAMIC @@ -166,8 +162,7 @@ inline fn getDynamicSymbol() [*]const elf.Dyn { \\ add %[ret], 4, %[ret] : [ret] "=r" (-> [*]const elf.Dyn), : - : "lr", "r4" - ), + : .{ .lr = true, .r4 = true }), .riscv32, .riscv64 => asm volatile ( \\ .weak _DYNAMIC \\ .hidden _DYNAMIC diff --git a/lib/std/start.zig b/lib/std/start.zig index 68311463b0..9581675750 100644 --- a/lib/std/start.zig +++ b/lib/std/start.zig @@ -131,32 +131,28 @@ fn exit2(code: usize) noreturn { : : [number] "{rax}" (231), [arg1] "{rdi}" (code), - : "rcx", "r11", "memory" - ); + : .{ .rcx = true, .r11 = true, .memory = true }); }, .arm => { asm volatile ("svc #0" : : [number] "{r7}" (1), [arg1] "{r0}" (code), - : "memory" - ); + : .{ .memory = true }); }, .aarch64 => { asm volatile ("svc #0" : : [number] "{x8}" (93), [arg1] "{x0}" (code), - : "memory", "cc" - ); + : .{ .memory = true, .cc = true }); }, .sparc64 => { asm volatile ("ta 0x6d" : : [number] "{g1}" (1), [arg1] "{o0}" (code), - : "o0", "o1", "o2", "o3", "o4", "o5", "o6", "o7", "memory" - ); + : .{ .o0 = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o6 = true, .o7 = true, .memory = true }); }, else => @compileError("TODO"), }, diff --git a/lib/std/valgrind.zig b/lib/std/valgrind.zig index 5447eefc57..4dd8dfac74 100644 --- a/lib/std/valgrind.zig +++ b/lib/std/valgrind.zig @@ -17,8 +17,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={r3}" (-> usize), : [_] "{r4}" (args), [_] "{r3}" (default), - : "cc", "memory" - ), + : .{ .cc = true, .memory = true }), .aarch64, .aarch64_be => asm volatile ( \\ ror x12, x12, #3 ; ror x12, x12, #13 \\ ror x12, x12, #51 ; ror x12, x12, #61 @@ -26,8 +25,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={x3}" (-> usize), : [_] "{x4}" (args), [_] "{x3}" (default), - : "cc", "memory" - ), + : .{ .cc = true, .memory = true }), .mips, .mipsel => asm volatile ( \\ srl $0, $0, 13 \\ srl $0, $0, 29 @@ -37,8 +35,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={$11}" (-> usize), : [_] "{$12}" (args), [_] "{$11}" (default), - : "memory" - ), + : .{ .memory = true }), .mips64, .mips64el => asm volatile ( \\ dsll $0, $0, 3 ; dsll $0, $0, 13 \\ dsll $0, $0, 29 ; dsll $0, $0, 19 @@ -46,8 +43,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={$11}" (-> usize), : [_] "{$12}" (args), [_] "{$11}" (default), - : "memory" - ), + : .{ .memory = true }), .powerpc, .powerpcle => asm volatile ( \\ rlwinm 0, 0, 3, 0, 31 ; rlwinm 0, 0, 13, 0, 31 \\ rlwinm 0, 0, 29, 0, 31 ; rlwinm 0, 0, 19, 0, 31 @@ -55,8 +51,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={r3}" (-> usize), : [_] "{r4}" (args), [_] "{r3}" (default), - : "cc", "memory" - ), + : .{ .cc = true, .memory = true }), .powerpc64, .powerpc64le => asm volatile ( \\ rotldi 0, 0, 3 ; rotldi 0, 0, 13 \\ rotldi 0, 0, 61 ; rotldi 0, 0, 51 @@ -64,8 +59,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={r3}" (-> usize), : [_] "{r4}" (args), [_] "{r3}" (default), - : "cc", "memory" - ), + : .{ .cc = true, .memory = true }), .riscv64 => asm volatile ( \\ .option push \\ .option norvc @@ -78,8 +72,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={a3}" (-> usize), : [_] "{a4}" (args), [_] "{a3}" (default), - : "cc", "memory" - ), + : .{ .cc = true, .memory = true }), .s390x => asm volatile ( \\ lr %%r15, %%r15 \\ lr %%r1, %%r1 @@ -89,8 +82,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={r3}" (-> usize), : [_] "{r2}" (args), [_] "{r3}" (default), - : "cc", "memory" - ), + : .{ .cc = true, .memory = true }), .x86 => asm volatile ( \\ roll $3, %%edi ; roll $13, %%edi \\ roll $29, %%edi ; roll $19, %%edi @@ -98,8 +90,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={edx}" (-> usize), : [_] "{eax}" (args), [_] "{edx}" (default), - : "cc", "memory" - ), + : .{ .cc = true, .memory = true }), .x86_64 => asm volatile ( \\ rolq $3, %%rdi ; rolq $13, %%rdi \\ rolq $61, %%rdi ; rolq $51, %%rdi @@ -107,8 +98,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3: : [_] "={rdx}" (-> usize), : [_] "{rax}" (args), [_] "{rdx}" (default), - : "cc", "memory" - ), + : .{ .cc = true, .memory = true }), else => default, }; } diff --git a/lib/std/zig/render.zig b/lib/std/zig/render.zig index f793adab90..c6391d30b3 100644 --- a/lib/std/zig/render.zig +++ b/lib/std/zig/render.zig @@ -2400,6 +2400,7 @@ fn renderAsmLegacy( while (true) : (tok_i += 1) { try ais.writer().writeAll(".@"); try ais.writer().writeAll(tokenSliceForRender(tree, tok_i)); + try ais.writer().writeAll(" = true"); tok_i += 1; switch (tree.tokenTag(tok_i)) { @@ -2514,7 +2515,7 @@ fn renderAsmLegacy( try ais.writer().writeAll(".@"); const lexeme = tokenSliceForRender(tree, tok_i); try ais.writer().writeAll(lexeme); - try ais.writer().writeAll(" }"); + try ais.writer().writeAll(" = true }"); try renderSpace(r, tok_i, lexeme.len, .newline); ais.popIndent(); return renderToken(r, tok_i + 1, space); @@ -2526,7 +2527,7 @@ fn renderAsmLegacy( try ais.writer().writeAll(".@"); const lexeme = tokenSliceForRender(tree, tok_i); try ais.writer().writeAll(lexeme); - try ais.writer().writeAll(" }"); + try ais.writer().writeAll(" = true }"); try renderSpace(r, tok_i, lexeme.len, .newline); ais.popIndent(); return renderToken(r, tok_i + 2, space); @@ -2534,6 +2535,7 @@ fn renderAsmLegacy( else => { try ais.writer().writeAll(".@"); try ais.writer().writeAll(tokenSliceForRender(tree, tok_i)); + try ais.writer().writeAll(" = true"); try renderToken(r, tok_i + 1, .space); tok_i += 2; }, diff --git a/lib/std/zig/system/x86.zig b/lib/std/zig/system/x86.zig index 75d460400b..1c57b4323a 100644 --- a/lib/std/zig/system/x86.zig +++ b/lib/std/zig/system/x86.zig @@ -783,6 +783,5 @@ fn getXCR0() u32 { \\ xgetbv : [_] "={eax}" (-> u32), : - : "edx", "ecx" - ); + : .{ .edx = true, .ecx = true }); } diff --git a/test/behavior/asm.zig b/test/behavior/asm.zig index ec4824855b..d79fca930a 100644 --- a/test/behavior/asm.zig +++ b/test/behavior/asm.zig @@ -55,13 +55,11 @@ test "output constraint modifiers" { asm volatile ("" : [_] "=m,r" (a), : - : "" - ); + : .{}); asm volatile ("" : [_] "=r,m" (a), : - : "" - ); + : .{}); } test "alternative constraints" { @@ -79,7 +77,6 @@ test "alternative constraints" { asm volatile ("" : [_] "=r,m" (a), : [_] "r,m" (a), - : "" ); } @@ -96,42 +93,34 @@ test "sized integer/float in asm input" { asm volatile ("" : : [_] "m" (@as(usize, 3)), - : "" ); asm volatile ("" : : [_] "m" (@as(i15, -3)), - : "" ); asm volatile ("" : : [_] "m" (@as(u3, 3)), - : "" ); asm volatile ("" : : [_] "m" (@as(i3, 3)), - : "" ); asm volatile ("" : : [_] "m" (@as(u121, 3)), - : "" ); asm volatile ("" : : [_] "m" (@as(i121, 3)), - : "" ); asm volatile ("" : : [_] "m" (@as(f32, 3.17)), - : "" ); asm volatile ("" : : [_] "m" (@as(f64, 3.17)), - : "" ); } @@ -172,8 +161,7 @@ test "rw constraint (x86_64)" { asm ("addl %[b], %[a]" : [a] "+r" (res), : [b] "r" (@as(i32, 13)), - : "flags" - ); + : .{ .flags = true }); try expectEqual(@as(i32, 18), res); } diff --git a/test/cases/llvm/f_segment_address_space_reading_and_writing.zig b/test/cases/llvm/f_segment_address_space_reading_and_writing.zig index adf0a4da4d..73c08ec1a7 100644 --- a/test/cases/llvm/f_segment_address_space_reading_and_writing.zig +++ b/test/cases/llvm/f_segment_address_space_reading_and_writing.zig @@ -9,7 +9,7 @@ fn setFs(value: c_ulong) void { : [number] "{rax}" (158), [code] "{rdi}" (0x1002), [val] "{rsi}" (value), - : "rcx", "r11", "memory" + : .{ .rcx = true, .r11 = true, .memory = true } ); } @@ -21,7 +21,7 @@ fn getFs() c_ulong { : [number] "{rax}" (158), [code] "{rdi}" (0x1003), [ptr] "{rsi}" (@intFromPtr(&result)), - : "rcx", "r11", "memory" + : .{ .rcx = true, .r11 = true, .memory = true } ); return result; } diff --git a/test/standalone/stack_iterator/unwind.zig b/test/standalone/stack_iterator/unwind.zig index c8ad8e120f..aaaefbddbb 100644 --- a/test/standalone/stack_iterator/unwind.zig +++ b/test/standalone/stack_iterator/unwind.zig @@ -31,7 +31,7 @@ noinline fn frame2(expected: *[4]usize, unwound: *[4]usize) void { \\movl $7, %%edi \\movl $6, %%esi \\movl $5, %%ebp - ::: "ebx", "ecx", "edx", "edi", "esi", "ebp"); + ::: .{ .ebx = true, .ecx = true, .edx = true, .edi = true, .esi = true, .ebp = true }); } else { asm volatile ( \\movl $3, %%ebx @@ -39,7 +39,7 @@ noinline fn frame2(expected: *[4]usize, unwound: *[4]usize) void { \\movl $2, %%edx \\movl $7, %%edi \\movl $6, %%esi - ::: "ebx", "ecx", "edx", "edi", "esi"); + ::: .{ .ebx = true, .ecx = true, .edx = true, .edi = true, .esi = true }); } }, .x86_64 => { @@ -51,7 +51,7 @@ noinline fn frame2(expected: *[4]usize, unwound: *[4]usize) void { \\movq $14, %%r14 \\movq $15, %%r15 \\movq $6, %%rbp - ::: "rbx", "r12", "r13", "r14", "r15", "rbp"); + ::: .{ .rbx = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .rbp = true }); } else { asm volatile ( \\movq $3, %%rbx @@ -59,7 +59,7 @@ noinline fn frame2(expected: *[4]usize, unwound: *[4]usize) void { \\movq $13, %%r13 \\movq $14, %%r14 \\movq $15, %%r15 - ::: "rbx", "r12", "r13", "r14", "r15"); + ::: .{ .rbx = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true }); } }, else => {}, diff --git a/test/standalone/stack_iterator/unwind_freestanding.zig b/test/standalone/stack_iterator/unwind_freestanding.zig index d95b0d4fcf..ec4bb5d00e 100644 --- a/test/standalone/stack_iterator/unwind_freestanding.zig +++ b/test/standalone/stack_iterator/unwind_freestanding.zig @@ -58,8 +58,7 @@ export fn _start() callconv(.c) noreturn { \\syscall : : [missed] "{edi}" (missed), - : "edi", "eax" - ); + : .{ .edi = true, .eax = true }); while (true) {} // unreached }