@zigc/lib 0.16.0 → 0.17.0-dev.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/c/fcntl.zig +1 -1
- package/c/math.zig +20 -7
- package/compiler/build_runner.zig +0 -2
- package/compiler/test_runner.zig +1 -1
- package/compiler_rt/divmodei4.zig +40 -17
- package/compiler_rt/exp.zig +1 -4
- package/compiler_rt/exp2.zig +1 -4
- package/compiler_rt/exp_f128.zig +377 -0
- package/compiler_rt/limb64.zig +875 -15
- package/compiler_rt/mulXi3.zig +1 -1
- package/compiler_rt/ssp.zig +1 -1
- package/compiler_rt/udivmodei4.zig +28 -0
- package/libc/musl/arch/mipsn32/syscall_arch.h +35 -32
- package/package.json +1 -1
- package/std/Build/Step/Compile.zig +0 -1
- package/std/Build.zig +0 -3
- package/std/Io/Threaded.zig +8 -8
- package/std/Io/Writer.zig +46 -42
- package/std/os/emscripten.zig +1 -1
- package/std/os/linux/aarch64.zig +41 -12
- package/std/os/linux/arc.zig +173 -0
- package/std/os/linux/arm.zig +41 -12
- package/std/os/linux/hexagon.zig +33 -11
- package/std/os/linux/loongarch32.zig +41 -13
- package/std/os/linux/loongarch64.zig +41 -12
- package/std/os/linux/m68k.zig +41 -13
- package/std/os/linux/mips.zig +67 -36
- package/std/os/linux/mips64.zig +60 -29
- package/std/os/linux/mipsn32.zig +60 -29
- package/std/os/linux/or1k.zig +41 -12
- package/std/os/linux/powerpc.zig +41 -12
- package/std/os/linux/powerpc64.zig +41 -12
- package/std/os/linux/riscv32.zig +41 -12
- package/std/os/linux/riscv64.zig +41 -12
- package/std/os/linux/s390x.zig +44 -7
- package/std/os/linux/sparc64.zig +83 -52
- package/std/os/linux/thumb.zig +52 -36
- package/std/os/linux/x32.zig +41 -12
- package/std/os/linux/x86.zig +42 -13
- package/std/os/linux/x86_64.zig +41 -12
- package/std/os/linux.zig +400 -434
- package/std/zig/AstGen.zig +1 -74
- package/std/zig/AstRlAnnotate.zig +0 -11
- package/std/zig/BuiltinFn.zig +0 -32
- package/std/zig/Zir.zig +50 -63
- package/std/zig.zig +0 -10
- package/libc/mingw/math/fdiml.c +0 -24
- package/libc/musl/src/math/fdimf.c +0 -10
- package/libc/musl/src/math/fdiml.c +0 -18
package/std/os/linux/mips.zig
CHANGED
|
@@ -2,7 +2,11 @@ const builtin = @import("builtin");
|
|
|
2
2
|
const std = @import("../../std.zig");
|
|
3
3
|
const SYS = std.os.linux.SYS;
|
|
4
4
|
|
|
5
|
-
pub
|
|
5
|
+
pub const syscall_arg_t = u32;
|
|
6
|
+
|
|
7
|
+
pub fn syscall0(
|
|
8
|
+
number: SYS,
|
|
9
|
+
) u32 {
|
|
6
10
|
return asm volatile (
|
|
7
11
|
\\ syscall
|
|
8
12
|
\\ beq $a3, $zero, 1f
|
|
@@ -14,24 +18,10 @@ pub fn syscall0(number: SYS) u32 {
|
|
|
14
18
|
: .{ .r1 = true, .r3 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
15
19
|
}
|
|
16
20
|
|
|
17
|
-
pub fn
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
\\ blez $v0, 2f
|
|
22
|
-
\\ subu $v0, $zero, $v0
|
|
23
|
-
\\ b 2f
|
|
24
|
-
\\1:
|
|
25
|
-
\\ sw $v0, 0($a0)
|
|
26
|
-
\\ sw $v1, 4($a0)
|
|
27
|
-
\\2:
|
|
28
|
-
: [ret] "={$2}" (-> u32),
|
|
29
|
-
: [number] "{$2}" (@intFromEnum(SYS.pipe)),
|
|
30
|
-
[fd] "{$4}" (fd),
|
|
31
|
-
: .{ .r1 = true, .r3 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
pub fn syscall1(number: SYS, arg1: u32) u32 {
|
|
21
|
+
pub fn syscall1(
|
|
22
|
+
number: SYS,
|
|
23
|
+
arg1: syscall_arg_t,
|
|
24
|
+
) u32 {
|
|
35
25
|
return asm volatile (
|
|
36
26
|
\\ syscall
|
|
37
27
|
\\ beq $a3, $zero, 1f
|
|
@@ -44,7 +34,11 @@ pub fn syscall1(number: SYS, arg1: u32) u32 {
|
|
|
44
34
|
: .{ .r1 = true, .r3 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
45
35
|
}
|
|
46
36
|
|
|
47
|
-
pub fn syscall2(
|
|
37
|
+
pub fn syscall2(
|
|
38
|
+
number: SYS,
|
|
39
|
+
arg1: syscall_arg_t,
|
|
40
|
+
arg2: syscall_arg_t,
|
|
41
|
+
) u32 {
|
|
48
42
|
return asm volatile (
|
|
49
43
|
\\ syscall
|
|
50
44
|
\\ beq $a3, $zero, 1f
|
|
@@ -58,7 +52,12 @@ pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 {
|
|
|
58
52
|
: .{ .r1 = true, .r3 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
59
53
|
}
|
|
60
54
|
|
|
61
|
-
pub fn syscall3(
|
|
55
|
+
pub fn syscall3(
|
|
56
|
+
number: SYS,
|
|
57
|
+
arg1: syscall_arg_t,
|
|
58
|
+
arg2: syscall_arg_t,
|
|
59
|
+
arg3: syscall_arg_t,
|
|
60
|
+
) u32 {
|
|
62
61
|
return asm volatile (
|
|
63
62
|
\\ syscall
|
|
64
63
|
\\ beq $a3, $zero, 1f
|
|
@@ -73,7 +72,13 @@ pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 {
|
|
|
73
72
|
: .{ .r1 = true, .r3 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
74
73
|
}
|
|
75
74
|
|
|
76
|
-
pub fn syscall4(
|
|
75
|
+
pub fn syscall4(
|
|
76
|
+
number: SYS,
|
|
77
|
+
arg1: syscall_arg_t,
|
|
78
|
+
arg2: syscall_arg_t,
|
|
79
|
+
arg3: syscall_arg_t,
|
|
80
|
+
arg4: syscall_arg_t,
|
|
81
|
+
) u32 {
|
|
77
82
|
return asm volatile (
|
|
78
83
|
\\ syscall
|
|
79
84
|
\\ beq $a3, $zero, 1f
|
|
@@ -92,7 +97,14 @@ pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 {
|
|
|
92
97
|
// NOTE: The o32 calling convention requires the callee to reserve 16 bytes for
|
|
93
98
|
// the first four arguments even though they're passed in $a0-$a3.
|
|
94
99
|
|
|
95
|
-
pub fn syscall5(
|
|
100
|
+
pub fn syscall5(
|
|
101
|
+
number: SYS,
|
|
102
|
+
arg1: syscall_arg_t,
|
|
103
|
+
arg2: syscall_arg_t,
|
|
104
|
+
arg3: syscall_arg_t,
|
|
105
|
+
arg4: syscall_arg_t,
|
|
106
|
+
arg5: syscall_arg_t,
|
|
107
|
+
) u32 {
|
|
96
108
|
return asm volatile (
|
|
97
109
|
\\ subu $sp, $sp, 24
|
|
98
110
|
\\ sw %[arg5], 16($sp)
|
|
@@ -114,12 +126,12 @@ pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u
|
|
|
114
126
|
|
|
115
127
|
pub fn syscall6(
|
|
116
128
|
number: SYS,
|
|
117
|
-
arg1:
|
|
118
|
-
arg2:
|
|
119
|
-
arg3:
|
|
120
|
-
arg4:
|
|
121
|
-
arg5:
|
|
122
|
-
arg6:
|
|
129
|
+
arg1: syscall_arg_t,
|
|
130
|
+
arg2: syscall_arg_t,
|
|
131
|
+
arg3: syscall_arg_t,
|
|
132
|
+
arg4: syscall_arg_t,
|
|
133
|
+
arg5: syscall_arg_t,
|
|
134
|
+
arg6: syscall_arg_t,
|
|
123
135
|
) u32 {
|
|
124
136
|
return asm volatile (
|
|
125
137
|
\\ subu $sp, $sp, 24
|
|
@@ -144,13 +156,13 @@ pub fn syscall6(
|
|
|
144
156
|
|
|
145
157
|
pub fn syscall7(
|
|
146
158
|
number: SYS,
|
|
147
|
-
arg1:
|
|
148
|
-
arg2:
|
|
149
|
-
arg3:
|
|
150
|
-
arg4:
|
|
151
|
-
arg5:
|
|
152
|
-
arg6:
|
|
153
|
-
arg7:
|
|
159
|
+
arg1: syscall_arg_t,
|
|
160
|
+
arg2: syscall_arg_t,
|
|
161
|
+
arg3: syscall_arg_t,
|
|
162
|
+
arg4: syscall_arg_t,
|
|
163
|
+
arg5: syscall_arg_t,
|
|
164
|
+
arg6: syscall_arg_t,
|
|
165
|
+
arg7: syscall_arg_t,
|
|
154
166
|
) u32 {
|
|
155
167
|
return asm volatile (
|
|
156
168
|
\\ subu $sp, $sp, 32
|
|
@@ -175,6 +187,25 @@ pub fn syscall7(
|
|
|
175
187
|
: .{ .r1 = true, .r3 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
176
188
|
}
|
|
177
189
|
|
|
190
|
+
pub fn syscall_pipe(
|
|
191
|
+
fd: *[2]std.os.linux.fd_t,
|
|
192
|
+
) u32 {
|
|
193
|
+
return asm volatile (
|
|
194
|
+
\\ syscall
|
|
195
|
+
\\ beq $a3, $zero, 1f
|
|
196
|
+
\\ blez $v0, 2f
|
|
197
|
+
\\ subu $v0, $zero, $v0
|
|
198
|
+
\\ b 2f
|
|
199
|
+
\\1:
|
|
200
|
+
\\ sw $v0, 0($a0)
|
|
201
|
+
\\ sw $v1, 4($a0)
|
|
202
|
+
\\2:
|
|
203
|
+
: [ret] "={$2}" (-> u32),
|
|
204
|
+
: [number] "{$2}" (@intFromEnum(SYS.pipe)),
|
|
205
|
+
[fd] "{$4}" (fd),
|
|
206
|
+
: .{ .r1 = true, .r3 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
207
|
+
}
|
|
208
|
+
|
|
178
209
|
pub fn clone() callconv(.naked) u32 {
|
|
179
210
|
// __clone(func, stack, flags, arg, ptid, tls, ctid)
|
|
180
211
|
// a0, a1, a2, a3, +0, +4, +8
|
package/std/os/linux/mips64.zig
CHANGED
|
@@ -2,7 +2,11 @@ const builtin = @import("builtin");
|
|
|
2
2
|
const std = @import("../../std.zig");
|
|
3
3
|
const SYS = std.os.linux.SYS;
|
|
4
4
|
|
|
5
|
-
pub
|
|
5
|
+
pub const syscall_arg_t = u64;
|
|
6
|
+
|
|
7
|
+
pub fn syscall0(
|
|
8
|
+
number: SYS,
|
|
9
|
+
) u64 {
|
|
6
10
|
return asm volatile (
|
|
7
11
|
\\ syscall
|
|
8
12
|
\\ beq $a3, $zero, 1f
|
|
@@ -14,24 +18,10 @@ pub fn syscall0(number: SYS) u64 {
|
|
|
14
18
|
: .{ .r1 = true, .r3 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
15
19
|
}
|
|
16
20
|
|
|
17
|
-
pub fn
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
\\ blez $v0, 2f
|
|
22
|
-
\\ dsubu $v0, $zero, $v0
|
|
23
|
-
\\ b 2f
|
|
24
|
-
\\1:
|
|
25
|
-
\\ sw $v0, 0($a0)
|
|
26
|
-
\\ sw $v1, 4($a0)
|
|
27
|
-
\\2:
|
|
28
|
-
: [ret] "={$2}" (-> u64),
|
|
29
|
-
: [number] "{$2}" (@intFromEnum(SYS.pipe)),
|
|
30
|
-
[fd] "{$4}" (fd),
|
|
31
|
-
: .{ .r1 = true, .r3 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
pub fn syscall1(number: SYS, arg1: u64) u64 {
|
|
21
|
+
pub fn syscall1(
|
|
22
|
+
number: SYS,
|
|
23
|
+
arg1: syscall_arg_t,
|
|
24
|
+
) u64 {
|
|
35
25
|
return asm volatile (
|
|
36
26
|
\\ syscall
|
|
37
27
|
\\ beq $a3, $zero, 1f
|
|
@@ -44,7 +34,11 @@ pub fn syscall1(number: SYS, arg1: u64) u64 {
|
|
|
44
34
|
: .{ .r1 = true, .r3 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
45
35
|
}
|
|
46
36
|
|
|
47
|
-
pub fn syscall2(
|
|
37
|
+
pub fn syscall2(
|
|
38
|
+
number: SYS,
|
|
39
|
+
arg1: syscall_arg_t,
|
|
40
|
+
arg2: syscall_arg_t,
|
|
41
|
+
) u64 {
|
|
48
42
|
return asm volatile (
|
|
49
43
|
\\ syscall
|
|
50
44
|
\\ beq $a3, $zero, 1f
|
|
@@ -58,7 +52,12 @@ pub fn syscall2(number: SYS, arg1: u64, arg2: u64) u64 {
|
|
|
58
52
|
: .{ .r1 = true, .r3 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
59
53
|
}
|
|
60
54
|
|
|
61
|
-
pub fn syscall3(
|
|
55
|
+
pub fn syscall3(
|
|
56
|
+
number: SYS,
|
|
57
|
+
arg1: syscall_arg_t,
|
|
58
|
+
arg2: syscall_arg_t,
|
|
59
|
+
arg3: syscall_arg_t,
|
|
60
|
+
) u64 {
|
|
62
61
|
return asm volatile (
|
|
63
62
|
\\ syscall
|
|
64
63
|
\\ beq $a3, $zero, 1f
|
|
@@ -73,7 +72,13 @@ pub fn syscall3(number: SYS, arg1: u64, arg2: u64, arg3: u64) u64 {
|
|
|
73
72
|
: .{ .r1 = true, .r3 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
74
73
|
}
|
|
75
74
|
|
|
76
|
-
pub fn syscall4(
|
|
75
|
+
pub fn syscall4(
|
|
76
|
+
number: SYS,
|
|
77
|
+
arg1: syscall_arg_t,
|
|
78
|
+
arg2: syscall_arg_t,
|
|
79
|
+
arg3: syscall_arg_t,
|
|
80
|
+
arg4: syscall_arg_t,
|
|
81
|
+
) u64 {
|
|
77
82
|
return asm volatile (
|
|
78
83
|
\\ syscall
|
|
79
84
|
\\ beq $a3, $zero, 1f
|
|
@@ -89,7 +94,14 @@ pub fn syscall4(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64) u64 {
|
|
|
89
94
|
: .{ .r1 = true, .r3 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
90
95
|
}
|
|
91
96
|
|
|
92
|
-
pub fn syscall5(
|
|
97
|
+
pub fn syscall5(
|
|
98
|
+
number: SYS,
|
|
99
|
+
arg1: syscall_arg_t,
|
|
100
|
+
arg2: syscall_arg_t,
|
|
101
|
+
arg3: syscall_arg_t,
|
|
102
|
+
arg4: syscall_arg_t,
|
|
103
|
+
arg5: syscall_arg_t,
|
|
104
|
+
) u64 {
|
|
93
105
|
return asm volatile (
|
|
94
106
|
\\ syscall
|
|
95
107
|
\\ beq $a3, $zero, 1f
|
|
@@ -108,12 +120,12 @@ pub fn syscall5(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u
|
|
|
108
120
|
|
|
109
121
|
pub fn syscall6(
|
|
110
122
|
number: SYS,
|
|
111
|
-
arg1:
|
|
112
|
-
arg2:
|
|
113
|
-
arg3:
|
|
114
|
-
arg4:
|
|
115
|
-
arg5:
|
|
116
|
-
arg6:
|
|
123
|
+
arg1: syscall_arg_t,
|
|
124
|
+
arg2: syscall_arg_t,
|
|
125
|
+
arg3: syscall_arg_t,
|
|
126
|
+
arg4: syscall_arg_t,
|
|
127
|
+
arg5: syscall_arg_t,
|
|
128
|
+
arg6: syscall_arg_t,
|
|
117
129
|
) u64 {
|
|
118
130
|
return asm volatile (
|
|
119
131
|
\\ syscall
|
|
@@ -132,6 +144,25 @@ pub fn syscall6(
|
|
|
132
144
|
: .{ .r1 = true, .r3 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
133
145
|
}
|
|
134
146
|
|
|
147
|
+
pub fn syscall_pipe(
|
|
148
|
+
fd: *[2]std.os.linux.fd_t,
|
|
149
|
+
) u64 {
|
|
150
|
+
return asm volatile (
|
|
151
|
+
\\ syscall
|
|
152
|
+
\\ beq $a3, $zero, 1f
|
|
153
|
+
\\ blez $v0, 2f
|
|
154
|
+
\\ dsubu $v0, $zero, $v0
|
|
155
|
+
\\ b 2f
|
|
156
|
+
\\1:
|
|
157
|
+
\\ sw $v0, 0($a0)
|
|
158
|
+
\\ sw $v1, 4($a0)
|
|
159
|
+
\\2:
|
|
160
|
+
: [ret] "={$2}" (-> u64),
|
|
161
|
+
: [number] "{$2}" (@intFromEnum(SYS.pipe)),
|
|
162
|
+
[fd] "{$4}" (fd),
|
|
163
|
+
: .{ .r1 = true, .r3 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
164
|
+
}
|
|
165
|
+
|
|
135
166
|
pub fn clone() callconv(.naked) u64 {
|
|
136
167
|
// __clone(func, stack, flags, arg, ptid, tls, ctid)
|
|
137
168
|
// a0, a1, a2, a3, a4, a5, a6
|
package/std/os/linux/mipsn32.zig
CHANGED
|
@@ -2,7 +2,11 @@ const builtin = @import("builtin");
|
|
|
2
2
|
const std = @import("../../std.zig");
|
|
3
3
|
const SYS = std.os.linux.SYS;
|
|
4
4
|
|
|
5
|
-
pub
|
|
5
|
+
pub const syscall_arg_t = u64;
|
|
6
|
+
|
|
7
|
+
pub fn syscall0(
|
|
8
|
+
number: SYS,
|
|
9
|
+
) u32 {
|
|
6
10
|
return asm volatile (
|
|
7
11
|
\\ syscall
|
|
8
12
|
\\ beq $a3, $zero, 1f
|
|
@@ -14,24 +18,10 @@ pub fn syscall0(number: SYS) u32 {
|
|
|
14
18
|
: .{ .r1 = true, .r3 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
15
19
|
}
|
|
16
20
|
|
|
17
|
-
pub fn
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
\\ blez $v0, 2f
|
|
22
|
-
\\ subu $v0, $zero, $v0
|
|
23
|
-
\\ b 2f
|
|
24
|
-
\\1:
|
|
25
|
-
\\ sw $v0, 0($a0)
|
|
26
|
-
\\ sw $v1, 4($a0)
|
|
27
|
-
\\2:
|
|
28
|
-
: [ret] "={$2}" (-> u32),
|
|
29
|
-
: [number] "{$2}" (@intFromEnum(SYS.pipe)),
|
|
30
|
-
[fd] "{$4}" (fd),
|
|
31
|
-
: .{ .r1 = true, .r3 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
pub fn syscall1(number: SYS, arg1: u32) u32 {
|
|
21
|
+
pub fn syscall1(
|
|
22
|
+
number: SYS,
|
|
23
|
+
arg1: syscall_arg_t,
|
|
24
|
+
) u32 {
|
|
35
25
|
return asm volatile (
|
|
36
26
|
\\ syscall
|
|
37
27
|
\\ beq $a3, $zero, 1f
|
|
@@ -44,7 +34,11 @@ pub fn syscall1(number: SYS, arg1: u32) u32 {
|
|
|
44
34
|
: .{ .r1 = true, .r3 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
45
35
|
}
|
|
46
36
|
|
|
47
|
-
pub fn syscall2(
|
|
37
|
+
pub fn syscall2(
|
|
38
|
+
number: SYS,
|
|
39
|
+
arg1: syscall_arg_t,
|
|
40
|
+
arg2: syscall_arg_t,
|
|
41
|
+
) u32 {
|
|
48
42
|
return asm volatile (
|
|
49
43
|
\\ syscall
|
|
50
44
|
\\ beq $a3, $zero, 1f
|
|
@@ -58,7 +52,12 @@ pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 {
|
|
|
58
52
|
: .{ .r1 = true, .r3 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
59
53
|
}
|
|
60
54
|
|
|
61
|
-
pub fn syscall3(
|
|
55
|
+
pub fn syscall3(
|
|
56
|
+
number: SYS,
|
|
57
|
+
arg1: syscall_arg_t,
|
|
58
|
+
arg2: syscall_arg_t,
|
|
59
|
+
arg3: syscall_arg_t,
|
|
60
|
+
) u32 {
|
|
62
61
|
return asm volatile (
|
|
63
62
|
\\ syscall
|
|
64
63
|
\\ beq $a3, $zero, 1f
|
|
@@ -73,7 +72,13 @@ pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 {
|
|
|
73
72
|
: .{ .r1 = true, .r3 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
74
73
|
}
|
|
75
74
|
|
|
76
|
-
pub fn syscall4(
|
|
75
|
+
pub fn syscall4(
|
|
76
|
+
number: SYS,
|
|
77
|
+
arg1: syscall_arg_t,
|
|
78
|
+
arg2: syscall_arg_t,
|
|
79
|
+
arg3: syscall_arg_t,
|
|
80
|
+
arg4: syscall_arg_t,
|
|
81
|
+
) u32 {
|
|
77
82
|
return asm volatile (
|
|
78
83
|
\\ syscall
|
|
79
84
|
\\ beq $a3, $zero, 1f
|
|
@@ -89,7 +94,14 @@ pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 {
|
|
|
89
94
|
: .{ .r1 = true, .r3 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
90
95
|
}
|
|
91
96
|
|
|
92
|
-
pub fn syscall5(
|
|
97
|
+
pub fn syscall5(
|
|
98
|
+
number: SYS,
|
|
99
|
+
arg1: syscall_arg_t,
|
|
100
|
+
arg2: syscall_arg_t,
|
|
101
|
+
arg3: syscall_arg_t,
|
|
102
|
+
arg4: syscall_arg_t,
|
|
103
|
+
arg5: syscall_arg_t,
|
|
104
|
+
) u32 {
|
|
93
105
|
return asm volatile (
|
|
94
106
|
\\ syscall
|
|
95
107
|
\\ beq $a3, $zero, 1f
|
|
@@ -108,12 +120,12 @@ pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u
|
|
|
108
120
|
|
|
109
121
|
pub fn syscall6(
|
|
110
122
|
number: SYS,
|
|
111
|
-
arg1:
|
|
112
|
-
arg2:
|
|
113
|
-
arg3:
|
|
114
|
-
arg4:
|
|
115
|
-
arg5:
|
|
116
|
-
arg6:
|
|
123
|
+
arg1: syscall_arg_t,
|
|
124
|
+
arg2: syscall_arg_t,
|
|
125
|
+
arg3: syscall_arg_t,
|
|
126
|
+
arg4: syscall_arg_t,
|
|
127
|
+
arg5: syscall_arg_t,
|
|
128
|
+
arg6: syscall_arg_t,
|
|
117
129
|
) u32 {
|
|
118
130
|
return asm volatile (
|
|
119
131
|
\\ syscall
|
|
@@ -132,6 +144,25 @@ pub fn syscall6(
|
|
|
132
144
|
: .{ .r1 = true, .r3 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
133
145
|
}
|
|
134
146
|
|
|
147
|
+
pub fn syscall_pipe(
|
|
148
|
+
fd: *[2]std.os.linux.fd_t,
|
|
149
|
+
) u32 {
|
|
150
|
+
return asm volatile (
|
|
151
|
+
\\ syscall
|
|
152
|
+
\\ beq $a3, $zero, 1f
|
|
153
|
+
\\ blez $v0, 2f
|
|
154
|
+
\\ subu $v0, $zero, $v0
|
|
155
|
+
\\ b 2f
|
|
156
|
+
\\1:
|
|
157
|
+
\\ sw $v0, 0($a0)
|
|
158
|
+
\\ sw $v1, 4($a0)
|
|
159
|
+
\\2:
|
|
160
|
+
: [ret] "={$2}" (-> u32),
|
|
161
|
+
: [number] "{$2}" (@intFromEnum(SYS.pipe)),
|
|
162
|
+
[fd] "{$4}" (fd),
|
|
163
|
+
: .{ .r1 = true, .r3 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true });
|
|
164
|
+
}
|
|
165
|
+
|
|
135
166
|
pub fn clone() callconv(.naked) u32 {
|
|
136
167
|
// __clone(func, stack, flags, arg, ptid, tls, ctid)
|
|
137
168
|
// a0, a1, a2, a3, a4, a5, a6
|
package/std/os/linux/or1k.zig
CHANGED
|
@@ -2,7 +2,11 @@ const builtin = @import("builtin");
|
|
|
2
2
|
const std = @import("../../std.zig");
|
|
3
3
|
const SYS = std.os.linux.SYS;
|
|
4
4
|
|
|
5
|
-
pub
|
|
5
|
+
pub const syscall_arg_t = u32;
|
|
6
|
+
|
|
7
|
+
pub fn syscall0(
|
|
8
|
+
number: SYS,
|
|
9
|
+
) u32 {
|
|
6
10
|
return asm volatile (
|
|
7
11
|
\\ l.sys 1
|
|
8
12
|
: [ret] "={r11}" (-> u32),
|
|
@@ -10,7 +14,10 @@ pub fn syscall0(number: SYS) u32 {
|
|
|
10
14
|
: .{ .r3 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r12 = true, .r13 = true, .r15 = true, .r17 = true, .r19 = true, .r21 = true, .r23 = true, .r25 = true, .r27 = true, .r29 = true, .r31 = true, .memory = true });
|
|
11
15
|
}
|
|
12
16
|
|
|
13
|
-
pub fn syscall1(
|
|
17
|
+
pub fn syscall1(
|
|
18
|
+
number: SYS,
|
|
19
|
+
arg1: syscall_arg_t,
|
|
20
|
+
) u32 {
|
|
14
21
|
return asm volatile (
|
|
15
22
|
\\ l.sys 1
|
|
16
23
|
: [ret] "={r11}" (-> u32),
|
|
@@ -19,7 +26,11 @@ pub fn syscall1(number: SYS, arg1: u32) u32 {
|
|
|
19
26
|
: .{ .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r12 = true, .r13 = true, .r15 = true, .r17 = true, .r19 = true, .r21 = true, .r23 = true, .r25 = true, .r27 = true, .r29 = true, .r31 = true, .memory = true });
|
|
20
27
|
}
|
|
21
28
|
|
|
22
|
-
pub fn syscall2(
|
|
29
|
+
pub fn syscall2(
|
|
30
|
+
number: SYS,
|
|
31
|
+
arg1: syscall_arg_t,
|
|
32
|
+
arg2: syscall_arg_t,
|
|
33
|
+
) u32 {
|
|
23
34
|
return asm volatile (
|
|
24
35
|
\\ l.sys 1
|
|
25
36
|
: [ret] "={r11}" (-> u32),
|
|
@@ -29,7 +40,12 @@ pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 {
|
|
|
29
40
|
: .{ .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r12 = true, .r13 = true, .r15 = true, .r17 = true, .r19 = true, .r21 = true, .r23 = true, .r25 = true, .r27 = true, .r29 = true, .r31 = true, .memory = true });
|
|
30
41
|
}
|
|
31
42
|
|
|
32
|
-
pub fn syscall3(
|
|
43
|
+
pub fn syscall3(
|
|
44
|
+
number: SYS,
|
|
45
|
+
arg1: syscall_arg_t,
|
|
46
|
+
arg2: syscall_arg_t,
|
|
47
|
+
arg3: syscall_arg_t,
|
|
48
|
+
) u32 {
|
|
33
49
|
return asm volatile (
|
|
34
50
|
\\ l.sys 1
|
|
35
51
|
: [ret] "={r11}" (-> u32),
|
|
@@ -40,7 +56,13 @@ pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 {
|
|
|
40
56
|
: .{ .r6 = true, .r7 = true, .r8 = true, .r12 = true, .r13 = true, .r15 = true, .r17 = true, .r19 = true, .r21 = true, .r23 = true, .r25 = true, .r27 = true, .r29 = true, .r31 = true, .memory = true });
|
|
41
57
|
}
|
|
42
58
|
|
|
43
|
-
pub fn syscall4(
|
|
59
|
+
pub fn syscall4(
|
|
60
|
+
number: SYS,
|
|
61
|
+
arg1: syscall_arg_t,
|
|
62
|
+
arg2: syscall_arg_t,
|
|
63
|
+
arg3: syscall_arg_t,
|
|
64
|
+
arg4: syscall_arg_t,
|
|
65
|
+
) u32 {
|
|
44
66
|
return asm volatile (
|
|
45
67
|
\\ l.sys 1
|
|
46
68
|
: [ret] "={r11}" (-> u32),
|
|
@@ -52,7 +74,14 @@ pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 {
|
|
|
52
74
|
: .{ .r7 = true, .r8 = true, .r12 = true, .r13 = true, .r15 = true, .r17 = true, .r19 = true, .r21 = true, .r23 = true, .r25 = true, .r27 = true, .r29 = true, .r31 = true, .memory = true });
|
|
53
75
|
}
|
|
54
76
|
|
|
55
|
-
pub fn syscall5(
|
|
77
|
+
pub fn syscall5(
|
|
78
|
+
number: SYS,
|
|
79
|
+
arg1: syscall_arg_t,
|
|
80
|
+
arg2: syscall_arg_t,
|
|
81
|
+
arg3: syscall_arg_t,
|
|
82
|
+
arg4: syscall_arg_t,
|
|
83
|
+
arg5: syscall_arg_t,
|
|
84
|
+
) u32 {
|
|
56
85
|
return asm volatile (
|
|
57
86
|
\\ l.sys 1
|
|
58
87
|
: [ret] "={r11}" (-> u32),
|
|
@@ -67,12 +96,12 @@ pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u
|
|
|
67
96
|
|
|
68
97
|
pub fn syscall6(
|
|
69
98
|
number: SYS,
|
|
70
|
-
arg1:
|
|
71
|
-
arg2:
|
|
72
|
-
arg3:
|
|
73
|
-
arg4:
|
|
74
|
-
arg5:
|
|
75
|
-
arg6:
|
|
99
|
+
arg1: syscall_arg_t,
|
|
100
|
+
arg2: syscall_arg_t,
|
|
101
|
+
arg3: syscall_arg_t,
|
|
102
|
+
arg4: syscall_arg_t,
|
|
103
|
+
arg5: syscall_arg_t,
|
|
104
|
+
arg6: syscall_arg_t,
|
|
76
105
|
) u32 {
|
|
77
106
|
return asm volatile (
|
|
78
107
|
\\ l.sys 1
|
package/std/os/linux/powerpc.zig
CHANGED
|
@@ -2,7 +2,11 @@ const builtin = @import("builtin");
|
|
|
2
2
|
const std = @import("../../std.zig");
|
|
3
3
|
const SYS = std.os.linux.SYS;
|
|
4
4
|
|
|
5
|
-
pub
|
|
5
|
+
pub const syscall_arg_t = u32;
|
|
6
|
+
|
|
7
|
+
pub fn syscall0(
|
|
8
|
+
number: SYS,
|
|
9
|
+
) u32 {
|
|
6
10
|
// r0 is both an input register and a clobber. musl and glibc achieve this with
|
|
7
11
|
// a "+" constraint, which isn't supported in Zig, so instead we separately list
|
|
8
12
|
// r0 as both an input and an output. (Listing it as an input and a clobber would
|
|
@@ -19,7 +23,10 @@ pub fn syscall0(number: SYS) u32 {
|
|
|
19
23
|
: .{ .memory = true, .cr0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
|
|
20
24
|
}
|
|
21
25
|
|
|
22
|
-
pub fn syscall1(
|
|
26
|
+
pub fn syscall1(
|
|
27
|
+
number: SYS,
|
|
28
|
+
arg1: syscall_arg_t,
|
|
29
|
+
) u32 {
|
|
23
30
|
// r0 is both an input and a clobber.
|
|
24
31
|
var r0_out: u32 = undefined;
|
|
25
32
|
return asm volatile (
|
|
@@ -34,7 +41,11 @@ pub fn syscall1(number: SYS, arg1: u32) u32 {
|
|
|
34
41
|
: .{ .memory = true, .cr0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
|
|
35
42
|
}
|
|
36
43
|
|
|
37
|
-
pub fn syscall2(
|
|
44
|
+
pub fn syscall2(
|
|
45
|
+
number: SYS,
|
|
46
|
+
arg1: syscall_arg_t,
|
|
47
|
+
arg2: syscall_arg_t,
|
|
48
|
+
) u32 {
|
|
38
49
|
// These registers are both inputs and clobbers.
|
|
39
50
|
var r0_out: u32 = undefined;
|
|
40
51
|
var r4_out: u32 = undefined;
|
|
@@ -52,7 +63,12 @@ pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 {
|
|
|
52
63
|
: .{ .memory = true, .cr0 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
|
|
53
64
|
}
|
|
54
65
|
|
|
55
|
-
pub fn syscall3(
|
|
66
|
+
pub fn syscall3(
|
|
67
|
+
number: SYS,
|
|
68
|
+
arg1: syscall_arg_t,
|
|
69
|
+
arg2: syscall_arg_t,
|
|
70
|
+
arg3: syscall_arg_t,
|
|
71
|
+
) u32 {
|
|
56
72
|
// These registers are both inputs and clobbers.
|
|
57
73
|
var r0_out: u32 = undefined;
|
|
58
74
|
var r4_out: u32 = undefined;
|
|
@@ -73,7 +89,13 @@ pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 {
|
|
|
73
89
|
: .{ .memory = true, .cr0 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
|
|
74
90
|
}
|
|
75
91
|
|
|
76
|
-
pub fn syscall4(
|
|
92
|
+
pub fn syscall4(
|
|
93
|
+
number: SYS,
|
|
94
|
+
arg1: syscall_arg_t,
|
|
95
|
+
arg2: syscall_arg_t,
|
|
96
|
+
arg3: syscall_arg_t,
|
|
97
|
+
arg4: syscall_arg_t,
|
|
98
|
+
) u32 {
|
|
77
99
|
// These registers are both inputs and clobbers.
|
|
78
100
|
var r0_out: u32 = undefined;
|
|
79
101
|
var r4_out: u32 = undefined;
|
|
@@ -97,7 +119,14 @@ pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 {
|
|
|
97
119
|
: .{ .memory = true, .cr0 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
|
|
98
120
|
}
|
|
99
121
|
|
|
100
|
-
pub fn syscall5(
|
|
122
|
+
pub fn syscall5(
|
|
123
|
+
number: SYS,
|
|
124
|
+
arg1: syscall_arg_t,
|
|
125
|
+
arg2: syscall_arg_t,
|
|
126
|
+
arg3: syscall_arg_t,
|
|
127
|
+
arg4: syscall_arg_t,
|
|
128
|
+
arg5: syscall_arg_t,
|
|
129
|
+
) u32 {
|
|
101
130
|
// These registers are both inputs and clobbers.
|
|
102
131
|
var r0_out: u32 = undefined;
|
|
103
132
|
var r4_out: u32 = undefined;
|
|
@@ -126,12 +155,12 @@ pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u
|
|
|
126
155
|
|
|
127
156
|
pub fn syscall6(
|
|
128
157
|
number: SYS,
|
|
129
|
-
arg1:
|
|
130
|
-
arg2:
|
|
131
|
-
arg3:
|
|
132
|
-
arg4:
|
|
133
|
-
arg5:
|
|
134
|
-
arg6:
|
|
158
|
+
arg1: syscall_arg_t,
|
|
159
|
+
arg2: syscall_arg_t,
|
|
160
|
+
arg3: syscall_arg_t,
|
|
161
|
+
arg4: syscall_arg_t,
|
|
162
|
+
arg5: syscall_arg_t,
|
|
163
|
+
arg6: syscall_arg_t,
|
|
135
164
|
) u32 {
|
|
136
165
|
// These registers are both inputs and clobbers.
|
|
137
166
|
var r0_out: u32 = undefined;
|