This commit is contained in:
Andrew Kelley 2025-07-14 18:00:46 -07:00
parent 87ce83d5a5
commit 76d04c1662
36 changed files with 311 additions and 618 deletions

View file

@ -28,8 +28,7 @@ fn __aarch64_cas1_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp1_relax() align(16) callconv(.naked) void { fn __aarch64_swp1_relax() align(16) callconv(.naked) void {
@ -48,8 +47,7 @@ fn __aarch64_swp1_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd1_relax() align(16) callconv(.naked) void { fn __aarch64_ldadd1_relax() align(16) callconv(.naked) void {
@ -69,8 +67,7 @@ fn __aarch64_ldadd1_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr1_relax() align(16) callconv(.naked) void { fn __aarch64_ldclr1_relax() align(16) callconv(.naked) void {
@ -90,8 +87,7 @@ fn __aarch64_ldclr1_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor1_relax() align(16) callconv(.naked) void { fn __aarch64_ldeor1_relax() align(16) callconv(.naked) void {
@ -111,8 +107,7 @@ fn __aarch64_ldeor1_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset1_relax() align(16) callconv(.naked) void { fn __aarch64_ldset1_relax() align(16) callconv(.naked) void {
@ -132,8 +127,7 @@ fn __aarch64_ldset1_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas1_acq() align(16) callconv(.naked) void { fn __aarch64_cas1_acq() align(16) callconv(.naked) void {
@ -154,8 +148,7 @@ fn __aarch64_cas1_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp1_acq() align(16) callconv(.naked) void { fn __aarch64_swp1_acq() align(16) callconv(.naked) void {
@ -174,8 +167,7 @@ fn __aarch64_swp1_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd1_acq() align(16) callconv(.naked) void { fn __aarch64_ldadd1_acq() align(16) callconv(.naked) void {
@ -195,8 +187,7 @@ fn __aarch64_ldadd1_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr1_acq() align(16) callconv(.naked) void { fn __aarch64_ldclr1_acq() align(16) callconv(.naked) void {
@ -216,8 +207,7 @@ fn __aarch64_ldclr1_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor1_acq() align(16) callconv(.naked) void { fn __aarch64_ldeor1_acq() align(16) callconv(.naked) void {
@ -237,8 +227,7 @@ fn __aarch64_ldeor1_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset1_acq() align(16) callconv(.naked) void { fn __aarch64_ldset1_acq() align(16) callconv(.naked) void {
@ -258,8 +247,7 @@ fn __aarch64_ldset1_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas1_rel() align(16) callconv(.naked) void { fn __aarch64_cas1_rel() align(16) callconv(.naked) void {
@ -280,8 +268,7 @@ fn __aarch64_cas1_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp1_rel() align(16) callconv(.naked) void { fn __aarch64_swp1_rel() align(16) callconv(.naked) void {
@ -300,8 +287,7 @@ fn __aarch64_swp1_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd1_rel() align(16) callconv(.naked) void { fn __aarch64_ldadd1_rel() align(16) callconv(.naked) void {
@ -321,8 +307,7 @@ fn __aarch64_ldadd1_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr1_rel() align(16) callconv(.naked) void { fn __aarch64_ldclr1_rel() align(16) callconv(.naked) void {
@ -342,8 +327,7 @@ fn __aarch64_ldclr1_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor1_rel() align(16) callconv(.naked) void { fn __aarch64_ldeor1_rel() align(16) callconv(.naked) void {
@ -363,8 +347,7 @@ fn __aarch64_ldeor1_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset1_rel() align(16) callconv(.naked) void { fn __aarch64_ldset1_rel() align(16) callconv(.naked) void {
@ -384,8 +367,7 @@ fn __aarch64_ldset1_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas1_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp1_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd1_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr1_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor1_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset1_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas2_relax() align(16) callconv(.naked) void { fn __aarch64_cas2_relax() align(16) callconv(.naked) void {
@ -532,8 +508,7 @@ fn __aarch64_cas2_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp2_relax() align(16) callconv(.naked) void { fn __aarch64_swp2_relax() align(16) callconv(.naked) void {
@ -552,8 +527,7 @@ fn __aarch64_swp2_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd2_relax() align(16) callconv(.naked) void { fn __aarch64_ldadd2_relax() align(16) callconv(.naked) void {
@ -573,8 +547,7 @@ fn __aarch64_ldadd2_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr2_relax() align(16) callconv(.naked) void { fn __aarch64_ldclr2_relax() align(16) callconv(.naked) void {
@ -594,8 +567,7 @@ fn __aarch64_ldclr2_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor2_relax() align(16) callconv(.naked) void { fn __aarch64_ldeor2_relax() align(16) callconv(.naked) void {
@ -615,8 +587,7 @@ fn __aarch64_ldeor2_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset2_relax() align(16) callconv(.naked) void { fn __aarch64_ldset2_relax() align(16) callconv(.naked) void {
@ -636,8 +607,7 @@ fn __aarch64_ldset2_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas2_acq() align(16) callconv(.naked) void { fn __aarch64_cas2_acq() align(16) callconv(.naked) void {
@ -658,8 +628,7 @@ fn __aarch64_cas2_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp2_acq() align(16) callconv(.naked) void { fn __aarch64_swp2_acq() align(16) callconv(.naked) void {
@ -678,8 +647,7 @@ fn __aarch64_swp2_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd2_acq() align(16) callconv(.naked) void { fn __aarch64_ldadd2_acq() align(16) callconv(.naked) void {
@ -699,8 +667,7 @@ fn __aarch64_ldadd2_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr2_acq() align(16) callconv(.naked) void { fn __aarch64_ldclr2_acq() align(16) callconv(.naked) void {
@ -720,8 +687,7 @@ fn __aarch64_ldclr2_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor2_acq() align(16) callconv(.naked) void { fn __aarch64_ldeor2_acq() align(16) callconv(.naked) void {
@ -741,8 +707,7 @@ fn __aarch64_ldeor2_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset2_acq() align(16) callconv(.naked) void { fn __aarch64_ldset2_acq() align(16) callconv(.naked) void {
@ -762,8 +727,7 @@ fn __aarch64_ldset2_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas2_rel() align(16) callconv(.naked) void { fn __aarch64_cas2_rel() align(16) callconv(.naked) void {
@ -784,8 +748,7 @@ fn __aarch64_cas2_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp2_rel() align(16) callconv(.naked) void { fn __aarch64_swp2_rel() align(16) callconv(.naked) void {
@ -804,8 +767,7 @@ fn __aarch64_swp2_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd2_rel() align(16) callconv(.naked) void { fn __aarch64_ldadd2_rel() align(16) callconv(.naked) void {
@ -825,8 +787,7 @@ fn __aarch64_ldadd2_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr2_rel() align(16) callconv(.naked) void { fn __aarch64_ldclr2_rel() align(16) callconv(.naked) void {
@ -846,8 +807,7 @@ fn __aarch64_ldclr2_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor2_rel() align(16) callconv(.naked) void { fn __aarch64_ldeor2_rel() align(16) callconv(.naked) void {
@ -867,8 +827,7 @@ fn __aarch64_ldeor2_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset2_rel() align(16) callconv(.naked) void { fn __aarch64_ldset2_rel() align(16) callconv(.naked) void {
@ -888,8 +847,7 @@ fn __aarch64_ldset2_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas2_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp2_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd2_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr2_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor2_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset2_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas4_relax() align(16) callconv(.naked) void { fn __aarch64_cas4_relax() align(16) callconv(.naked) void {
@ -1036,8 +988,7 @@ fn __aarch64_cas4_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp4_relax() align(16) callconv(.naked) void { fn __aarch64_swp4_relax() align(16) callconv(.naked) void {
@ -1056,8 +1007,7 @@ fn __aarch64_swp4_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd4_relax() align(16) callconv(.naked) void { fn __aarch64_ldadd4_relax() align(16) callconv(.naked) void {
@ -1077,8 +1027,7 @@ fn __aarch64_ldadd4_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr4_relax() align(16) callconv(.naked) void { fn __aarch64_ldclr4_relax() align(16) callconv(.naked) void {
@ -1098,8 +1047,7 @@ fn __aarch64_ldclr4_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor4_relax() align(16) callconv(.naked) void { fn __aarch64_ldeor4_relax() align(16) callconv(.naked) void {
@ -1119,8 +1067,7 @@ fn __aarch64_ldeor4_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset4_relax() align(16) callconv(.naked) void { fn __aarch64_ldset4_relax() align(16) callconv(.naked) void {
@ -1140,8 +1087,7 @@ fn __aarch64_ldset4_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas4_acq() align(16) callconv(.naked) void { fn __aarch64_cas4_acq() align(16) callconv(.naked) void {
@ -1162,8 +1108,7 @@ fn __aarch64_cas4_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp4_acq() align(16) callconv(.naked) void { fn __aarch64_swp4_acq() align(16) callconv(.naked) void {
@ -1182,8 +1127,7 @@ fn __aarch64_swp4_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd4_acq() align(16) callconv(.naked) void { fn __aarch64_ldadd4_acq() align(16) callconv(.naked) void {
@ -1203,8 +1147,7 @@ fn __aarch64_ldadd4_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr4_acq() align(16) callconv(.naked) void { fn __aarch64_ldclr4_acq() align(16) callconv(.naked) void {
@ -1224,8 +1167,7 @@ fn __aarch64_ldclr4_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor4_acq() align(16) callconv(.naked) void { fn __aarch64_ldeor4_acq() align(16) callconv(.naked) void {
@ -1245,8 +1187,7 @@ fn __aarch64_ldeor4_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset4_acq() align(16) callconv(.naked) void { fn __aarch64_ldset4_acq() align(16) callconv(.naked) void {
@ -1266,8 +1207,7 @@ fn __aarch64_ldset4_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas4_rel() align(16) callconv(.naked) void { fn __aarch64_cas4_rel() align(16) callconv(.naked) void {
@ -1288,8 +1228,7 @@ fn __aarch64_cas4_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp4_rel() align(16) callconv(.naked) void { fn __aarch64_swp4_rel() align(16) callconv(.naked) void {
@ -1308,8 +1247,7 @@ fn __aarch64_swp4_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd4_rel() align(16) callconv(.naked) void { fn __aarch64_ldadd4_rel() align(16) callconv(.naked) void {
@ -1329,8 +1267,7 @@ fn __aarch64_ldadd4_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr4_rel() align(16) callconv(.naked) void { fn __aarch64_ldclr4_rel() align(16) callconv(.naked) void {
@ -1350,8 +1287,7 @@ fn __aarch64_ldclr4_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor4_rel() align(16) callconv(.naked) void { fn __aarch64_ldeor4_rel() align(16) callconv(.naked) void {
@ -1371,8 +1307,7 @@ fn __aarch64_ldeor4_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset4_rel() align(16) callconv(.naked) void { fn __aarch64_ldset4_rel() align(16) callconv(.naked) void {
@ -1392,8 +1327,7 @@ fn __aarch64_ldset4_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas4_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp4_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd4_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr4_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor4_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset4_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas8_relax() align(16) callconv(.naked) void { fn __aarch64_cas8_relax() align(16) callconv(.naked) void {
@ -1540,8 +1468,7 @@ fn __aarch64_cas8_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp8_relax() align(16) callconv(.naked) void { fn __aarch64_swp8_relax() align(16) callconv(.naked) void {
@ -1560,8 +1487,7 @@ fn __aarch64_swp8_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd8_relax() align(16) callconv(.naked) void { fn __aarch64_ldadd8_relax() align(16) callconv(.naked) void {
@ -1581,8 +1507,7 @@ fn __aarch64_ldadd8_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr8_relax() align(16) callconv(.naked) void { fn __aarch64_ldclr8_relax() align(16) callconv(.naked) void {
@ -1602,8 +1527,7 @@ fn __aarch64_ldclr8_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor8_relax() align(16) callconv(.naked) void { fn __aarch64_ldeor8_relax() align(16) callconv(.naked) void {
@ -1623,8 +1547,7 @@ fn __aarch64_ldeor8_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset8_relax() align(16) callconv(.naked) void { fn __aarch64_ldset8_relax() align(16) callconv(.naked) void {
@ -1644,8 +1567,7 @@ fn __aarch64_ldset8_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas8_acq() align(16) callconv(.naked) void { fn __aarch64_cas8_acq() align(16) callconv(.naked) void {
@ -1666,8 +1588,7 @@ fn __aarch64_cas8_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp8_acq() align(16) callconv(.naked) void { fn __aarch64_swp8_acq() align(16) callconv(.naked) void {
@ -1686,8 +1607,7 @@ fn __aarch64_swp8_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd8_acq() align(16) callconv(.naked) void { fn __aarch64_ldadd8_acq() align(16) callconv(.naked) void {
@ -1707,8 +1627,7 @@ fn __aarch64_ldadd8_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr8_acq() align(16) callconv(.naked) void { fn __aarch64_ldclr8_acq() align(16) callconv(.naked) void {
@ -1728,8 +1647,7 @@ fn __aarch64_ldclr8_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor8_acq() align(16) callconv(.naked) void { fn __aarch64_ldeor8_acq() align(16) callconv(.naked) void {
@ -1749,8 +1667,7 @@ fn __aarch64_ldeor8_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset8_acq() align(16) callconv(.naked) void { fn __aarch64_ldset8_acq() align(16) callconv(.naked) void {
@ -1770,8 +1687,7 @@ fn __aarch64_ldset8_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas8_rel() align(16) callconv(.naked) void { fn __aarch64_cas8_rel() align(16) callconv(.naked) void {
@ -1792,8 +1708,7 @@ fn __aarch64_cas8_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp8_rel() align(16) callconv(.naked) void { fn __aarch64_swp8_rel() align(16) callconv(.naked) void {
@ -1812,8 +1727,7 @@ fn __aarch64_swp8_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd8_rel() align(16) callconv(.naked) void { fn __aarch64_ldadd8_rel() align(16) callconv(.naked) void {
@ -1833,8 +1747,7 @@ fn __aarch64_ldadd8_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr8_rel() align(16) callconv(.naked) void { fn __aarch64_ldclr8_rel() align(16) callconv(.naked) void {
@ -1854,8 +1767,7 @@ fn __aarch64_ldclr8_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor8_rel() align(16) callconv(.naked) void { fn __aarch64_ldeor8_rel() align(16) callconv(.naked) void {
@ -1875,8 +1787,7 @@ fn __aarch64_ldeor8_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset8_rel() align(16) callconv(.naked) void { fn __aarch64_ldset8_rel() align(16) callconv(.naked) void {
@ -1896,8 +1807,7 @@ fn __aarch64_ldset8_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas8_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_swp8_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldadd8_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldclr8_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldeor8_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_ldset8_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas16_relax() align(16) callconv(.naked) void { fn __aarch64_cas16_relax() align(16) callconv(.naked) void {
@ -2046,8 +1950,7 @@ fn __aarch64_cas16_relax() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas16_acq() align(16) callconv(.naked) void { fn __aarch64_cas16_acq() align(16) callconv(.naked) void {
@ -2070,8 +1973,7 @@ fn __aarch64_cas16_acq() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas16_rel() align(16) callconv(.naked) void { fn __aarch64_cas16_rel() align(16) callconv(.naked) void {
@ -2094,8 +1996,7 @@ fn __aarch64_cas16_rel() align(16) callconv(.naked) void {
\\ ret \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }
fn __aarch64_cas16_acq_rel() align(16) callconv(.naked) void { 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 \\ ret
: :
: [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics), : [__aarch64_have_lse_atomics] "{w16}" (__aarch64_have_lse_atomics),
: "w15", "w16", "w17", "memory" : .{ .w15 = true, .w16 = true, .w17 = true, .memory = true });
);
unreachable; unreachable;
} }

View file

@ -142,8 +142,7 @@ pub fn __aeabi_uidivmod() callconv(.naked) void {
\\ pop {pc} \\ pop {pc}
: :
: [__udivmodsi4] "X" (&__udivmodsi4), : [__udivmodsi4] "X" (&__udivmodsi4),
: "memory" : .{ .memory = true });
);
unreachable; unreachable;
} }
@ -162,8 +161,7 @@ pub fn __aeabi_uldivmod() callconv(.naked) void {
\\ pop {r4, pc} \\ pop {r4, pc}
: :
: [__udivmoddi4] "X" (&__udivmoddi4), : [__udivmoddi4] "X" (&__udivmoddi4),
: "memory" : .{ .memory = true });
);
unreachable; unreachable;
} }
@ -180,8 +178,7 @@ pub fn __aeabi_idivmod() callconv(.naked) void {
\\ pop {pc} \\ pop {pc}
: :
: [__divmodsi4] "X" (&__divmodsi4), : [__divmodsi4] "X" (&__divmodsi4),
: "memory" : .{ .memory = true });
);
unreachable; unreachable;
} }
@ -200,8 +197,7 @@ pub fn __aeabi_ldivmod() callconv(.naked) void {
\\ pop {r4, pc} \\ pop {r4, pc}
: :
: [__divmoddi4] "X" (&__divmoddi4), : [__divmoddi4] "X" (&__divmoddi4),
: "memory" : .{ .memory = true });
);
unreachable; unreachable;
} }

View file

@ -71,8 +71,7 @@ const SpinlockTable = struct {
break :flag asm volatile ("ldstub [%[addr]], %[flag]" break :flag asm volatile ("ldstub [%[addr]], %[flag]"
: [flag] "=r" (-> @TypeOf(self.v)), : [flag] "=r" (-> @TypeOf(self.v)),
: [addr] "r" (&self.v), : [addr] "r" (&self.v),
: "memory" : .{ .memory = true });
);
} else flag: { } else flag: {
break :flag @atomicRmw(@TypeOf(self.v), &self.v, .Xchg, .Locked, .acquire); break :flag @atomicRmw(@TypeOf(self.v), &self.v, .Xchg, .Locked, .acquire);
}; };
@ -88,8 +87,7 @@ const SpinlockTable = struct {
_ = asm volatile ("clrb [%[addr]]" _ = asm volatile ("clrb [%[addr]]"
: :
: [addr] "r" (&self.v), : [addr] "r" (&self.v),
: "memory" : .{ .memory = true });
);
} else { } else {
@atomicStore(@TypeOf(self.v), &self.v, .Unlocked, .release); @atomicStore(@TypeOf(self.v), &self.v, .Unlocked, .release);
} }

View file

@ -103,8 +103,7 @@ fn clear_cache(start: usize, end: usize) callconv(.c) void {
: [_] "{$2}" (165), // nr = SYS_sysarch : [_] "{$2}" (165), // nr = SYS_sysarch
[_] "{$4}" (0), // op = MIPS_CACHEFLUSH [_] "{$4}" (0), // op = MIPS_CACHEFLUSH
[_] "{$5}" (&cfa), // args = &cfa [_] "{$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(); exportIt();
} else if (mips and os == .openbsd) { } else if (mips and os == .openbsd) {
// TODO // TODO

View file

@ -1198,8 +1198,7 @@ const LinuxThreadImpl = struct {
: :
: [ptr] "r" (@intFromPtr(self.mapped.ptr)), : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
[len] "r" (self.mapped.len), [len] "r" (self.mapped.len),
: "memory" : .{ .memory = true }),
),
.x86_64 => asm volatile ( .x86_64 => asm volatile (
\\ movq $11, %%rax # SYS_munmap \\ movq $11, %%rax # SYS_munmap
\\ syscall \\ syscall
@ -1221,8 +1220,7 @@ const LinuxThreadImpl = struct {
: :
: [ptr] "r" (@intFromPtr(self.mapped.ptr)), : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
[len] "r" (self.mapped.len), [len] "r" (self.mapped.len),
: "memory" : .{ .memory = true }),
),
.aarch64, .aarch64_be => asm volatile ( .aarch64, .aarch64_be => asm volatile (
\\ mov x8, #215 // SYS_munmap \\ mov x8, #215 // SYS_munmap
\\ mov x0, %[ptr] \\ mov x0, %[ptr]
@ -1234,8 +1232,7 @@ const LinuxThreadImpl = struct {
: :
: [ptr] "r" (@intFromPtr(self.mapped.ptr)), : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
[len] "r" (self.mapped.len), [len] "r" (self.mapped.len),
: "memory" : .{ .memory = true }),
),
.hexagon => asm volatile ( .hexagon => asm volatile (
\\ r6 = #215 // SYS_munmap \\ r6 = #215 // SYS_munmap
\\ r0 = %[ptr] \\ r0 = %[ptr]
@ -1247,8 +1244,7 @@ const LinuxThreadImpl = struct {
: :
: [ptr] "r" (@intFromPtr(self.mapped.ptr)), : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
[len] "r" (self.mapped.len), [len] "r" (self.mapped.len),
: "memory" : .{ .memory = true }),
),
// We set `sp` to the address of the current function as a workaround for a Linux // 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. // kernel bug that caused syscalls to return EFAULT if the stack pointer is invalid.
// The bug was introduced in 46e12c07b3b9603c60fc1d421ff18618241cb081 and fixed in // The bug was introduced in 46e12c07b3b9603c60fc1d421ff18618241cb081 and fixed in
@ -1265,8 +1261,7 @@ const LinuxThreadImpl = struct {
: :
: [ptr] "r" (@intFromPtr(self.mapped.ptr)), : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
[len] "r" (self.mapped.len), [len] "r" (self.mapped.len),
: "memory" : .{ .memory = true }),
),
.mips64, .mips64el => asm volatile ( .mips64, .mips64el => asm volatile (
\\ li $2, 5011 # SYS_munmap \\ li $2, 5011 # SYS_munmap
\\ move $4, %[ptr] \\ move $4, %[ptr]
@ -1278,8 +1273,7 @@ const LinuxThreadImpl = struct {
: :
: [ptr] "r" (@intFromPtr(self.mapped.ptr)), : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
[len] "r" (self.mapped.len), [len] "r" (self.mapped.len),
: "memory" : .{ .memory = true }),
),
.powerpc, .powerpcle, .powerpc64, .powerpc64le => asm volatile ( .powerpc, .powerpcle, .powerpc64, .powerpc64le => asm volatile (
\\ li 0, 91 # SYS_munmap \\ li 0, 91 # SYS_munmap
\\ mr 3, %[ptr] \\ mr 3, %[ptr]
@ -1292,8 +1286,7 @@ const LinuxThreadImpl = struct {
: :
: [ptr] "r" (@intFromPtr(self.mapped.ptr)), : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
[len] "r" (self.mapped.len), [len] "r" (self.mapped.len),
: "memory" : .{ .memory = true }),
),
.riscv32, .riscv64 => asm volatile ( .riscv32, .riscv64 => asm volatile (
\\ li a7, 215 # SYS_munmap \\ li a7, 215 # SYS_munmap
\\ mv a0, %[ptr] \\ mv a0, %[ptr]
@ -1305,8 +1298,7 @@ const LinuxThreadImpl = struct {
: :
: [ptr] "r" (@intFromPtr(self.mapped.ptr)), : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
[len] "r" (self.mapped.len), [len] "r" (self.mapped.len),
: "memory" : .{ .memory = true }),
),
.s390x => asm volatile ( .s390x => asm volatile (
\\ lgr %%r2, %[ptr] \\ lgr %%r2, %[ptr]
\\ lgr %%r3, %[len] \\ lgr %%r3, %[len]
@ -1316,8 +1308,7 @@ const LinuxThreadImpl = struct {
: :
: [ptr] "r" (@intFromPtr(self.mapped.ptr)), : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
[len] "r" (self.mapped.len), [len] "r" (self.mapped.len),
: "memory" : .{ .memory = true }),
),
.sparc => asm volatile ( .sparc => asm volatile (
\\ # See sparc64 comments below. \\ # See sparc64 comments below.
\\ 1: \\ 1:
@ -1338,8 +1329,7 @@ const LinuxThreadImpl = struct {
: :
: [ptr] "r" (@intFromPtr(self.mapped.ptr)), : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
[len] "r" (self.mapped.len), [len] "r" (self.mapped.len),
: "memory" : .{ .memory = true }),
),
.sparc64 => asm volatile ( .sparc64 => asm volatile (
\\ # SPARCs really don't like it when active stack frames \\ # SPARCs really don't like it when active stack frames
\\ # is unmapped (it will result in a segfault), so we \\ # is unmapped (it will result in a segfault), so we
@ -1365,8 +1355,7 @@ const LinuxThreadImpl = struct {
: :
: [ptr] "r" (@intFromPtr(self.mapped.ptr)), : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
[len] "r" (self.mapped.len), [len] "r" (self.mapped.len),
: "memory" : .{ .memory = true }),
),
.loongarch32, .loongarch64 => asm volatile ( .loongarch32, .loongarch64 => asm volatile (
\\ or $a0, $zero, %[ptr] \\ or $a0, $zero, %[ptr]
\\ or $a1, $zero, %[len] \\ or $a1, $zero, %[len]
@ -1378,8 +1367,7 @@ const LinuxThreadImpl = struct {
: :
: [ptr] "r" (@intFromPtr(self.mapped.ptr)), : [ptr] "r" (@intFromPtr(self.mapped.ptr)),
[len] "r" (self.mapped.len), [len] "r" (self.mapped.len),
: "memory" : .{ .memory = true }),
),
else => |cpu_arch| @compileError("Unsupported linux arch: " ++ @tagName(cpu_arch)), else => |cpu_arch| @compileError("Unsupported linux arch: " ++ @tagName(cpu_arch)),
} }
unreachable; unreachable;

View file

@ -229,8 +229,7 @@ fn Sha2x32(comptime iv: Iv32, digest_bits: comptime_int) type {
: [_] "0" (x), : [_] "0" (x),
[_] "1" (y), [_] "1" (y),
[w] "w" (w), [w] "w" (w),
: "v0" : .{ .v0 = true });
);
} }
d.s[0..4].* = x +% @as(V4u32, d.s[0..4].*); d.s[0..4].* = x +% @as(V4u32, d.s[0..4].*);

View file

@ -785,7 +785,7 @@ pub const StackIterator = struct {
"flushw" "flushw"
else else
"ta 3" // ST_FLUSH_WINDOWS "ta 3" // ST_FLUSH_WINDOWS
::: "memory"); ::: .{ .memory = true });
} }
return StackIterator{ return StackIterator{

View file

@ -1547,8 +1547,7 @@ pub inline fn stripInstructionPtrAuthCode(ptr: usize) usize {
\\mov x30, x16 \\mov x30, x16
: [ret] "={x15}" (-> usize), : [ret] "={x15}" (-> usize),
: [ptr] "{x15}" (ptr), : [ptr] "{x15}" (ptr),
: "x16" : .{ .x16 = true });
);
} }
return ptr; return ptr;

View file

@ -4497,8 +4497,7 @@ pub fn doNotOptimizeAway(val: anytype) void {
asm volatile ("" asm volatile (""
: :
: [val] "m" (val), : [val] "m" (val),
: "memory" : .{ .memory = true });
);
} }
}, },
.array => { .array => {

View file

@ -18,8 +18,7 @@ pub fn syscall0(number: SYS) usize {
return asm volatile ("svc #0" return asm volatile ("svc #0"
: [ret] "={x0}" (-> usize), : [ret] "={x0}" (-> usize),
: [number] "{x8}" (@intFromEnum(number)), : [number] "{x8}" (@intFromEnum(number)),
: "memory", "cc" : .{ .memory = true, .cc = true });
);
} }
pub fn syscall1(number: SYS, arg1: usize) usize { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -27,8 +26,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={x0}" (-> usize), : [ret] "={x0}" (-> usize),
: [number] "{x8}" (@intFromEnum(number)), : [number] "{x8}" (@intFromEnum(number)),
[arg1] "{x0}" (arg1), [arg1] "{x0}" (arg1),
: "memory", "cc" : .{ .memory = true, .cc = true });
);
} }
pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { 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)), : [number] "{x8}" (@intFromEnum(number)),
[arg1] "{x0}" (arg1), [arg1] "{x0}" (arg1),
[arg2] "{x1}" (arg2), [arg2] "{x1}" (arg2),
: "memory", "cc" : .{ .memory = true, .cc = true });
);
} }
pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { 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), [arg1] "{x0}" (arg1),
[arg2] "{x1}" (arg2), [arg2] "{x1}" (arg2),
[arg3] "{x2}" (arg3), [arg3] "{x2}" (arg3),
: "memory", "cc" : .{ .memory = true, .cc = true });
);
} }
pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { 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), [arg2] "{x1}" (arg2),
[arg3] "{x2}" (arg3), [arg3] "{x2}" (arg3),
[arg4] "{x3}" (arg4), [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 { 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), [arg3] "{x2}" (arg3),
[arg4] "{x3}" (arg4), [arg4] "{x3}" (arg4),
[arg5] "{x4}" (arg5), [arg5] "{x4}" (arg5),
: "memory", "cc" : .{ .memory = true, .cc = true });
);
} }
pub fn syscall6( pub fn syscall6(
@ -95,8 +89,7 @@ pub fn syscall6(
[arg4] "{x3}" (arg4), [arg4] "{x3}" (arg4),
[arg5] "{x4}" (arg5), [arg5] "{x4}" (arg5),
[arg6] "{x5}" (arg6), [arg6] "{x5}" (arg6),
: "memory", "cc" : .{ .memory = true, .cc = true });
);
} }
pub fn clone() callconv(.naked) usize { pub fn clone() callconv(.naked) usize {
@ -148,14 +141,12 @@ pub fn restore_rt() callconv(.naked) noreturn {
\\ svc #0 \\ svc #0
: :
: [number] "i" (@intFromEnum(SYS.rt_sigreturn)), : [number] "i" (@intFromEnum(SYS.rt_sigreturn)),
: "memory", "cc" : .{ .memory = true, .cc = true }),
),
else => asm volatile ( else => asm volatile (
\\ svc #0 \\ svc #0
: :
: [number] "{x8}" (@intFromEnum(SYS.rt_sigreturn)), : [number] "{x8}" (@intFromEnum(SYS.rt_sigreturn)),
: "memory", "cc" : .{ .memory = true, .cc = true }),
),
} }
} }

View file

@ -17,8 +17,7 @@ pub fn syscall0(number: SYS) usize {
return asm volatile ("svc #0" return asm volatile ("svc #0"
: [ret] "={r0}" (-> usize), : [ret] "={r0}" (-> usize),
: [number] "{r7}" (@intFromEnum(number)), : [number] "{r7}" (@intFromEnum(number)),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall1(number: SYS, arg1: usize) usize { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -26,8 +25,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={r0}" (-> usize), : [ret] "={r0}" (-> usize),
: [number] "{r7}" (@intFromEnum(number)), : [number] "{r7}" (@intFromEnum(number)),
[arg1] "{r0}" (arg1), [arg1] "{r0}" (arg1),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { 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)), : [number] "{r7}" (@intFromEnum(number)),
[arg1] "{r0}" (arg1), [arg1] "{r0}" (arg1),
[arg2] "{r1}" (arg2), [arg2] "{r1}" (arg2),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { 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), [arg1] "{r0}" (arg1),
[arg2] "{r1}" (arg2), [arg2] "{r1}" (arg2),
[arg3] "{r2}" (arg3), [arg3] "{r2}" (arg3),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { 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), [arg2] "{r1}" (arg2),
[arg3] "{r2}" (arg3), [arg3] "{r2}" (arg3),
[arg4] "{r3}" (arg4), [arg4] "{r3}" (arg4),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { 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), [arg3] "{r2}" (arg3),
[arg4] "{r3}" (arg4), [arg4] "{r3}" (arg4),
[arg5] "{r4}" (arg5), [arg5] "{r4}" (arg5),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall6( pub fn syscall6(
@ -94,8 +88,7 @@ pub fn syscall6(
[arg4] "{r3}" (arg4), [arg4] "{r3}" (arg4),
[arg5] "{r4}" (arg5), [arg5] "{r4}" (arg5),
[arg6] "{r5}" (arg6), [arg6] "{r5}" (arg6),
: "memory" : .{ .memory = true });
);
} }
pub fn clone() callconv(.naked) usize { pub fn clone() callconv(.naked) usize {
@ -141,14 +134,12 @@ pub fn restore() callconv(.naked) noreturn {
\\ svc #0 \\ svc #0
: :
: [number] "I" (@intFromEnum(SYS.sigreturn)), : [number] "I" (@intFromEnum(SYS.sigreturn)),
: "memory" : .{ .memory = true }),
),
else => asm volatile ( else => asm volatile (
\\ svc #0 \\ svc #0
: :
: [number] "{r7}" (@intFromEnum(SYS.sigreturn)), : [number] "{r7}" (@intFromEnum(SYS.sigreturn)),
: "memory" : .{ .memory = true }),
),
} }
} }
@ -159,14 +150,12 @@ pub fn restore_rt() callconv(.naked) noreturn {
\\ svc #0 \\ svc #0
: :
: [number] "I" (@intFromEnum(SYS.rt_sigreturn)), : [number] "I" (@intFromEnum(SYS.rt_sigreturn)),
: "memory" : .{ .memory = true }),
),
else => asm volatile ( else => asm volatile (
\\ svc #0 \\ svc #0
: :
: [number] "{r7}" (@intFromEnum(SYS.rt_sigreturn)), : [number] "{r7}" (@intFromEnum(SYS.rt_sigreturn)),
: "memory" : .{ .memory = true }),
),
} }
} }

View file

@ -15,8 +15,7 @@ pub fn syscall0(number: SYS) usize {
return asm volatile ("trap0(#1)" return asm volatile ("trap0(#1)"
: [ret] "={r0}" (-> usize), : [ret] "={r0}" (-> usize),
: [number] "{r6}" (@intFromEnum(number)), : [number] "{r6}" (@intFromEnum(number)),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall1(number: SYS, arg1: usize) usize { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -24,8 +23,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={r0}" (-> usize), : [ret] "={r0}" (-> usize),
: [number] "{r6}" (@intFromEnum(number)), : [number] "{r6}" (@intFromEnum(number)),
[arg1] "{r0}" (arg1), [arg1] "{r0}" (arg1),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { 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)), : [number] "{r6}" (@intFromEnum(number)),
[arg1] "{r0}" (arg1), [arg1] "{r0}" (arg1),
[arg2] "{r1}" (arg2), [arg2] "{r1}" (arg2),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { 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), [arg1] "{r0}" (arg1),
[arg2] "{r1}" (arg2), [arg2] "{r1}" (arg2),
[arg3] "{r2}" (arg3), [arg3] "{r2}" (arg3),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { 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), [arg2] "{r1}" (arg2),
[arg3] "{r2}" (arg3), [arg3] "{r2}" (arg3),
[arg4] "{r3}" (arg4), [arg4] "{r3}" (arg4),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { 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), [arg3] "{r2}" (arg3),
[arg4] "{r3}" (arg4), [arg4] "{r3}" (arg4),
[arg5] "{r4}" (arg5), [arg5] "{r4}" (arg5),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall6( pub fn syscall6(
@ -92,8 +86,7 @@ pub fn syscall6(
[arg4] "{r3}" (arg4), [arg4] "{r3}" (arg4),
[arg5] "{r4}" (arg5), [arg5] "{r4}" (arg5),
[arg6] "{r5}" (arg6), [arg6] "{r5}" (arg6),
: "memory" : .{ .memory = true });
);
} }
pub fn clone() callconv(.naked) usize { pub fn clone() callconv(.naked) usize {
@ -142,8 +135,7 @@ pub fn restore_rt() callconv(.naked) noreturn {
\\ trap0(#0) \\ trap0(#0)
: :
: [number] "{r6}" (@intFromEnum(SYS.rt_sigreturn)), : [number] "{r6}" (@intFromEnum(SYS.rt_sigreturn)),
: "memory" : .{ .memory = true });
);
} }
pub const F = struct { pub const F = struct {

View file

@ -17,8 +17,7 @@ pub fn syscall0(number: SYS) usize {
\\ syscall 0 \\ syscall 0
: [ret] "={$r4}" (-> usize), : [ret] "={$r4}" (-> usize),
: [number] "{$r11}" (@intFromEnum(number)), : [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 { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -27,8 +26,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={$r4}" (-> usize), : [ret] "={$r4}" (-> usize),
: [number] "{$r11}" (@intFromEnum(number)), : [number] "{$r11}" (@intFromEnum(number)),
[arg1] "{$r4}" (arg1), [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 { 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)), : [number] "{$r11}" (@intFromEnum(number)),
[arg1] "{$r4}" (arg1), [arg1] "{$r4}" (arg1),
[arg2] "{$r5}" (arg2), [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 { 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), [arg1] "{$r4}" (arg1),
[arg2] "{$r5}" (arg2), [arg2] "{$r5}" (arg2),
[arg3] "{$r6}" (arg3), [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 { 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), [arg2] "{$r5}" (arg2),
[arg3] "{$r6}" (arg3), [arg3] "{$r6}" (arg3),
[arg4] "{$r7}" (arg4), [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 { 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), [arg3] "{$r6}" (arg3),
[arg4] "{$r7}" (arg4), [arg4] "{$r7}" (arg4),
[arg5] "{$r8}" (arg5), [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( pub fn syscall6(
@ -100,8 +94,7 @@ pub fn syscall6(
[arg4] "{$r7}" (arg4), [arg4] "{$r7}" (arg4),
[arg5] "{$r8}" (arg5), [arg5] "{$r8}" (arg5),
[arg6] "{$r9}" (arg6), [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 { pub fn clone() callconv(.naked) usize {
@ -150,8 +143,7 @@ pub fn restore_rt() callconv(.naked) noreturn {
\\ syscall 0 \\ syscall 0
: :
: [number] "r" (@intFromEnum(SYS.rt_sigreturn)), : [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 { pub const msghdr = extern struct {

View file

@ -15,8 +15,7 @@ pub fn syscall0(number: SYS) usize {
return asm volatile ("trap #0" return asm volatile ("trap #0"
: [ret] "={d0}" (-> usize), : [ret] "={d0}" (-> usize),
: [number] "{d0}" (@intFromEnum(number)), : [number] "{d0}" (@intFromEnum(number)),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall1(number: SYS, arg1: usize) usize { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -24,8 +23,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={d0}" (-> usize), : [ret] "={d0}" (-> usize),
: [number] "{d0}" (@intFromEnum(number)), : [number] "{d0}" (@intFromEnum(number)),
[arg1] "{d1}" (arg1), [arg1] "{d1}" (arg1),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { 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)), : [number] "{d0}" (@intFromEnum(number)),
[arg1] "{d1}" (arg1), [arg1] "{d1}" (arg1),
[arg2] "{d2}" (arg2), [arg2] "{d2}" (arg2),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { 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), [arg1] "{d1}" (arg1),
[arg2] "{d2}" (arg2), [arg2] "{d2}" (arg2),
[arg3] "{d3}" (arg3), [arg3] "{d3}" (arg3),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { 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), [arg2] "{d2}" (arg2),
[arg3] "{d3}" (arg3), [arg3] "{d3}" (arg3),
[arg4] "{d4}" (arg4), [arg4] "{d4}" (arg4),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { 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), [arg3] "{d3}" (arg3),
[arg4] "{d4}" (arg4), [arg4] "{d4}" (arg4),
[arg5] "{d5}" (arg5), [arg5] "{d5}" (arg5),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall6( pub fn syscall6(
@ -92,8 +86,7 @@ pub fn syscall6(
[arg4] "{d4}" (arg4), [arg4] "{d4}" (arg4),
[arg5] "{d5}" (arg5), [arg5] "{d5}" (arg5),
[arg6] "{a0}" (arg6), [arg6] "{a0}" (arg6),
: "memory" : .{ .memory = true });
);
} }
pub fn clone() callconv(.naked) usize { pub fn clone() callconv(.naked) usize {
@ -155,8 +148,7 @@ pub fn restore_rt() callconv(.naked) noreturn {
asm volatile ("trap #0" asm volatile ("trap #0"
: :
: [number] "{d0}" (@intFromEnum(SYS.rt_sigreturn)), : [number] "{d0}" (@intFromEnum(SYS.rt_sigreturn)),
: "memory" : .{ .memory = true });
);
} }
pub const F = struct { pub const F = struct {

View file

@ -21,8 +21,7 @@ pub fn syscall0(number: SYS) usize {
\\ 1: \\ 1:
: [ret] "={$2}" (-> usize), : [ret] "={$2}" (-> usize),
: [number] "{$2}" (@intFromEnum(number)), : [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 { pub fn syscall_pipe(fd: *[2]i32) usize {
@ -41,8 +40,7 @@ pub fn syscall_pipe(fd: *[2]i32) usize {
: [ret] "={$2}" (-> usize), : [ret] "={$2}" (-> usize),
: [number] "{$2}" (@intFromEnum(SYS.pipe)), : [number] "{$2}" (@intFromEnum(SYS.pipe)),
[fd] "{$4}" (fd), [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 { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -55,8 +53,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={$2}" (-> usize), : [ret] "={$2}" (-> usize),
: [number] "{$2}" (@intFromEnum(number)), : [number] "{$2}" (@intFromEnum(number)),
[arg1] "{$4}" (arg1), [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 { 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)), : [number] "{$2}" (@intFromEnum(number)),
[arg1] "{$4}" (arg1), [arg1] "{$4}" (arg1),
[arg2] "{$5}" (arg2), [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 { 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), [arg1] "{$4}" (arg1),
[arg2] "{$5}" (arg2), [arg2] "{$5}" (arg2),
[arg3] "{$6}" (arg3), [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 { 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), [arg2] "{$5}" (arg2),
[arg3] "{$6}" (arg3), [arg3] "{$6}" (arg3),
[arg4] "{$7}" (arg4), [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 { 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), [arg3] "{$6}" (arg3),
[arg4] "{$7}" (arg4), [arg4] "{$7}" (arg4),
[arg5] "r" (arg5), [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 // NOTE: The o32 calling convention requires the callee to reserve 16 bytes for
@ -160,8 +153,7 @@ pub fn syscall6(
[arg4] "{$7}" (arg4), [arg4] "{$7}" (arg4),
[arg5] "r" (arg5), [arg5] "r" (arg5),
[arg6] "r" (arg6), [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( pub fn syscall7(
@ -195,8 +187,7 @@ pub fn syscall7(
[arg5] "r" (arg5), [arg5] "r" (arg5),
[arg6] "r" (arg6), [arg6] "r" (arg6),
[arg7] "r" (arg7), [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 { pub fn clone() callconv(.naked) usize {
@ -255,8 +246,7 @@ pub fn restore() callconv(.naked) noreturn {
\\ syscall \\ syscall
: :
: [number] "{$2}" (@intFromEnum(SYS.sigreturn)), : [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 { pub fn restore_rt() callconv(.naked) noreturn {
@ -264,8 +254,7 @@ pub fn restore_rt() callconv(.naked) noreturn {
\\ syscall \\ syscall
: :
: [number] "{$2}" (@intFromEnum(SYS.rt_sigreturn)), : [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 { pub const F = struct {

View file

@ -21,8 +21,7 @@ pub fn syscall0(number: SYS) usize {
\\ 1: \\ 1:
: [ret] "={$2}" (-> usize), : [ret] "={$2}" (-> usize),
: [number] "{$2}" (@intFromEnum(number)), : [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 { pub fn syscall_pipe(fd: *[2]i32) usize {
@ -41,8 +40,7 @@ pub fn syscall_pipe(fd: *[2]i32) usize {
: [ret] "={$2}" (-> usize), : [ret] "={$2}" (-> usize),
: [number] "{$2}" (@intFromEnum(SYS.pipe)), : [number] "{$2}" (@intFromEnum(SYS.pipe)),
[fd] "{$4}" (fd), [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 { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -56,8 +54,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={$2}" (-> usize), : [ret] "={$2}" (-> usize),
: [number] "{$2}" (@intFromEnum(number)), : [number] "{$2}" (@intFromEnum(number)),
[arg1] "{$4}" (arg1), [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 { 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)), : [number] "{$2}" (@intFromEnum(number)),
[arg1] "{$4}" (arg1), [arg1] "{$4}" (arg1),
[arg2] "{$5}" (arg2), [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 { 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), [arg1] "{$4}" (arg1),
[arg2] "{$5}" (arg2), [arg2] "{$5}" (arg2),
[arg3] "{$6}" (arg3), [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 { 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), [arg2] "{$5}" (arg2),
[arg3] "{$6}" (arg3), [arg3] "{$6}" (arg3),
[arg4] "{$7}" (arg4), [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 { 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), [arg3] "{$6}" (arg3),
[arg4] "{$7}" (arg4), [arg4] "{$7}" (arg4),
[arg5] "{$8}" (arg5), [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( pub fn syscall6(
@ -149,8 +142,7 @@ pub fn syscall6(
[arg4] "{$7}" (arg4), [arg4] "{$7}" (arg4),
[arg5] "{$8}" (arg5), [arg5] "{$8}" (arg5),
[arg6] "{$9}" (arg6), [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( pub fn syscall7(
@ -178,8 +170,7 @@ pub fn syscall7(
[arg5] "{$8}" (arg5), [arg5] "{$8}" (arg5),
[arg6] "{$9}" (arg6), [arg6] "{$9}" (arg6),
[arg7] "{$10}" (arg7), [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 { pub fn clone() callconv(.naked) usize {
@ -234,8 +225,7 @@ pub fn restore() callconv(.naked) noreturn {
\\ syscall \\ syscall
: :
: [number] "{$2}" (@intFromEnum(SYS.rt_sigreturn)), : [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 { pub fn restore_rt() callconv(.naked) noreturn {
@ -243,8 +233,7 @@ pub fn restore_rt() callconv(.naked) noreturn {
\\ syscall \\ syscall
: :
: [number] "{$2}" (@intFromEnum(SYS.rt_sigreturn)), : [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 { pub const F = struct {

View file

@ -22,8 +22,7 @@ pub fn syscall0(number: SYS) usize {
\\ 1: \\ 1:
: [ret] "={r3}" (-> usize), : [ret] "={r3}" (-> usize),
: [number] "{r0}" (@intFromEnum(number)), : [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 { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -35,8 +34,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={r3}" (-> usize), : [ret] "={r3}" (-> usize),
: [number] "{r0}" (@intFromEnum(number)), : [number] "{r0}" (@intFromEnum(number)),
[arg1] "{r3}" (arg1), [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 { 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)), : [number] "{r0}" (@intFromEnum(number)),
[arg1] "{r3}" (arg1), [arg1] "{r3}" (arg1),
[arg2] "{r4}" (arg2), [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 { 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), [arg1] "{r3}" (arg1),
[arg2] "{r4}" (arg2), [arg2] "{r4}" (arg2),
[arg3] "{r5}" (arg3), [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 { 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), [arg2] "{r4}" (arg2),
[arg3] "{r5}" (arg3), [arg3] "{r5}" (arg3),
[arg4] "{r6}" (arg4), [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 { 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), [arg3] "{r5}" (arg3),
[arg4] "{r6}" (arg4), [arg4] "{r6}" (arg4),
[arg5] "{r7}" (arg5), [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( pub fn syscall6(
@ -123,8 +117,7 @@ pub fn syscall6(
[arg4] "{r6}" (arg4), [arg4] "{r6}" (arg4),
[arg5] "{r7}" (arg5), [arg5] "{r7}" (arg5),
[arg6] "{r8}" (arg6), [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 { pub fn clone() callconv(.naked) usize {
@ -204,8 +197,7 @@ pub fn restore_rt() callconv(.naked) noreturn {
\\ sc \\ sc
: :
: [number] "{r0}" (@intFromEnum(SYS.rt_sigreturn)), : [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 { pub const F = struct {

View file

@ -22,8 +22,7 @@ pub fn syscall0(number: SYS) usize {
\\ 1: \\ 1:
: [ret] "={r3}" (-> usize), : [ret] "={r3}" (-> usize),
: [number] "{r0}" (@intFromEnum(number)), : [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 { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -35,8 +34,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={r3}" (-> usize), : [ret] "={r3}" (-> usize),
: [number] "{r0}" (@intFromEnum(number)), : [number] "{r0}" (@intFromEnum(number)),
[arg1] "{r3}" (arg1), [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 { 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)), : [number] "{r0}" (@intFromEnum(number)),
[arg1] "{r3}" (arg1), [arg1] "{r3}" (arg1),
[arg2] "{r4}" (arg2), [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 { 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), [arg1] "{r3}" (arg1),
[arg2] "{r4}" (arg2), [arg2] "{r4}" (arg2),
[arg3] "{r5}" (arg3), [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 { 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), [arg2] "{r4}" (arg2),
[arg3] "{r5}" (arg3), [arg3] "{r5}" (arg3),
[arg4] "{r6}" (arg4), [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 { 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), [arg3] "{r5}" (arg3),
[arg4] "{r6}" (arg4), [arg4] "{r6}" (arg4),
[arg5] "{r7}" (arg5), [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( pub fn syscall6(
@ -123,8 +117,7 @@ pub fn syscall6(
[arg4] "{r6}" (arg4), [arg4] "{r6}" (arg4),
[arg5] "{r7}" (arg5), [arg5] "{r7}" (arg5),
[arg6] "{r8}" (arg6), [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 { pub fn clone() callconv(.naked) usize {
@ -189,8 +182,7 @@ pub fn restore_rt() callconv(.naked) noreturn {
\\ sc \\ sc
: :
: [number] "{r0}" (@intFromEnum(SYS.rt_sigreturn)), : [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 { pub const F = struct {

View file

@ -17,8 +17,7 @@ pub fn syscall0(number: SYS) usize {
return asm volatile ("ecall" return asm volatile ("ecall"
: [ret] "={x10}" (-> usize), : [ret] "={x10}" (-> usize),
: [number] "{x17}" (@intFromEnum(number)), : [number] "{x17}" (@intFromEnum(number)),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall1(number: SYS, arg1: usize) usize { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -26,8 +25,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={x10}" (-> usize), : [ret] "={x10}" (-> usize),
: [number] "{x17}" (@intFromEnum(number)), : [number] "{x17}" (@intFromEnum(number)),
[arg1] "{x10}" (arg1), [arg1] "{x10}" (arg1),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { 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)), : [number] "{x17}" (@intFromEnum(number)),
[arg1] "{x10}" (arg1), [arg1] "{x10}" (arg1),
[arg2] "{x11}" (arg2), [arg2] "{x11}" (arg2),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { 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), [arg1] "{x10}" (arg1),
[arg2] "{x11}" (arg2), [arg2] "{x11}" (arg2),
[arg3] "{x12}" (arg3), [arg3] "{x12}" (arg3),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { 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), [arg2] "{x11}" (arg2),
[arg3] "{x12}" (arg3), [arg3] "{x12}" (arg3),
[arg4] "{x13}" (arg4), [arg4] "{x13}" (arg4),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { 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), [arg3] "{x12}" (arg3),
[arg4] "{x13}" (arg4), [arg4] "{x13}" (arg4),
[arg5] "{x14}" (arg5), [arg5] "{x14}" (arg5),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall6( pub fn syscall6(
@ -94,8 +88,7 @@ pub fn syscall6(
[arg4] "{x13}" (arg4), [arg4] "{x13}" (arg4),
[arg5] "{x14}" (arg5), [arg5] "{x14}" (arg5),
[arg6] "{x15}" (arg6), [arg6] "{x15}" (arg6),
: "memory" : .{ .memory = true });
);
} }
pub fn clone() callconv(.naked) usize { pub fn clone() callconv(.naked) usize {
@ -149,8 +142,7 @@ pub fn restore_rt() callconv(.naked) noreturn {
\\ ecall \\ ecall
: :
: [number] "{x17}" (@intFromEnum(SYS.rt_sigreturn)), : [number] "{x17}" (@intFromEnum(SYS.rt_sigreturn)),
: "memory" : .{ .memory = true });
);
} }
pub const F = struct { pub const F = struct {

View file

@ -17,8 +17,7 @@ pub fn syscall0(number: SYS) usize {
return asm volatile ("ecall" return asm volatile ("ecall"
: [ret] "={x10}" (-> usize), : [ret] "={x10}" (-> usize),
: [number] "{x17}" (@intFromEnum(number)), : [number] "{x17}" (@intFromEnum(number)),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall1(number: SYS, arg1: usize) usize { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -26,8 +25,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={x10}" (-> usize), : [ret] "={x10}" (-> usize),
: [number] "{x17}" (@intFromEnum(number)), : [number] "{x17}" (@intFromEnum(number)),
[arg1] "{x10}" (arg1), [arg1] "{x10}" (arg1),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { 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)), : [number] "{x17}" (@intFromEnum(number)),
[arg1] "{x10}" (arg1), [arg1] "{x10}" (arg1),
[arg2] "{x11}" (arg2), [arg2] "{x11}" (arg2),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { 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), [arg1] "{x10}" (arg1),
[arg2] "{x11}" (arg2), [arg2] "{x11}" (arg2),
[arg3] "{x12}" (arg3), [arg3] "{x12}" (arg3),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { 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), [arg2] "{x11}" (arg2),
[arg3] "{x12}" (arg3), [arg3] "{x12}" (arg3),
[arg4] "{x13}" (arg4), [arg4] "{x13}" (arg4),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { 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), [arg3] "{x12}" (arg3),
[arg4] "{x13}" (arg4), [arg4] "{x13}" (arg4),
[arg5] "{x14}" (arg5), [arg5] "{x14}" (arg5),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall6( pub fn syscall6(
@ -94,8 +88,7 @@ pub fn syscall6(
[arg4] "{x13}" (arg4), [arg4] "{x13}" (arg4),
[arg5] "{x14}" (arg5), [arg5] "{x14}" (arg5),
[arg6] "{x15}" (arg6), [arg6] "{x15}" (arg6),
: "memory" : .{ .memory = true });
);
} }
pub fn clone() callconv(.naked) usize { pub fn clone() callconv(.naked) usize {
@ -149,8 +142,7 @@ pub fn restore_rt() callconv(.naked) noreturn {
\\ ecall \\ ecall
: :
: [number] "{x17}" (@intFromEnum(SYS.rt_sigreturn)), : [number] "{x17}" (@intFromEnum(SYS.rt_sigreturn)),
: "memory" : .{ .memory = true });
);
} }
pub const F = struct { pub const F = struct {

View file

@ -17,8 +17,7 @@ pub fn syscall0(number: SYS) usize {
return asm volatile ("svc 0" return asm volatile ("svc 0"
: [ret] "={r2}" (-> usize), : [ret] "={r2}" (-> usize),
: [number] "{r1}" (@intFromEnum(number)), : [number] "{r1}" (@intFromEnum(number)),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall1(number: SYS, arg1: usize) usize { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -26,8 +25,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={r2}" (-> usize), : [ret] "={r2}" (-> usize),
: [number] "{r1}" (@intFromEnum(number)), : [number] "{r1}" (@intFromEnum(number)),
[arg1] "{r2}" (arg1), [arg1] "{r2}" (arg1),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { 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)), : [number] "{r1}" (@intFromEnum(number)),
[arg1] "{r2}" (arg1), [arg1] "{r2}" (arg1),
[arg2] "{r3}" (arg2), [arg2] "{r3}" (arg2),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { 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), [arg1] "{r2}" (arg1),
[arg2] "{r3}" (arg2), [arg2] "{r3}" (arg2),
[arg3] "{r4}" (arg3), [arg3] "{r4}" (arg3),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { 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), [arg2] "{r3}" (arg2),
[arg3] "{r4}" (arg3), [arg3] "{r4}" (arg3),
[arg4] "{r5}" (arg4), [arg4] "{r5}" (arg4),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { 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), [arg3] "{r4}" (arg3),
[arg4] "{r5}" (arg4), [arg4] "{r5}" (arg4),
[arg5] "{r6}" (arg5), [arg5] "{r6}" (arg5),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall6(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize, arg6: usize) usize { 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), [arg4] "{r5}" (arg4),
[arg5] "{r6}" (arg5), [arg5] "{r6}" (arg5),
[arg6] "{r7}" (arg6), [arg6] "{r7}" (arg6),
: "memory" : .{ .memory = true });
);
} }
pub fn clone() callconv(.naked) usize { pub fn clone() callconv(.naked) usize {
@ -161,8 +154,7 @@ pub fn restore_rt() callconv(.naked) noreturn {
\\svc 0 \\svc 0
: :
: [number] "{r1}" (@intFromEnum(SYS.rt_sigreturn)), : [number] "{r1}" (@intFromEnum(SYS.rt_sigreturn)),
: "memory" : .{ .memory = true });
);
} }
pub const F = struct { pub const F = struct {

View file

@ -32,8 +32,7 @@ pub fn syscall_pipe(fd: *[2]i32) usize {
: [ret] "={o0}" (-> usize), : [ret] "={o0}" (-> usize),
: [number] "{g1}" (@intFromEnum(SYS.pipe)), : [number] "{g1}" (@intFromEnum(SYS.pipe)),
[arg] "r" (fd), [arg] "r" (fd),
: "memory", "g3" : .{ .memory = true, .g3 = true });
);
} }
pub fn syscall_fork() usize { pub fn syscall_fork() usize {
@ -55,8 +54,7 @@ pub fn syscall_fork() usize {
\\ 2: \\ 2:
: [ret] "={o0}" (-> usize), : [ret] "={o0}" (-> usize),
: [number] "{g1}" (@intFromEnum(SYS.fork)), : [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 { pub fn syscall0(number: SYS) usize {
@ -68,8 +66,7 @@ pub fn syscall0(number: SYS) usize {
\\ 1: \\ 1:
: [ret] "={o0}" (-> usize), : [ret] "={o0}" (-> usize),
: [number] "{g1}" (@intFromEnum(number)), : [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 { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -82,8 +79,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={o0}" (-> usize), : [ret] "={o0}" (-> usize),
: [number] "{g1}" (@intFromEnum(number)), : [number] "{g1}" (@intFromEnum(number)),
[arg1] "{o0}" (arg1), [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 { 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)), : [number] "{g1}" (@intFromEnum(number)),
[arg1] "{o0}" (arg1), [arg1] "{o0}" (arg1),
[arg2] "{o1}" (arg2), [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 { 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), [arg1] "{o0}" (arg1),
[arg2] "{o1}" (arg2), [arg2] "{o1}" (arg2),
[arg3] "{o2}" (arg3), [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 { 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), [arg2] "{o1}" (arg2),
[arg3] "{o2}" (arg3), [arg3] "{o2}" (arg3),
[arg4] "{o3}" (arg4), [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 { 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), [arg3] "{o2}" (arg3),
[arg4] "{o3}" (arg4), [arg4] "{o3}" (arg4),
[arg5] "{o4}" (arg5), [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( pub fn syscall6(
@ -175,8 +167,7 @@ pub fn syscall6(
[arg4] "{o3}" (arg4), [arg4] "{o3}" (arg4),
[arg5] "{o4}" (arg5), [arg5] "{o4}" (arg5),
[arg6] "{o5}" (arg6), [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 { pub fn clone() callconv(.naked) usize {
@ -242,8 +233,7 @@ pub fn restore_rt() callconv(.c) void {
return asm volatile ("t 0x6d" return asm volatile ("t 0x6d"
: :
: [number] "{g1}" (@intFromEnum(SYS.rt_sigreturn)), : [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 { pub const F = struct {

View file

@ -18,8 +18,7 @@ pub fn syscall0(number: SYS) usize {
\\ ldr r7, [%[tmp], #4] \\ ldr r7, [%[tmp], #4]
: [ret] "={r0}" (-> usize), : [ret] "={r0}" (-> usize),
: [tmp] "{r1}" (&buf), : [tmp] "{r1}" (&buf),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall1(number: SYS, arg1: usize) usize { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -34,8 +33,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={r0}" (-> usize), : [ret] "={r0}" (-> usize),
: [tmp] "{r1}" (&buf), : [tmp] "{r1}" (&buf),
[arg1] "{r0}" (arg1), [arg1] "{r0}" (arg1),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { 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), : [tmp] "{r2}" (&buf),
[arg1] "{r0}" (arg1), [arg1] "{r0}" (arg1),
[arg2] "{r1}" (arg2), [arg2] "{r1}" (arg2),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { 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), [arg1] "{r0}" (arg1),
[arg2] "{r1}" (arg2), [arg2] "{r1}" (arg2),
[arg3] "{r2}" (arg3), [arg3] "{r2}" (arg3),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { 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), [arg2] "{r1}" (arg2),
[arg3] "{r2}" (arg3), [arg3] "{r2}" (arg3),
[arg4] "{r3}" (arg4), [arg4] "{r3}" (arg4),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { 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), [arg3] "{r2}" (arg3),
[arg4] "{r3}" (arg4), [arg4] "{r3}" (arg4),
[arg5] "{r4}" (arg5), [arg5] "{r4}" (arg5),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall6( pub fn syscall6(
@ -137,8 +131,7 @@ pub fn syscall6(
[arg4] "{r3}" (arg4), [arg4] "{r3}" (arg4),
[arg5] "{r4}" (arg5), [arg5] "{r4}" (arg5),
[arg6] "{r5}" (arg6), [arg6] "{r5}" (arg6),
: "memory" : .{ .memory = true });
);
} }
pub const clone = @import("arm.zig").clone; pub const clone = @import("arm.zig").clone;
@ -158,6 +151,5 @@ pub fn restore_rt() callconv(.naked) noreturn {
\\ svc #0 \\ svc #0
: :
: [number] "I" (@intFromEnum(SYS.rt_sigreturn)), : [number] "I" (@intFromEnum(SYS.rt_sigreturn)),
: "memory" : .{ .memory = true });
);
} }

View file

@ -308,8 +308,7 @@ pub fn setThreadPointer(addr: usize) void {
\\ sar %%a0, %%r0 \\ sar %%a0, %%r0
: :
: [addr] "r" (addr), : [addr] "r" (addr),
: "r0" : .{ .r0 = true });
);
}, },
.sparc, .sparc64 => { .sparc, .sparc64 => {
asm volatile ( asm volatile (

View file

@ -18,8 +18,7 @@ pub fn syscall0(number: SYS) usize {
return asm volatile ("int $0x80" return asm volatile ("int $0x80"
: [ret] "={eax}" (-> usize), : [ret] "={eax}" (-> usize),
: [number] "{eax}" (@intFromEnum(number)), : [number] "{eax}" (@intFromEnum(number)),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall1(number: SYS, arg1: usize) usize { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -27,8 +26,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={eax}" (-> usize), : [ret] "={eax}" (-> usize),
: [number] "{eax}" (@intFromEnum(number)), : [number] "{eax}" (@intFromEnum(number)),
[arg1] "{ebx}" (arg1), [arg1] "{ebx}" (arg1),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { 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)), : [number] "{eax}" (@intFromEnum(number)),
[arg1] "{ebx}" (arg1), [arg1] "{ebx}" (arg1),
[arg2] "{ecx}" (arg2), [arg2] "{ecx}" (arg2),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { 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), [arg1] "{ebx}" (arg1),
[arg2] "{ecx}" (arg2), [arg2] "{ecx}" (arg2),
[arg3] "{edx}" (arg3), [arg3] "{edx}" (arg3),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize { 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), [arg2] "{ecx}" (arg2),
[arg3] "{edx}" (arg3), [arg3] "{edx}" (arg3),
[arg4] "{esi}" (arg4), [arg4] "{esi}" (arg4),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize { 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), [arg3] "{edx}" (arg3),
[arg4] "{esi}" (arg4), [arg4] "{esi}" (arg4),
[arg5] "{edi}" (arg5), [arg5] "{edi}" (arg5),
: "memory" : .{ .memory = true });
);
} }
pub fn syscall6( pub fn syscall6(
@ -108,8 +102,7 @@ pub fn syscall6(
[arg4] "{esi}" (arg4), [arg4] "{esi}" (arg4),
[arg5] "rm" (arg5), [arg5] "rm" (arg5),
[arg6] "rm" (arg6), [arg6] "rm" (arg6),
: "memory" : .{ .memory = true });
);
} }
pub fn socketcall(call: usize, args: [*]const usize) usize { 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)), : [number] "{eax}" (@intFromEnum(SYS.socketcall)),
[arg1] "{ebx}" (call), [arg1] "{ebx}" (call),
[arg2] "{ecx}" (@intFromPtr(args)), [arg2] "{ecx}" (@intFromPtr(args)),
: "memory" : .{ .memory = true });
);
} }
pub fn clone() callconv(.naked) usize { pub fn clone() callconv(.naked) usize {
@ -179,14 +171,12 @@ pub fn restore() callconv(.naked) noreturn {
\\ int $0x80 \\ int $0x80
: :
: [number] "i" (@intFromEnum(SYS.sigreturn)), : [number] "i" (@intFromEnum(SYS.sigreturn)),
: "memory" : .{ .memory = true }),
),
else => asm volatile ( else => asm volatile (
\\ int $0x80 \\ int $0x80
: :
: [number] "{eax}" (@intFromEnum(SYS.sigreturn)), : [number] "{eax}" (@intFromEnum(SYS.sigreturn)),
: "memory" : .{ .memory = true }),
),
} }
} }
@ -197,14 +187,12 @@ pub fn restore_rt() callconv(.naked) noreturn {
\\ int $0x80 \\ int $0x80
: :
: [number] "i" (@intFromEnum(SYS.rt_sigreturn)), : [number] "i" (@intFromEnum(SYS.rt_sigreturn)),
: "memory" : .{ .memory = true }),
),
else => asm volatile ( else => asm volatile (
\\ int $0x80 \\ int $0x80
: :
: [number] "{eax}" (@intFromEnum(SYS.rt_sigreturn)), : [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)), [sigprocmask] "i" (@intFromEnum(linux.SYS.rt_sigprocmask)),
[sigmask_offset] "i" (@offsetOf(ucontext_t, "sigmask")), [sigmask_offset] "i" (@offsetOf(ucontext_t, "sigmask")),
[sigset_size] "i" (linux.NSIG / 8), [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 { pub inline fn getcontext(context: *ucontext_t) usize {
@ -457,6 +444,5 @@ pub inline fn getcontext(context: *ucontext_t) usize {
[_] "={edx}" (clobber_edx), [_] "={edx}" (clobber_edx),
: [_] "{edx}" (context), : [_] "{edx}" (context),
[getContextInternal] "X" (&getContextInternal), [getContextInternal] "X" (&getContextInternal),
: "cc", "memory", "ecx" : .{ .cc = true, .memory = true, .ecx = true });
);
} }

View file

@ -20,8 +20,7 @@ pub fn syscall0(number: SYS) usize {
return asm volatile ("syscall" return asm volatile ("syscall"
: [ret] "={rax}" (-> usize), : [ret] "={rax}" (-> usize),
: [number] "{rax}" (@intFromEnum(number)), : [number] "{rax}" (@intFromEnum(number)),
: "rcx", "r11", "memory" : .{ .rcx = true, .r11 = true, .memory = true });
);
} }
pub fn syscall1(number: SYS, arg1: usize) usize { pub fn syscall1(number: SYS, arg1: usize) usize {
@ -29,8 +28,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
: [ret] "={rax}" (-> usize), : [ret] "={rax}" (-> usize),
: [number] "{rax}" (@intFromEnum(number)), : [number] "{rax}" (@intFromEnum(number)),
[arg1] "{rdi}" (arg1), [arg1] "{rdi}" (arg1),
: "rcx", "r11", "memory" : .{ .rcx = true, .r11 = true, .memory = true });
);
} }
pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize { 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)), : [number] "{rax}" (@intFromEnum(number)),
[arg1] "{rdi}" (arg1), [arg1] "{rdi}" (arg1),
[arg2] "{rsi}" (arg2), [arg2] "{rsi}" (arg2),
: "rcx", "r11", "memory" : .{ .rcx = true, .r11 = true, .memory = true });
);
} }
pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize { 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), [arg1] "{rdi}" (arg1),
[arg2] "{rsi}" (arg2), [arg2] "{rsi}" (arg2),
[arg3] "{rdx}" (arg3), [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 { 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), [arg2] "{rsi}" (arg2),
[arg3] "{rdx}" (arg3), [arg3] "{rdx}" (arg3),
[arg4] "{r10}" (arg4), [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 { 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), [arg3] "{rdx}" (arg3),
[arg4] "{r10}" (arg4), [arg4] "{r10}" (arg4),
[arg5] "{r8}" (arg5), [arg5] "{r8}" (arg5),
: "rcx", "r11", "memory" : .{ .rcx = true, .r11 = true, .memory = true });
);
} }
pub fn syscall6( pub fn syscall6(
@ -97,8 +91,7 @@ pub fn syscall6(
[arg4] "{r10}" (arg4), [arg4] "{r10}" (arg4),
[arg5] "{r8}" (arg5), [arg5] "{r8}" (arg5),
[arg6] "{r9}" (arg6), [arg6] "{r9}" (arg6),
: "rcx", "r11", "memory" : .{ .rcx = true, .r11 = true, .memory = true });
);
} }
pub fn clone() callconv(.naked) usize { pub fn clone() callconv(.naked) usize {
@ -144,14 +137,12 @@ pub fn restore_rt() callconv(.naked) noreturn {
\\ syscall \\ syscall
: :
: [number] "i" (@intFromEnum(SYS.rt_sigreturn)), : [number] "i" (@intFromEnum(SYS.rt_sigreturn)),
: "rcx", "r11", "memory" : .{ .rcx = true, .r11 = true, .memory = true }),
),
else => asm volatile ( else => asm volatile (
\\ syscall \\ syscall
: :
: [number] "{rax}" (@intFromEnum(SYS.rt_sigreturn)), : [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)), [sigprocmask] "i" (@intFromEnum(linux.SYS.rt_sigprocmask)),
[sigmask_offset] "i" (@offsetOf(ucontext_t, "sigmask")), [sigmask_offset] "i" (@offsetOf(ucontext_t, "sigmask")),
[sigset_size] "i" (@sizeOf(sigset_t)), [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 { pub inline fn getcontext(context: *ucontext_t) usize {
@ -455,6 +445,5 @@ pub inline fn getcontext(context: *ucontext_t) usize {
[_] "={rdi}" (clobber_rdi), [_] "={rdi}" (clobber_rdi),
: [_] "{rdi}" (context), : [_] "{rdi}" (context),
[getContextInternal] "X" (&getContextInternal), [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 });
);
} }

View file

@ -11,8 +11,7 @@ pub fn syscall1(sys: plan9.SYS, arg0: usize) usize {
: [ret] "={rax}" (-> usize), : [ret] "={rax}" (-> usize),
: [arg0] "{r8}" (arg0), : [arg0] "{r8}" (arg0),
[syscall_number] "{rbp}" (@intFromEnum(sys)), [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 { pub fn syscall2(sys: plan9.SYS, arg0: usize, arg1: usize) usize {
return asm volatile ( return asm volatile (
@ -27,8 +26,7 @@ pub fn syscall2(sys: plan9.SYS, arg0: usize, arg1: usize) usize {
: [arg0] "{r8}" (arg0), : [arg0] "{r8}" (arg0),
[arg1] "{r9}" (arg1), [arg1] "{r9}" (arg1),
[syscall_number] "{rbp}" (@intFromEnum(sys)), [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 { pub fn syscall3(sys: plan9.SYS, arg0: usize, arg1: usize, arg2: usize) usize {
return asm volatile ( return asm volatile (
@ -46,8 +44,7 @@ pub fn syscall3(sys: plan9.SYS, arg0: usize, arg1: usize, arg2: usize) usize {
[arg1] "{r9}" (arg1), [arg1] "{r9}" (arg1),
[arg2] "{r10}" (arg2), [arg2] "{r10}" (arg2),
[syscall_number] "{rbp}" (@intFromEnum(sys)), [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 { pub fn syscall4(sys: plan9.SYS, arg0: usize, arg1: usize, arg2: usize, arg3: usize) usize {
return asm volatile ( return asm volatile (
@ -68,6 +65,5 @@ pub fn syscall4(sys: plan9.SYS, arg0: usize, arg1: usize, arg2: usize, arg3: usi
[arg2] "{r10}" (arg2), [arg2] "{r10}" (arg2),
[arg3] "{r11}" (arg3), [arg3] "{r11}" (arg3),
[syscall_number] "{rbp}" (@intFromEnum(sys)), [syscall_number] "{rbp}" (@intFromEnum(sys)),
: "rcx", "rax", "rbp", "r11", "memory" : .{ .rcx = true, .rax = true, .rbp = true, .r11 = true, .memory = true });
);
} }

View file

@ -100,8 +100,7 @@ inline fn getDynamicSymbol() [*]const elf.Dyn {
\\ %[ret] = add(r1, %[ret]) \\ %[ret] = add(r1, %[ret])
: [ret] "=r" (-> [*]const elf.Dyn), : [ret] "=r" (-> [*]const elf.Dyn),
: :
: "r1" : .{ .r1 = true }),
),
.loongarch32, .loongarch64 => asm volatile ( .loongarch32, .loongarch64 => asm volatile (
\\ .weak _DYNAMIC \\ .weak _DYNAMIC
\\ .hidden _DYNAMIC \\ .hidden _DYNAMIC
@ -127,8 +126,7 @@ inline fn getDynamicSymbol() [*]const elf.Dyn {
\\ addu %[ret], %[ret], $gp \\ addu %[ret], %[ret], $gp
: [ret] "=r" (-> [*]const elf.Dyn), : [ret] "=r" (-> [*]const elf.Dyn),
: :
: "lr" : .{ .lr = true }),
),
.mips64, .mips64el => asm volatile ( .mips64, .mips64el => asm volatile (
\\ .weak _DYNAMIC \\ .weak _DYNAMIC
\\ .hidden _DYNAMIC \\ .hidden _DYNAMIC
@ -140,8 +138,7 @@ inline fn getDynamicSymbol() [*]const elf.Dyn {
\\ daddu %[ret], %[ret], $gp \\ daddu %[ret], %[ret], $gp
: [ret] "=r" (-> [*]const elf.Dyn), : [ret] "=r" (-> [*]const elf.Dyn),
: :
: "lr" : .{ .lr = true }),
),
.powerpc, .powerpcle => asm volatile ( .powerpc, .powerpcle => asm volatile (
\\ .weak _DYNAMIC \\ .weak _DYNAMIC
\\ .hidden _DYNAMIC \\ .hidden _DYNAMIC
@ -153,8 +150,7 @@ inline fn getDynamicSymbol() [*]const elf.Dyn {
\\ add %[ret], 4, %[ret] \\ add %[ret], 4, %[ret]
: [ret] "=r" (-> [*]const elf.Dyn), : [ret] "=r" (-> [*]const elf.Dyn),
: :
: "lr", "r4" : .{ .lr = true, .r4 = true }),
),
.powerpc64, .powerpc64le => asm volatile ( .powerpc64, .powerpc64le => asm volatile (
\\ .weak _DYNAMIC \\ .weak _DYNAMIC
\\ .hidden _DYNAMIC \\ .hidden _DYNAMIC
@ -166,8 +162,7 @@ inline fn getDynamicSymbol() [*]const elf.Dyn {
\\ add %[ret], 4, %[ret] \\ add %[ret], 4, %[ret]
: [ret] "=r" (-> [*]const elf.Dyn), : [ret] "=r" (-> [*]const elf.Dyn),
: :
: "lr", "r4" : .{ .lr = true, .r4 = true }),
),
.riscv32, .riscv64 => asm volatile ( .riscv32, .riscv64 => asm volatile (
\\ .weak _DYNAMIC \\ .weak _DYNAMIC
\\ .hidden _DYNAMIC \\ .hidden _DYNAMIC

View file

@ -131,32 +131,28 @@ fn exit2(code: usize) noreturn {
: :
: [number] "{rax}" (231), : [number] "{rax}" (231),
[arg1] "{rdi}" (code), [arg1] "{rdi}" (code),
: "rcx", "r11", "memory" : .{ .rcx = true, .r11 = true, .memory = true });
);
}, },
.arm => { .arm => {
asm volatile ("svc #0" asm volatile ("svc #0"
: :
: [number] "{r7}" (1), : [number] "{r7}" (1),
[arg1] "{r0}" (code), [arg1] "{r0}" (code),
: "memory" : .{ .memory = true });
);
}, },
.aarch64 => { .aarch64 => {
asm volatile ("svc #0" asm volatile ("svc #0"
: :
: [number] "{x8}" (93), : [number] "{x8}" (93),
[arg1] "{x0}" (code), [arg1] "{x0}" (code),
: "memory", "cc" : .{ .memory = true, .cc = true });
);
}, },
.sparc64 => { .sparc64 => {
asm volatile ("ta 0x6d" asm volatile ("ta 0x6d"
: :
: [number] "{g1}" (1), : [number] "{g1}" (1),
[arg1] "{o0}" (code), [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"), else => @compileError("TODO"),
}, },

View file

@ -17,8 +17,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
: [_] "={r3}" (-> usize), : [_] "={r3}" (-> usize),
: [_] "{r4}" (args), : [_] "{r4}" (args),
[_] "{r3}" (default), [_] "{r3}" (default),
: "cc", "memory" : .{ .cc = true, .memory = true }),
),
.aarch64, .aarch64_be => asm volatile ( .aarch64, .aarch64_be => asm volatile (
\\ ror x12, x12, #3 ; ror x12, x12, #13 \\ ror x12, x12, #3 ; ror x12, x12, #13
\\ ror x12, x12, #51 ; ror x12, x12, #61 \\ 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), : [_] "={x3}" (-> usize),
: [_] "{x4}" (args), : [_] "{x4}" (args),
[_] "{x3}" (default), [_] "{x3}" (default),
: "cc", "memory" : .{ .cc = true, .memory = true }),
),
.mips, .mipsel => asm volatile ( .mips, .mipsel => asm volatile (
\\ srl $0, $0, 13 \\ srl $0, $0, 13
\\ srl $0, $0, 29 \\ srl $0, $0, 29
@ -37,8 +35,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
: [_] "={$11}" (-> usize), : [_] "={$11}" (-> usize),
: [_] "{$12}" (args), : [_] "{$12}" (args),
[_] "{$11}" (default), [_] "{$11}" (default),
: "memory" : .{ .memory = true }),
),
.mips64, .mips64el => asm volatile ( .mips64, .mips64el => asm volatile (
\\ dsll $0, $0, 3 ; dsll $0, $0, 13 \\ dsll $0, $0, 3 ; dsll $0, $0, 13
\\ dsll $0, $0, 29 ; dsll $0, $0, 19 \\ 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), : [_] "={$11}" (-> usize),
: [_] "{$12}" (args), : [_] "{$12}" (args),
[_] "{$11}" (default), [_] "{$11}" (default),
: "memory" : .{ .memory = true }),
),
.powerpc, .powerpcle => asm volatile ( .powerpc, .powerpcle => asm volatile (
\\ rlwinm 0, 0, 3, 0, 31 ; rlwinm 0, 0, 13, 0, 31 \\ rlwinm 0, 0, 3, 0, 31 ; rlwinm 0, 0, 13, 0, 31
\\ rlwinm 0, 0, 29, 0, 31 ; rlwinm 0, 0, 19, 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), : [_] "={r3}" (-> usize),
: [_] "{r4}" (args), : [_] "{r4}" (args),
[_] "{r3}" (default), [_] "{r3}" (default),
: "cc", "memory" : .{ .cc = true, .memory = true }),
),
.powerpc64, .powerpc64le => asm volatile ( .powerpc64, .powerpc64le => asm volatile (
\\ rotldi 0, 0, 3 ; rotldi 0, 0, 13 \\ rotldi 0, 0, 3 ; rotldi 0, 0, 13
\\ rotldi 0, 0, 61 ; rotldi 0, 0, 51 \\ 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), : [_] "={r3}" (-> usize),
: [_] "{r4}" (args), : [_] "{r4}" (args),
[_] "{r3}" (default), [_] "{r3}" (default),
: "cc", "memory" : .{ .cc = true, .memory = true }),
),
.riscv64 => asm volatile ( .riscv64 => asm volatile (
\\ .option push \\ .option push
\\ .option norvc \\ .option norvc
@ -78,8 +72,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
: [_] "={a3}" (-> usize), : [_] "={a3}" (-> usize),
: [_] "{a4}" (args), : [_] "{a4}" (args),
[_] "{a3}" (default), [_] "{a3}" (default),
: "cc", "memory" : .{ .cc = true, .memory = true }),
),
.s390x => asm volatile ( .s390x => asm volatile (
\\ lr %%r15, %%r15 \\ lr %%r15, %%r15
\\ lr %%r1, %%r1 \\ lr %%r1, %%r1
@ -89,8 +82,7 @@ pub fn doClientRequest(default: usize, request: usize, a1: usize, a2: usize, a3:
: [_] "={r3}" (-> usize), : [_] "={r3}" (-> usize),
: [_] "{r2}" (args), : [_] "{r2}" (args),
[_] "{r3}" (default), [_] "{r3}" (default),
: "cc", "memory" : .{ .cc = true, .memory = true }),
),
.x86 => asm volatile ( .x86 => asm volatile (
\\ roll $3, %%edi ; roll $13, %%edi \\ roll $3, %%edi ; roll $13, %%edi
\\ roll $29, %%edi ; roll $19, %%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), : [_] "={edx}" (-> usize),
: [_] "{eax}" (args), : [_] "{eax}" (args),
[_] "{edx}" (default), [_] "{edx}" (default),
: "cc", "memory" : .{ .cc = true, .memory = true }),
),
.x86_64 => asm volatile ( .x86_64 => asm volatile (
\\ rolq $3, %%rdi ; rolq $13, %%rdi \\ rolq $3, %%rdi ; rolq $13, %%rdi
\\ rolq $61, %%rdi ; rolq $51, %%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), : [_] "={rdx}" (-> usize),
: [_] "{rax}" (args), : [_] "{rax}" (args),
[_] "{rdx}" (default), [_] "{rdx}" (default),
: "cc", "memory" : .{ .cc = true, .memory = true }),
),
else => default, else => default,
}; };
} }

View file

@ -2400,6 +2400,7 @@ fn renderAsmLegacy(
while (true) : (tok_i += 1) { while (true) : (tok_i += 1) {
try ais.writer().writeAll(".@"); try ais.writer().writeAll(".@");
try ais.writer().writeAll(tokenSliceForRender(tree, tok_i)); try ais.writer().writeAll(tokenSliceForRender(tree, tok_i));
try ais.writer().writeAll(" = true");
tok_i += 1; tok_i += 1;
switch (tree.tokenTag(tok_i)) { switch (tree.tokenTag(tok_i)) {
@ -2514,7 +2515,7 @@ fn renderAsmLegacy(
try ais.writer().writeAll(".@"); try ais.writer().writeAll(".@");
const lexeme = tokenSliceForRender(tree, tok_i); const lexeme = tokenSliceForRender(tree, tok_i);
try ais.writer().writeAll(lexeme); try ais.writer().writeAll(lexeme);
try ais.writer().writeAll(" }"); try ais.writer().writeAll(" = true }");
try renderSpace(r, tok_i, lexeme.len, .newline); try renderSpace(r, tok_i, lexeme.len, .newline);
ais.popIndent(); ais.popIndent();
return renderToken(r, tok_i + 1, space); return renderToken(r, tok_i + 1, space);
@ -2526,7 +2527,7 @@ fn renderAsmLegacy(
try ais.writer().writeAll(".@"); try ais.writer().writeAll(".@");
const lexeme = tokenSliceForRender(tree, tok_i); const lexeme = tokenSliceForRender(tree, tok_i);
try ais.writer().writeAll(lexeme); try ais.writer().writeAll(lexeme);
try ais.writer().writeAll(" }"); try ais.writer().writeAll(" = true }");
try renderSpace(r, tok_i, lexeme.len, .newline); try renderSpace(r, tok_i, lexeme.len, .newline);
ais.popIndent(); ais.popIndent();
return renderToken(r, tok_i + 2, space); return renderToken(r, tok_i + 2, space);
@ -2534,6 +2535,7 @@ fn renderAsmLegacy(
else => { else => {
try ais.writer().writeAll(".@"); try ais.writer().writeAll(".@");
try ais.writer().writeAll(tokenSliceForRender(tree, tok_i)); try ais.writer().writeAll(tokenSliceForRender(tree, tok_i));
try ais.writer().writeAll(" = true");
try renderToken(r, tok_i + 1, .space); try renderToken(r, tok_i + 1, .space);
tok_i += 2; tok_i += 2;
}, },

View file

@ -783,6 +783,5 @@ fn getXCR0() u32 {
\\ xgetbv \\ xgetbv
: [_] "={eax}" (-> u32), : [_] "={eax}" (-> u32),
: :
: "edx", "ecx" : .{ .edx = true, .ecx = true });
);
} }

View file

@ -55,13 +55,11 @@ test "output constraint modifiers" {
asm volatile ("" asm volatile (""
: [_] "=m,r" (a), : [_] "=m,r" (a),
: :
: "" : .{});
);
asm volatile ("" asm volatile (""
: [_] "=r,m" (a), : [_] "=r,m" (a),
: :
: "" : .{});
);
} }
test "alternative constraints" { test "alternative constraints" {
@ -79,7 +77,6 @@ test "alternative constraints" {
asm volatile ("" asm volatile (""
: [_] "=r,m" (a), : [_] "=r,m" (a),
: [_] "r,m" (a), : [_] "r,m" (a),
: ""
); );
} }
@ -96,42 +93,34 @@ test "sized integer/float in asm input" {
asm volatile ("" asm volatile (""
: :
: [_] "m" (@as(usize, 3)), : [_] "m" (@as(usize, 3)),
: ""
); );
asm volatile ("" asm volatile (""
: :
: [_] "m" (@as(i15, -3)), : [_] "m" (@as(i15, -3)),
: ""
); );
asm volatile ("" asm volatile (""
: :
: [_] "m" (@as(u3, 3)), : [_] "m" (@as(u3, 3)),
: ""
); );
asm volatile ("" asm volatile (""
: :
: [_] "m" (@as(i3, 3)), : [_] "m" (@as(i3, 3)),
: ""
); );
asm volatile ("" asm volatile (""
: :
: [_] "m" (@as(u121, 3)), : [_] "m" (@as(u121, 3)),
: ""
); );
asm volatile ("" asm volatile (""
: :
: [_] "m" (@as(i121, 3)), : [_] "m" (@as(i121, 3)),
: ""
); );
asm volatile ("" asm volatile (""
: :
: [_] "m" (@as(f32, 3.17)), : [_] "m" (@as(f32, 3.17)),
: ""
); );
asm volatile ("" asm volatile (""
: :
: [_] "m" (@as(f64, 3.17)), : [_] "m" (@as(f64, 3.17)),
: ""
); );
} }
@ -172,8 +161,7 @@ test "rw constraint (x86_64)" {
asm ("addl %[b], %[a]" asm ("addl %[b], %[a]"
: [a] "+r" (res), : [a] "+r" (res),
: [b] "r" (@as(i32, 13)), : [b] "r" (@as(i32, 13)),
: "flags" : .{ .flags = true });
);
try expectEqual(@as(i32, 18), res); try expectEqual(@as(i32, 18), res);
} }

View file

@ -9,7 +9,7 @@ fn setFs(value: c_ulong) void {
: [number] "{rax}" (158), : [number] "{rax}" (158),
[code] "{rdi}" (0x1002), [code] "{rdi}" (0x1002),
[val] "{rsi}" (value), [val] "{rsi}" (value),
: "rcx", "r11", "memory" : .{ .rcx = true, .r11 = true, .memory = true }
); );
} }
@ -21,7 +21,7 @@ fn getFs() c_ulong {
: [number] "{rax}" (158), : [number] "{rax}" (158),
[code] "{rdi}" (0x1003), [code] "{rdi}" (0x1003),
[ptr] "{rsi}" (@intFromPtr(&result)), [ptr] "{rsi}" (@intFromPtr(&result)),
: "rcx", "r11", "memory" : .{ .rcx = true, .r11 = true, .memory = true }
); );
return result; return result;
} }

View file

@ -31,7 +31,7 @@ noinline fn frame2(expected: *[4]usize, unwound: *[4]usize) void {
\\movl $7, %%edi \\movl $7, %%edi
\\movl $6, %%esi \\movl $6, %%esi
\\movl $5, %%ebp \\movl $5, %%ebp
::: "ebx", "ecx", "edx", "edi", "esi", "ebp"); ::: .{ .ebx = true, .ecx = true, .edx = true, .edi = true, .esi = true, .ebp = true });
} else { } else {
asm volatile ( asm volatile (
\\movl $3, %%ebx \\movl $3, %%ebx
@ -39,7 +39,7 @@ noinline fn frame2(expected: *[4]usize, unwound: *[4]usize) void {
\\movl $2, %%edx \\movl $2, %%edx
\\movl $7, %%edi \\movl $7, %%edi
\\movl $6, %%esi \\movl $6, %%esi
::: "ebx", "ecx", "edx", "edi", "esi"); ::: .{ .ebx = true, .ecx = true, .edx = true, .edi = true, .esi = true });
} }
}, },
.x86_64 => { .x86_64 => {
@ -51,7 +51,7 @@ noinline fn frame2(expected: *[4]usize, unwound: *[4]usize) void {
\\movq $14, %%r14 \\movq $14, %%r14
\\movq $15, %%r15 \\movq $15, %%r15
\\movq $6, %%rbp \\movq $6, %%rbp
::: "rbx", "r12", "r13", "r14", "r15", "rbp"); ::: .{ .rbx = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .rbp = true });
} else { } else {
asm volatile ( asm volatile (
\\movq $3, %%rbx \\movq $3, %%rbx
@ -59,7 +59,7 @@ noinline fn frame2(expected: *[4]usize, unwound: *[4]usize) void {
\\movq $13, %%r13 \\movq $13, %%r13
\\movq $14, %%r14 \\movq $14, %%r14
\\movq $15, %%r15 \\movq $15, %%r15
::: "rbx", "r12", "r13", "r14", "r15"); ::: .{ .rbx = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true });
} }
}, },
else => {}, else => {},

View file

@ -58,8 +58,7 @@ export fn _start() callconv(.c) noreturn {
\\syscall \\syscall
: :
: [missed] "{edi}" (missed), : [missed] "{edi}" (missed),
: "edi", "eax" : .{ .edi = true, .eax = true });
);
while (true) {} // unreached while (true) {} // unreached
} }