mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
zig fmt
This commit is contained in:
parent
87ce83d5a5
commit
76d04c1662
36 changed files with 311 additions and 618 deletions
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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].*);
|
||||||
|
|
|
||||||
|
|
@ -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{
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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 => {
|
||||||
|
|
|
||||||
|
|
@ -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 }),
|
||||||
),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 }),
|
||||||
),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 });
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 (
|
||||||
|
|
|
||||||
|
|
@ -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 });
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 });
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 });
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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"),
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -783,6 +783,5 @@ fn getXCR0() u32 {
|
||||||
\\ xgetbv
|
\\ xgetbv
|
||||||
: [_] "={eax}" (-> u32),
|
: [_] "={eax}" (-> u32),
|
||||||
:
|
:
|
||||||
: "edx", "ecx"
|
: .{ .edx = true, .ecx = true });
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 => {},
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue