@zigc/lib 0.16.0 → 0.17.0-dev.135
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 +6 -1
- package/c/inttypes.zig +0 -10
- package/c/math.zig +46 -122
- package/c/pthread.zig +57 -0
- package/c/search.zig +1 -27
- package/c/stdlib/drand48.zig +0 -57
- package/c/stdlib.zig +0 -100
- package/c/string.zig +20 -7
- package/c/strings.zig +0 -38
- package/c/unistd.zig +27 -26
- package/c/wchar.zig +10 -0
- package/c.zig +2 -2
- package/compiler/aro/aro/CodeGen.zig +5 -6
- package/compiler/aro/aro/Compilation.zig +17 -14
- package/compiler/aro/aro/Driver.zig +14 -13
- package/compiler/aro/aro/Parser.zig +20 -15
- package/compiler/aro/aro/Pragma.zig +3 -2
- package/compiler/aro/aro/Preprocessor.zig +9 -6
- package/compiler/aro/aro/pragmas/message.zig +3 -2
- package/compiler/aro/aro/text_literal.zig +3 -2
- package/compiler/aro/assembly_backend/x86_64.zig +4 -4
- package/compiler/build_runner.zig +0 -2
- package/compiler/reduce/Walk.zig +7 -7
- package/compiler/test_runner.zig +2 -2
- package/compiler/translate-c/Translator.zig +6 -2
- package/compiler/translate-c/main.zig +1 -1
- package/compiler_rt/cos.zig +0 -2
- package/compiler_rt/divmodei4.zig +40 -17
- package/compiler_rt/exp.zig +1 -6
- package/compiler_rt/exp2.zig +1 -6
- package/compiler_rt/exp_f128.zig +377 -0
- package/compiler_rt/fabs.zig +0 -2
- package/compiler_rt/fma.zig +0 -2
- package/compiler_rt/fmax.zig +0 -2
- package/compiler_rt/fmin.zig +0 -2
- package/compiler_rt/fmod.zig +0 -2
- package/compiler_rt/limb64.zig +876 -15
- package/compiler_rt/log.zig +0 -2
- package/compiler_rt/log10.zig +0 -2
- package/compiler_rt/log2.zig +0 -2
- package/compiler_rt/mulXi3.zig +1 -1
- package/compiler_rt/round.zig +0 -2
- package/compiler_rt/sin.zig +0 -2
- package/compiler_rt/sincos.zig +0 -2
- package/compiler_rt/sqrt.zig +0 -2
- package/compiler_rt/ssp.zig +1 -1
- package/compiler_rt/tan.zig +0 -2
- package/compiler_rt/trunc.zig +0 -2
- package/compiler_rt/udivmodei4.zig +28 -0
- package/fuzzer.zig +2 -0
- package/libc/include/aarch64-linux-any/asm/hwcap.h +1 -0
- package/libc/include/aarch64-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/any-linux-any/asm-generic/errno.h +2 -0
- package/libc/include/any-linux-any/asm-generic/unistd.h +4 -1
- package/libc/include/any-linux-any/drm/amdgpu_drm.h +20 -6
- package/libc/include/any-linux-any/drm/amdxdna_accel.h +8 -0
- package/libc/include/any-linux-any/drm/drm_fourcc.h +6 -6
- package/libc/include/any-linux-any/drm/panfrost_drm.h +75 -1
- package/libc/include/any-linux-any/drm/panthor_drm.h +154 -3
- package/libc/include/any-linux-any/drm/rocket_accel.h +74 -24
- package/libc/include/any-linux-any/drm/xe_drm.h +89 -6
- package/libc/include/any-linux-any/linux/android/binder.h +1 -1
- package/libc/include/any-linux-any/linux/bpf.h +28 -0
- package/libc/include/any-linux-any/linux/btrfs.h +1 -0
- package/libc/include/any-linux-any/linux/btrfs_tree.h +32 -2
- package/libc/include/any-linux-any/linux/dma-buf.h +1 -0
- package/libc/include/any-linux-any/linux/dpll.h +1 -0
- package/libc/include/any-linux-any/linux/elf.h +2 -0
- package/libc/include/any-linux-any/linux/ethtool.h +21 -5
- package/libc/include/any-linux-any/linux/fs.h +1 -0
- package/libc/include/any-linux-any/linux/hyperv.h +1 -1
- package/libc/include/any-linux-any/linux/idxd.h +134 -134
- package/libc/include/any-linux-any/linux/if_alg.h +1 -1
- package/libc/include/any-linux-any/linux/if_link.h +1 -0
- package/libc/include/any-linux-any/linux/input-event-codes.h +4 -0
- package/libc/include/any-linux-any/linux/io_uring/bpf_filter.h +68 -0
- package/libc/include/any-linux-any/linux/io_uring/query.h +5 -1
- package/libc/include/any-linux-any/linux/io_uring.h +33 -2
- package/libc/include/any-linux-any/linux/iommufd.h +39 -0
- package/libc/include/any-linux-any/linux/kfd_ioctl.h +13 -3
- package/libc/include/any-linux-any/linux/kfd_sysfs.h +2 -1
- package/libc/include/any-linux-any/linux/kvm.h +30 -6
- package/libc/include/any-linux-any/linux/landlock.h +22 -8
- package/libc/include/any-linux-any/linux/magic.h +1 -0
- package/libc/include/any-linux-any/linux/mempolicy.h +3 -0
- package/libc/include/any-linux-any/linux/mount.h +11 -2
- package/libc/include/any-linux-any/linux/mptcp_pm.h +1 -1
- package/libc/include/any-linux-any/linux/mshv.h +2 -0
- package/libc/include/any-linux-any/linux/netfilter_bridge.h +5 -4
- package/libc/include/any-linux-any/linux/netfilter_ipv4.h +4 -5
- package/libc/include/any-linux-any/linux/netfilter_ipv6.h +3 -4
- package/libc/include/any-linux-any/linux/nfs.h +1 -1
- package/libc/include/any-linux-any/linux/nfsd_netlink.h +1 -0
- package/libc/include/any-linux-any/linux/nilfs2_api.h +2 -2
- package/libc/include/any-linux-any/linux/nilfs2_ondisk.h +97 -66
- package/libc/include/any-linux-any/linux/nl80211.h +104 -3
- package/libc/include/any-linux-any/linux/pci.h +7 -0
- package/libc/include/any-linux-any/linux/pci_regs.h +65 -6
- package/libc/include/any-linux-any/linux/pcitest.h +1 -0
- package/libc/include/any-linux-any/linux/perf_event.h +24 -3
- package/libc/include/any-linux-any/linux/pkt_sched.h +1 -0
- package/libc/include/any-linux-any/linux/prctl.h +30 -0
- package/libc/include/any-linux-any/linux/rseq.h +62 -5
- package/libc/include/any-linux-any/linux/shm.h +0 -1
- package/libc/include/any-linux-any/linux/stddef.h +4 -0
- package/libc/include/any-linux-any/linux/sysctl.h +1 -2
- package/libc/include/any-linux-any/linux/taskstats.h +12 -1
- package/libc/include/any-linux-any/linux/tcp.h +23 -3
- package/libc/include/any-linux-any/linux/typelimits.h +8 -0
- package/libc/include/any-linux-any/linux/ublk_cmd.h +120 -1
- package/libc/include/any-linux-any/linux/v4l2-controls.h +63 -0
- package/libc/include/any-linux-any/linux/vbox_vmmdev_types.h +2 -2
- package/libc/include/any-linux-any/linux/vduse.h +80 -5
- package/libc/include/any-linux-any/linux/version.h +3 -3
- package/libc/include/any-linux-any/linux/vfio.h +4 -0
- package/libc/include/any-linux-any/linux/videodev2.h +3 -0
- package/libc/include/any-linux-any/linux/virtio_ring.h +1 -2
- package/libc/include/any-linux-any/linux/vmclock-abi.h +20 -0
- package/libc/include/any-linux-any/rdma/bnxt_re-abi.h +16 -0
- package/libc/include/any-linux-any/rdma/ib_user_ioctl_cmds.h +16 -0
- package/libc/include/any-linux-any/rdma/mana-abi.h +3 -0
- package/libc/include/any-linux-any/scsi/scsi_bsg_ufs.h +8 -9
- package/libc/include/any-linux-any/sound/sof/tokens.h +6 -0
- package/libc/include/arc-linux-any/asm/swab.h +0 -63
- package/libc/include/arc-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/arm-linux-any/asm/ptrace.h +0 -9
- package/libc/include/arm-linux-any/asm/unistd-eabi.h +1 -0
- package/libc/include/arm-linux-any/asm/unistd-oabi.h +1 -0
- package/libc/include/csky-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/hexagon-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/loongarch-linux-any/asm/hwcap.h +1 -0
- package/libc/include/loongarch-linux-any/asm/kvm.h +1 -0
- package/libc/include/loongarch-linux-any/asm/kvm_para.h +1 -0
- package/libc/include/loongarch-linux-any/asm/unistd_32.h +2 -0
- package/libc/include/loongarch-linux-any/asm/unistd_64.h +2 -0
- package/libc/include/m68k-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/mips-linux-any/asm/errno.h +2 -0
- package/libc/include/mips-linux-any/asm/unistd_n32.h +1 -0
- package/libc/include/mips-linux-any/asm/unistd_n64.h +1 -0
- package/libc/include/mips-linux-any/asm/unistd_o32.h +1 -0
- package/libc/include/powerpc-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/powerpc-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/riscv-linux-any/asm/hwprobe.h +4 -0
- package/libc/include/riscv-linux-any/asm/kvm.h +3 -0
- package/libc/include/riscv-linux-any/asm/ptrace.h +37 -0
- package/libc/include/riscv-linux-any/asm/sigcontext.h +1 -0
- package/libc/include/riscv-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/riscv-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/s390x-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/sparc-linux-any/asm/errno.h +2 -0
- package/libc/include/sparc-linux-any/asm/ioctls.h +4 -4
- package/libc/include/sparc-linux-any/asm/unistd_32.h +2 -0
- package/libc/include/sparc-linux-any/asm/unistd_64.h +2 -0
- package/libc/include/x86-linux-any/asm/auxvec.h +0 -4
- package/libc/include/x86-linux-any/asm/kvm.h +13 -8
- package/libc/include/x86-linux-any/asm/svm.h +16 -16
- package/libc/include/x86-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/x86-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/x86-linux-any/asm/unistd_x32.h +1 -0
- package/libc/include/xtensa-linux-any/asm/unistd_32.h +1 -0
- package/libc/musl/arch/mipsn32/syscall_arch.h +35 -32
- package/package.json +1 -1
- package/std/Build/Cache.zig +6 -6
- package/std/Build/Step/Compile.zig +0 -1
- package/std/Build/Step/Run.zig +2 -2
- package/std/Build/Step.zig +2 -4
- package/std/Build/WebServer.zig +2 -2
- package/std/Build.zig +0 -3
- package/std/Io/Dir.zig +7 -2
- package/std/Io/Dispatch.zig +3 -13
- package/std/Io/File/Writer.zig +8 -6
- package/std/Io/Reader.zig +8 -9
- package/std/Io/Semaphore.zig +112 -17
- package/std/Io/Terminal.zig +1 -1
- package/std/Io/Threaded.zig +171 -37
- package/std/Io/Uring.zig +13 -15
- package/std/Io/Writer.zig +46 -42
- package/std/Io/net.zig +11 -11
- package/std/Io.zig +90 -26
- package/std/SemanticVersion.zig +1 -1
- package/std/Target/Query.zig +2 -2
- package/std/Target.zig +50 -5
- package/std/array_hash_map.zig +9 -18
- package/std/builtin.zig +4 -0
- package/std/c/haiku.zig +3 -0
- package/std/c/serenity.zig +1 -6
- package/std/c.zig +89 -7
- package/std/compress/flate/Decompress.zig +2 -3
- package/std/compress/zstd/Decompress.zig +2 -4
- package/std/crypto/Certificate.zig +13 -1
- package/std/crypto/ascon.zig +75 -33
- package/std/crypto/codecs/asn1/Oid.zig +12 -1
- package/std/crypto/codecs/base64_hex_ct.zig +2 -4
- package/std/crypto/ml_kem.zig +2 -9
- package/std/crypto/tls/Client.zig +79 -4
- package/std/crypto/tls.zig +1 -1
- package/std/crypto.zig +1 -0
- package/std/debug/Pdb.zig +1 -1
- package/std/debug.zig +4 -3
- package/std/fmt.zig +8 -3
- package/std/fs/path.zig +6 -4
- package/std/heap/BufferFirstAllocator.zig +165 -0
- package/std/heap.zig +2 -126
- package/std/http/Client.zig +21 -24
- package/std/http.zig +3 -4
- package/std/json/Scanner.zig +2 -2
- package/std/os/emscripten.zig +1 -1
- package/std/os/linux/IoUring.zig +2 -0
- 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/syscalls.zig +26 -1
- 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 +412 -436
- package/std/os/uefi/tables/boot_services.zig +9 -8
- package/std/os.zig +41 -0
- package/std/process.zig +1 -1
- package/std/sort.zig +3 -3
- package/std/zig/Ast/Render.zig +3 -3
- package/std/zig/AstGen.zig +44 -98
- package/std/zig/AstRlAnnotate.zig +0 -11
- package/std/zig/BuiltinFn.zig +0 -32
- package/std/zig/LibCInstallation.zig +4 -3
- package/std/zig/Parse.zig +7 -7
- package/std/zig/WindowsSdk.zig +13 -13
- package/std/zig/Zir.zig +50 -63
- package/std/zig/ZonGen.zig +6 -5
- package/std/zig/llvm/Builder.zig +12 -12
- package/std/zig.zig +1 -10
- package/std/zip.zig +5 -5
- package/zig.h +340 -1
- package/libc/include/hexagon-linux-any/asm/signal.h +0 -29
- package/libc/include/s390x-linux-any/asm/tape390.h +0 -103
- package/libc/mingw/math/fdiml.c +0 -24
- package/libc/mingw/winpthreads/spinlock.c +0 -82
- package/libc/musl/src/linux/tee.c +0 -8
- package/libc/musl/src/math/fdimf.c +0 -10
- package/libc/musl/src/math/fdiml.c +0 -18
- package/libc/musl/src/string/strdup.c +0 -10
- package/libc/musl/src/string/strndup.c +0 -12
- package/libc/musl/src/string/wcsdup.c +0 -10
- package/libc/musl/src/thread/pthread_spin_destroy.c +0 -6
- package/libc/musl/src/thread/pthread_spin_init.c +0 -6
- package/libc/musl/src/thread/pthread_spin_lock.c +0 -8
- package/libc/musl/src/thread/pthread_spin_trylock.c +0 -7
- package/libc/musl/src/thread/pthread_spin_unlock.c +0 -7
- package/libc/musl/src/unistd/dup2.c +0 -20
- package/libc/musl/src/unistd/dup3.c +0 -26
- package/libc/wasi/thread-stub/pthread_spin_lock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_trylock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_unlock.c +0 -7
package/std/os/linux/sparc64.zig
CHANGED
|
@@ -2,49 +2,26 @@ const builtin = @import("builtin");
|
|
|
2
2
|
const std = @import("../../std.zig");
|
|
3
3
|
const SYS = std.os.linux.SYS;
|
|
4
4
|
|
|
5
|
-
pub
|
|
6
|
-
return asm volatile (
|
|
7
|
-
\\ mov %[arg], %%g3
|
|
8
|
-
\\ t 0x6d
|
|
9
|
-
\\ bcc,pt %%xcc, 1f
|
|
10
|
-
\\ nop
|
|
11
|
-
\\ # Return the error code
|
|
12
|
-
\\ ba 2f
|
|
13
|
-
\\ neg %%o0
|
|
14
|
-
\\1:
|
|
15
|
-
\\ st %%o0, [%%g3+0]
|
|
16
|
-
\\ st %%o1, [%%g3+4]
|
|
17
|
-
\\ clr %%o0
|
|
18
|
-
\\2:
|
|
19
|
-
: [ret] "={o0}" (-> u64),
|
|
20
|
-
: [number] "{g1}" (@intFromEnum(SYS.pipe)),
|
|
21
|
-
[arg] "r" (fd),
|
|
22
|
-
: .{ .memory = true, .g3 = true });
|
|
23
|
-
}
|
|
5
|
+
pub const syscall_arg_t = u64;
|
|
24
6
|
|
|
25
|
-
pub fn
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
// - On the child's side, %o0 is the parent's PID and %o1 is 1.
|
|
29
|
-
// We need to clear the child's %o0 so that the return values
|
|
30
|
-
// conform to the libc convention.
|
|
7
|
+
pub fn syscall0(
|
|
8
|
+
number: SYS,
|
|
9
|
+
) u64 {
|
|
31
10
|
return asm volatile (
|
|
32
11
|
\\ t 0x6d
|
|
33
12
|
\\ bcc,pt %%xcc, 1f
|
|
34
13
|
\\ nop
|
|
35
|
-
\\ ba 2f
|
|
36
14
|
\\ neg %%o0
|
|
37
15
|
\\ 1:
|
|
38
|
-
\\ # Clear the child's %%o0
|
|
39
|
-
\\ dec %%o1
|
|
40
|
-
\\ and %%o1, %%o0, %%o0
|
|
41
|
-
\\ 2:
|
|
42
16
|
: [ret] "={o0}" (-> u64),
|
|
43
|
-
: [number] "{g1}" (@intFromEnum(
|
|
17
|
+
: [number] "{g1}" (@intFromEnum(number)),
|
|
44
18
|
: .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true });
|
|
45
19
|
}
|
|
46
20
|
|
|
47
|
-
pub fn
|
|
21
|
+
pub fn syscall1(
|
|
22
|
+
number: SYS,
|
|
23
|
+
arg1: syscall_arg_t,
|
|
24
|
+
) u64 {
|
|
48
25
|
return asm volatile (
|
|
49
26
|
\\ t 0x6d
|
|
50
27
|
\\ bcc,pt %%xcc, 1f
|
|
@@ -53,10 +30,15 @@ pub fn syscall0(number: SYS) u64 {
|
|
|
53
30
|
\\ 1:
|
|
54
31
|
: [ret] "={o0}" (-> u64),
|
|
55
32
|
: [number] "{g1}" (@intFromEnum(number)),
|
|
33
|
+
[arg1] "{o0}" (arg1),
|
|
56
34
|
: .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true });
|
|
57
35
|
}
|
|
58
36
|
|
|
59
|
-
pub fn
|
|
37
|
+
pub fn syscall2(
|
|
38
|
+
number: SYS,
|
|
39
|
+
arg1: syscall_arg_t,
|
|
40
|
+
arg2: syscall_arg_t,
|
|
41
|
+
) u64 {
|
|
60
42
|
return asm volatile (
|
|
61
43
|
\\ t 0x6d
|
|
62
44
|
\\ bcc,pt %%xcc, 1f
|
|
@@ -66,10 +48,16 @@ pub fn syscall1(number: SYS, arg1: u64) u64 {
|
|
|
66
48
|
: [ret] "={o0}" (-> u64),
|
|
67
49
|
: [number] "{g1}" (@intFromEnum(number)),
|
|
68
50
|
[arg1] "{o0}" (arg1),
|
|
51
|
+
[arg2] "{o1}" (arg2),
|
|
69
52
|
: .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true });
|
|
70
53
|
}
|
|
71
54
|
|
|
72
|
-
pub fn
|
|
55
|
+
pub fn syscall3(
|
|
56
|
+
number: SYS,
|
|
57
|
+
arg1: syscall_arg_t,
|
|
58
|
+
arg2: syscall_arg_t,
|
|
59
|
+
arg3: syscall_arg_t,
|
|
60
|
+
) u64 {
|
|
73
61
|
return asm volatile (
|
|
74
62
|
\\ t 0x6d
|
|
75
63
|
\\ bcc,pt %%xcc, 1f
|
|
@@ -80,10 +68,17 @@ pub fn syscall2(number: SYS, arg1: u64, arg2: u64) u64 {
|
|
|
80
68
|
: [number] "{g1}" (@intFromEnum(number)),
|
|
81
69
|
[arg1] "{o0}" (arg1),
|
|
82
70
|
[arg2] "{o1}" (arg2),
|
|
71
|
+
[arg3] "{o2}" (arg3),
|
|
83
72
|
: .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true });
|
|
84
73
|
}
|
|
85
74
|
|
|
86
|
-
pub fn
|
|
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 {
|
|
87
82
|
return asm volatile (
|
|
88
83
|
\\ t 0x6d
|
|
89
84
|
\\ bcc,pt %%xcc, 1f
|
|
@@ -95,10 +90,18 @@ pub fn syscall3(number: SYS, arg1: u64, arg2: u64, arg3: u64) u64 {
|
|
|
95
90
|
[arg1] "{o0}" (arg1),
|
|
96
91
|
[arg2] "{o1}" (arg2),
|
|
97
92
|
[arg3] "{o2}" (arg3),
|
|
93
|
+
[arg4] "{o3}" (arg4),
|
|
98
94
|
: .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true });
|
|
99
95
|
}
|
|
100
96
|
|
|
101
|
-
pub fn
|
|
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 {
|
|
102
105
|
return asm volatile (
|
|
103
106
|
\\ t 0x6d
|
|
104
107
|
\\ bcc,pt %%xcc, 1f
|
|
@@ -111,10 +114,19 @@ pub fn syscall4(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64) u64 {
|
|
|
111
114
|
[arg2] "{o1}" (arg2),
|
|
112
115
|
[arg3] "{o2}" (arg3),
|
|
113
116
|
[arg4] "{o3}" (arg4),
|
|
117
|
+
[arg5] "{o4}" (arg5),
|
|
114
118
|
: .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true });
|
|
115
119
|
}
|
|
116
120
|
|
|
117
|
-
pub fn
|
|
121
|
+
pub fn syscall6(
|
|
122
|
+
number: SYS,
|
|
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,
|
|
129
|
+
) u64 {
|
|
118
130
|
return asm volatile (
|
|
119
131
|
\\ t 0x6d
|
|
120
132
|
\\ bcc,pt %%xcc, 1f
|
|
@@ -128,32 +140,51 @@ pub fn syscall5(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u
|
|
|
128
140
|
[arg3] "{o2}" (arg3),
|
|
129
141
|
[arg4] "{o3}" (arg4),
|
|
130
142
|
[arg5] "{o4}" (arg5),
|
|
143
|
+
[arg6] "{o5}" (arg6),
|
|
131
144
|
: .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true });
|
|
132
145
|
}
|
|
133
146
|
|
|
134
|
-
pub fn
|
|
135
|
-
|
|
136
|
-
arg1: u64,
|
|
137
|
-
arg2: u64,
|
|
138
|
-
arg3: u64,
|
|
139
|
-
arg4: u64,
|
|
140
|
-
arg5: u64,
|
|
141
|
-
arg6: u64,
|
|
147
|
+
pub fn syscall_pipe(
|
|
148
|
+
fd: *[2]std.os.linux.fd_t,
|
|
142
149
|
) u64 {
|
|
150
|
+
return asm volatile (
|
|
151
|
+
\\ mov %[arg], %%g3
|
|
152
|
+
\\ t 0x6d
|
|
153
|
+
\\ bcc,pt %%xcc, 1f
|
|
154
|
+
\\ nop
|
|
155
|
+
\\ # Return the error code
|
|
156
|
+
\\ ba 2f
|
|
157
|
+
\\ neg %%o0
|
|
158
|
+
\\1:
|
|
159
|
+
\\ st %%o0, [%%g3+0]
|
|
160
|
+
\\ st %%o1, [%%g3+4]
|
|
161
|
+
\\ clr %%o0
|
|
162
|
+
\\2:
|
|
163
|
+
: [ret] "={o0}" (-> u64),
|
|
164
|
+
: [number] "{g1}" (@intFromEnum(SYS.pipe)),
|
|
165
|
+
[arg] "r" (fd),
|
|
166
|
+
: .{ .memory = true, .g3 = true });
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
pub fn syscall_fork() u64 {
|
|
170
|
+
// Linux/sparc64 fork() returns two values in %o0 and %o1:
|
|
171
|
+
// - On the parent's side, %o0 is the child's PID and %o1 is 0.
|
|
172
|
+
// - On the child's side, %o0 is the parent's PID and %o1 is 1.
|
|
173
|
+
// We need to clear the child's %o0 so that the return values
|
|
174
|
+
// conform to the libc convention.
|
|
143
175
|
return asm volatile (
|
|
144
176
|
\\ t 0x6d
|
|
145
177
|
\\ bcc,pt %%xcc, 1f
|
|
146
178
|
\\ nop
|
|
179
|
+
\\ ba 2f
|
|
147
180
|
\\ neg %%o0
|
|
148
181
|
\\ 1:
|
|
182
|
+
\\ # Clear the child's %%o0
|
|
183
|
+
\\ dec %%o1
|
|
184
|
+
\\ and %%o1, %%o0, %%o0
|
|
185
|
+
\\ 2:
|
|
149
186
|
: [ret] "={o0}" (-> u64),
|
|
150
|
-
: [number] "{g1}" (@intFromEnum(
|
|
151
|
-
[arg1] "{o0}" (arg1),
|
|
152
|
-
[arg2] "{o1}" (arg2),
|
|
153
|
-
[arg3] "{o2}" (arg3),
|
|
154
|
-
[arg4] "{o3}" (arg4),
|
|
155
|
-
[arg5] "{o4}" (arg5),
|
|
156
|
-
[arg6] "{o5}" (arg6),
|
|
187
|
+
: [number] "{g1}" (@intFromEnum(SYS.fork)),
|
|
157
188
|
: .{ .memory = true, .xcc = true, .o1 = true, .o2 = true, .o3 = true, .o4 = true, .o5 = true, .o7 = true });
|
|
158
189
|
}
|
|
159
190
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// This file is automatically generated by tools/generate_linux_syscalls.zig
|
|
2
|
-
// This list current as of kernel:
|
|
2
|
+
// This list current as of kernel: 7.0.0
|
|
3
3
|
|
|
4
4
|
pub const X86 = enum(usize) {
|
|
5
5
|
restart_syscall = 0,
|
|
@@ -462,6 +462,7 @@ pub const X86 = enum(usize) {
|
|
|
462
462
|
file_getattr = 468,
|
|
463
463
|
file_setattr = 469,
|
|
464
464
|
listns = 470,
|
|
465
|
+
rseq_slice_yield = 471,
|
|
465
466
|
};
|
|
466
467
|
|
|
467
468
|
pub const X64 = enum(usize) {
|
|
@@ -849,6 +850,7 @@ pub const X64 = enum(usize) {
|
|
|
849
850
|
file_getattr = 468,
|
|
850
851
|
file_setattr = 469,
|
|
851
852
|
listns = 470,
|
|
853
|
+
rseq_slice_yield = 471,
|
|
852
854
|
};
|
|
853
855
|
|
|
854
856
|
pub const X32 = enum(usize) {
|
|
@@ -1189,6 +1191,7 @@ pub const X32 = enum(usize) {
|
|
|
1189
1191
|
file_getattr = 1073742292,
|
|
1190
1192
|
file_setattr = 1073742293,
|
|
1191
1193
|
listns = 1073742294,
|
|
1194
|
+
rseq_slice_yield = 1073742295,
|
|
1192
1195
|
rt_sigaction = 1073742336,
|
|
1193
1196
|
rt_sigreturn = 1073742337,
|
|
1194
1197
|
ioctl = 1073742338,
|
|
@@ -1653,6 +1656,7 @@ pub const Arm = enum(usize) {
|
|
|
1653
1656
|
file_getattr = 468,
|
|
1654
1657
|
file_setattr = 469,
|
|
1655
1658
|
listns = 470,
|
|
1659
|
+
rseq_slice_yield = 471,
|
|
1656
1660
|
|
|
1657
1661
|
breakpoint = arm_base + 1,
|
|
1658
1662
|
cacheflush = arm_base + 2,
|
|
@@ -2068,6 +2072,7 @@ pub const Sparc = enum(usize) {
|
|
|
2068
2072
|
fsmount = 432,
|
|
2069
2073
|
fspick = 433,
|
|
2070
2074
|
pidfd_open = 434,
|
|
2075
|
+
clone3 = 435,
|
|
2071
2076
|
close_range = 436,
|
|
2072
2077
|
openat2 = 437,
|
|
2073
2078
|
pidfd_getfd = 438,
|
|
@@ -2102,6 +2107,7 @@ pub const Sparc = enum(usize) {
|
|
|
2102
2107
|
file_getattr = 468,
|
|
2103
2108
|
file_setattr = 469,
|
|
2104
2109
|
listns = 470,
|
|
2110
|
+
rseq_slice_yield = 471,
|
|
2105
2111
|
};
|
|
2106
2112
|
|
|
2107
2113
|
pub const Sparc64 = enum(usize) {
|
|
@@ -2473,6 +2479,7 @@ pub const Sparc64 = enum(usize) {
|
|
|
2473
2479
|
fsmount = 432,
|
|
2474
2480
|
fspick = 433,
|
|
2475
2481
|
pidfd_open = 434,
|
|
2482
|
+
clone3 = 435,
|
|
2476
2483
|
close_range = 436,
|
|
2477
2484
|
openat2 = 437,
|
|
2478
2485
|
pidfd_getfd = 438,
|
|
@@ -2507,6 +2514,7 @@ pub const Sparc64 = enum(usize) {
|
|
|
2507
2514
|
file_getattr = 468,
|
|
2508
2515
|
file_setattr = 469,
|
|
2509
2516
|
listns = 470,
|
|
2517
|
+
rseq_slice_yield = 471,
|
|
2510
2518
|
};
|
|
2511
2519
|
|
|
2512
2520
|
pub const M68k = enum(usize) {
|
|
@@ -2952,6 +2960,7 @@ pub const M68k = enum(usize) {
|
|
|
2952
2960
|
file_getattr = 468,
|
|
2953
2961
|
file_setattr = 469,
|
|
2954
2962
|
listns = 470,
|
|
2963
|
+
rseq_slice_yield = 471,
|
|
2955
2964
|
};
|
|
2956
2965
|
|
|
2957
2966
|
pub const MipsO32 = enum(usize) {
|
|
@@ -3391,6 +3400,7 @@ pub const MipsO32 = enum(usize) {
|
|
|
3391
3400
|
file_getattr = 4468,
|
|
3392
3401
|
file_setattr = 4469,
|
|
3393
3402
|
listns = 4470,
|
|
3403
|
+
rseq_slice_yield = 4471,
|
|
3394
3404
|
};
|
|
3395
3405
|
|
|
3396
3406
|
pub const MipsN64 = enum(usize) {
|
|
@@ -3766,6 +3776,7 @@ pub const MipsN64 = enum(usize) {
|
|
|
3766
3776
|
file_getattr = 5468,
|
|
3767
3777
|
file_setattr = 5469,
|
|
3768
3778
|
listns = 5470,
|
|
3779
|
+
rseq_slice_yield = 5471,
|
|
3769
3780
|
};
|
|
3770
3781
|
|
|
3771
3782
|
pub const MipsN32 = enum(usize) {
|
|
@@ -4165,6 +4176,7 @@ pub const MipsN32 = enum(usize) {
|
|
|
4165
4176
|
file_getattr = 6468,
|
|
4166
4177
|
file_setattr = 6469,
|
|
4167
4178
|
listns = 6470,
|
|
4179
|
+
rseq_slice_yield = 6471,
|
|
4168
4180
|
};
|
|
4169
4181
|
|
|
4170
4182
|
pub const PowerPC = enum(usize) {
|
|
@@ -4619,6 +4631,7 @@ pub const PowerPC = enum(usize) {
|
|
|
4619
4631
|
file_getattr = 468,
|
|
4620
4632
|
file_setattr = 469,
|
|
4621
4633
|
listns = 470,
|
|
4634
|
+
rseq_slice_yield = 471,
|
|
4622
4635
|
};
|
|
4623
4636
|
|
|
4624
4637
|
pub const PowerPC64 = enum(usize) {
|
|
@@ -5045,6 +5058,7 @@ pub const PowerPC64 = enum(usize) {
|
|
|
5045
5058
|
file_getattr = 468,
|
|
5046
5059
|
file_setattr = 469,
|
|
5047
5060
|
listns = 470,
|
|
5061
|
+
rseq_slice_yield = 471,
|
|
5048
5062
|
};
|
|
5049
5063
|
|
|
5050
5064
|
pub const S390x = enum(usize) {
|
|
@@ -5437,6 +5451,7 @@ pub const S390x = enum(usize) {
|
|
|
5437
5451
|
file_getattr = 468,
|
|
5438
5452
|
file_setattr = 469,
|
|
5439
5453
|
listns = 470,
|
|
5454
|
+
rseq_slice_yield = 471,
|
|
5440
5455
|
};
|
|
5441
5456
|
|
|
5442
5457
|
pub const Xtensa = enum(usize) {
|
|
@@ -5833,6 +5848,7 @@ pub const Xtensa = enum(usize) {
|
|
|
5833
5848
|
file_getattr = 468,
|
|
5834
5849
|
file_setattr = 469,
|
|
5835
5850
|
listns = 470,
|
|
5851
|
+
rseq_slice_yield = 471,
|
|
5836
5852
|
};
|
|
5837
5853
|
|
|
5838
5854
|
pub const Arm64 = enum(usize) {
|
|
@@ -6162,6 +6178,7 @@ pub const Arm64 = enum(usize) {
|
|
|
6162
6178
|
file_getattr = 468,
|
|
6163
6179
|
file_setattr = 469,
|
|
6164
6180
|
listns = 470,
|
|
6181
|
+
rseq_slice_yield = 471,
|
|
6165
6182
|
};
|
|
6166
6183
|
|
|
6167
6184
|
pub const RiscV32 = enum(usize) {
|
|
@@ -6482,6 +6499,7 @@ pub const RiscV32 = enum(usize) {
|
|
|
6482
6499
|
file_getattr = 468,
|
|
6483
6500
|
file_setattr = 469,
|
|
6484
6501
|
listns = 470,
|
|
6502
|
+
rseq_slice_yield = 471,
|
|
6485
6503
|
};
|
|
6486
6504
|
|
|
6487
6505
|
pub const RiscV64 = enum(usize) {
|
|
@@ -6812,6 +6830,7 @@ pub const RiscV64 = enum(usize) {
|
|
|
6812
6830
|
file_getattr = 468,
|
|
6813
6831
|
file_setattr = 469,
|
|
6814
6832
|
listns = 470,
|
|
6833
|
+
rseq_slice_yield = 471,
|
|
6815
6834
|
};
|
|
6816
6835
|
|
|
6817
6836
|
pub const LoongArch32 = enum(usize) {
|
|
@@ -7129,6 +7148,7 @@ pub const LoongArch32 = enum(usize) {
|
|
|
7129
7148
|
file_getattr = 468,
|
|
7130
7149
|
file_setattr = 469,
|
|
7131
7150
|
listns = 470,
|
|
7151
|
+
rseq_slice_yield = 471,
|
|
7132
7152
|
};
|
|
7133
7153
|
|
|
7134
7154
|
pub const LoongArch64 = enum(usize) {
|
|
@@ -7454,6 +7474,7 @@ pub const LoongArch64 = enum(usize) {
|
|
|
7454
7474
|
file_getattr = 468,
|
|
7455
7475
|
file_setattr = 469,
|
|
7456
7476
|
listns = 470,
|
|
7477
|
+
rseq_slice_yield = 471,
|
|
7457
7478
|
};
|
|
7458
7479
|
|
|
7459
7480
|
pub const Arc = enum(usize) {
|
|
@@ -7807,6 +7828,7 @@ pub const Arc = enum(usize) {
|
|
|
7807
7828
|
file_getattr = 468,
|
|
7808
7829
|
file_setattr = 469,
|
|
7809
7830
|
listns = 470,
|
|
7831
|
+
rseq_slice_yield = 471,
|
|
7810
7832
|
};
|
|
7811
7833
|
|
|
7812
7834
|
pub const CSky = enum(usize) {
|
|
@@ -8156,6 +8178,7 @@ pub const CSky = enum(usize) {
|
|
|
8156
8178
|
file_getattr = 468,
|
|
8157
8179
|
file_setattr = 469,
|
|
8158
8180
|
listns = 470,
|
|
8181
|
+
rseq_slice_yield = 471,
|
|
8159
8182
|
};
|
|
8160
8183
|
|
|
8161
8184
|
pub const Hexagon = enum(usize) {
|
|
@@ -8504,6 +8527,7 @@ pub const Hexagon = enum(usize) {
|
|
|
8504
8527
|
file_getattr = 468,
|
|
8505
8528
|
file_setattr = 469,
|
|
8506
8529
|
listns = 470,
|
|
8530
|
+
rseq_slice_yield = 471,
|
|
8507
8531
|
};
|
|
8508
8532
|
|
|
8509
8533
|
pub const OpenRisc = enum(usize) {
|
|
@@ -8853,4 +8877,5 @@ pub const OpenRisc = enum(usize) {
|
|
|
8853
8877
|
file_getattr = 468,
|
|
8854
8878
|
file_setattr = 469,
|
|
8855
8879
|
listns = 470,
|
|
8880
|
+
rseq_slice_yield = 471,
|
|
8856
8881
|
};
|
package/std/os/linux/thumb.zig
CHANGED
|
@@ -5,9 +5,14 @@
|
|
|
5
5
|
//! to break the frame chain.
|
|
6
6
|
const std = @import("../../std.zig");
|
|
7
7
|
const SYS = std.os.linux.SYS;
|
|
8
|
+
const arm = @import("arm.zig");
|
|
8
9
|
|
|
9
|
-
pub
|
|
10
|
-
|
|
10
|
+
pub const syscall_arg_t = arm.syscall_arg_t;
|
|
11
|
+
|
|
12
|
+
pub fn syscall0(
|
|
13
|
+
number: SYS,
|
|
14
|
+
) u32 {
|
|
15
|
+
var buf: [2]syscall_arg_t = .{ @intFromEnum(number), undefined };
|
|
11
16
|
return asm volatile (
|
|
12
17
|
\\ str r7, [%[tmp], #4]
|
|
13
18
|
\\ ldr r7, [%[tmp]]
|
|
@@ -18,8 +23,11 @@ pub fn syscall0(number: SYS) u32 {
|
|
|
18
23
|
: .{ .memory = true });
|
|
19
24
|
}
|
|
20
25
|
|
|
21
|
-
pub fn syscall1(
|
|
22
|
-
|
|
26
|
+
pub fn syscall1(
|
|
27
|
+
number: SYS,
|
|
28
|
+
arg1: syscall_arg_t,
|
|
29
|
+
) u32 {
|
|
30
|
+
var buf: [2]syscall_arg_t = .{ @intFromEnum(number), undefined };
|
|
23
31
|
return asm volatile (
|
|
24
32
|
\\ str r7, [%[tmp], #4]
|
|
25
33
|
\\ ldr r7, [%[tmp]]
|
|
@@ -31,8 +39,12 @@ pub fn syscall1(number: SYS, arg1: u32) u32 {
|
|
|
31
39
|
: .{ .memory = true });
|
|
32
40
|
}
|
|
33
41
|
|
|
34
|
-
pub fn syscall2(
|
|
35
|
-
|
|
42
|
+
pub fn syscall2(
|
|
43
|
+
number: SYS,
|
|
44
|
+
arg1: syscall_arg_t,
|
|
45
|
+
arg2: syscall_arg_t,
|
|
46
|
+
) u32 {
|
|
47
|
+
var buf: [2]syscall_arg_t = .{ @intFromEnum(number), undefined };
|
|
36
48
|
return asm volatile (
|
|
37
49
|
\\ str r7, [%[tmp], #4]
|
|
38
50
|
\\ ldr r7, [%[tmp]]
|
|
@@ -45,8 +57,13 @@ pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 {
|
|
|
45
57
|
: .{ .memory = true });
|
|
46
58
|
}
|
|
47
59
|
|
|
48
|
-
pub fn syscall3(
|
|
49
|
-
|
|
60
|
+
pub fn syscall3(
|
|
61
|
+
number: SYS,
|
|
62
|
+
arg1: syscall_arg_t,
|
|
63
|
+
arg2: syscall_arg_t,
|
|
64
|
+
arg3: syscall_arg_t,
|
|
65
|
+
) u32 {
|
|
66
|
+
var buf: [2]syscall_arg_t = .{ @intFromEnum(number), undefined };
|
|
50
67
|
return asm volatile (
|
|
51
68
|
\\ str r7, [%[tmp], #4]
|
|
52
69
|
\\ ldr r7, [%[tmp]]
|
|
@@ -60,8 +77,14 @@ pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 {
|
|
|
60
77
|
: .{ .memory = true });
|
|
61
78
|
}
|
|
62
79
|
|
|
63
|
-
pub fn syscall4(
|
|
64
|
-
|
|
80
|
+
pub fn syscall4(
|
|
81
|
+
number: SYS,
|
|
82
|
+
arg1: syscall_arg_t,
|
|
83
|
+
arg2: syscall_arg_t,
|
|
84
|
+
arg3: syscall_arg_t,
|
|
85
|
+
arg4: syscall_arg_t,
|
|
86
|
+
) u32 {
|
|
87
|
+
var buf: [2]syscall_arg_t = .{ @intFromEnum(number), undefined };
|
|
65
88
|
return asm volatile (
|
|
66
89
|
\\ str r7, [%[tmp], #4]
|
|
67
90
|
\\ ldr r7, [%[tmp]]
|
|
@@ -76,8 +99,15 @@ pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 {
|
|
|
76
99
|
: .{ .memory = true });
|
|
77
100
|
}
|
|
78
101
|
|
|
79
|
-
pub fn syscall5(
|
|
80
|
-
|
|
102
|
+
pub fn syscall5(
|
|
103
|
+
number: SYS,
|
|
104
|
+
arg1: syscall_arg_t,
|
|
105
|
+
arg2: syscall_arg_t,
|
|
106
|
+
arg3: syscall_arg_t,
|
|
107
|
+
arg4: syscall_arg_t,
|
|
108
|
+
arg5: syscall_arg_t,
|
|
109
|
+
) u32 {
|
|
110
|
+
var buf: [2]syscall_arg_t = .{ @intFromEnum(number), undefined };
|
|
81
111
|
return asm volatile (
|
|
82
112
|
\\ str r7, [%[tmp], #4]
|
|
83
113
|
\\ ldr r7, [%[tmp]]
|
|
@@ -95,14 +125,14 @@ pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u
|
|
|
95
125
|
|
|
96
126
|
pub fn syscall6(
|
|
97
127
|
number: SYS,
|
|
98
|
-
arg1:
|
|
99
|
-
arg2:
|
|
100
|
-
arg3:
|
|
101
|
-
arg4:
|
|
102
|
-
arg5:
|
|
103
|
-
arg6:
|
|
128
|
+
arg1: syscall_arg_t,
|
|
129
|
+
arg2: syscall_arg_t,
|
|
130
|
+
arg3: syscall_arg_t,
|
|
131
|
+
arg4: syscall_arg_t,
|
|
132
|
+
arg5: syscall_arg_t,
|
|
133
|
+
arg6: syscall_arg_t,
|
|
104
134
|
) u32 {
|
|
105
|
-
var buf: [2]
|
|
135
|
+
var buf: [2]syscall_arg_t = .{ @intFromEnum(number), undefined };
|
|
106
136
|
return asm volatile (
|
|
107
137
|
\\ str r7, [%[tmp], #4]
|
|
108
138
|
\\ ldr r7, [%[tmp]]
|
|
@@ -119,22 +149,8 @@ pub fn syscall6(
|
|
|
119
149
|
: .{ .memory = true });
|
|
120
150
|
}
|
|
121
151
|
|
|
122
|
-
pub const clone =
|
|
152
|
+
pub const clone = arm.clone;
|
|
123
153
|
|
|
124
|
-
pub
|
|
125
|
-
asm volatile (
|
|
126
|
-
\\ mov r7, %[number]
|
|
127
|
-
\\ svc #0
|
|
128
|
-
:
|
|
129
|
-
: [number] "I" (@intFromEnum(SYS.sigreturn)),
|
|
130
|
-
);
|
|
131
|
-
}
|
|
154
|
+
pub const restore = arm.restore;
|
|
132
155
|
|
|
133
|
-
pub
|
|
134
|
-
asm volatile (
|
|
135
|
-
\\ mov r7, %[number]
|
|
136
|
-
\\ svc #0
|
|
137
|
-
:
|
|
138
|
-
: [number] "I" (@intFromEnum(SYS.rt_sigreturn)),
|
|
139
|
-
);
|
|
140
|
-
}
|
|
156
|
+
pub const restore_rt = arm.restore_rt;
|
package/std/os/linux/x32.zig
CHANGED
|
@@ -2,14 +2,21 @@ 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 ("syscall"
|
|
7
11
|
: [ret] "={rax}" (-> u32),
|
|
8
12
|
: [number] "{rax}" (@intFromEnum(number)),
|
|
9
13
|
: .{ .rcx = true, .r11 = true, .memory = true });
|
|
10
14
|
}
|
|
11
15
|
|
|
12
|
-
pub fn syscall1(
|
|
16
|
+
pub fn syscall1(
|
|
17
|
+
number: SYS,
|
|
18
|
+
arg1: syscall_arg_t,
|
|
19
|
+
) u32 {
|
|
13
20
|
return asm volatile ("syscall"
|
|
14
21
|
: [ret] "={rax}" (-> u32),
|
|
15
22
|
: [number] "{rax}" (@intFromEnum(number)),
|
|
@@ -17,7 +24,11 @@ pub fn syscall1(number: SYS, arg1: u32) u32 {
|
|
|
17
24
|
: .{ .rcx = true, .r11 = true, .memory = true });
|
|
18
25
|
}
|
|
19
26
|
|
|
20
|
-
pub fn syscall2(
|
|
27
|
+
pub fn syscall2(
|
|
28
|
+
number: SYS,
|
|
29
|
+
arg1: syscall_arg_t,
|
|
30
|
+
arg2: syscall_arg_t,
|
|
31
|
+
) u32 {
|
|
21
32
|
return asm volatile ("syscall"
|
|
22
33
|
: [ret] "={rax}" (-> u32),
|
|
23
34
|
: [number] "{rax}" (@intFromEnum(number)),
|
|
@@ -26,7 +37,12 @@ pub fn syscall2(number: SYS, arg1: u32, arg2: u32) u32 {
|
|
|
26
37
|
: .{ .rcx = true, .r11 = true, .memory = true });
|
|
27
38
|
}
|
|
28
39
|
|
|
29
|
-
pub fn syscall3(
|
|
40
|
+
pub fn syscall3(
|
|
41
|
+
number: SYS,
|
|
42
|
+
arg1: syscall_arg_t,
|
|
43
|
+
arg2: syscall_arg_t,
|
|
44
|
+
arg3: syscall_arg_t,
|
|
45
|
+
) u32 {
|
|
30
46
|
return asm volatile ("syscall"
|
|
31
47
|
: [ret] "={rax}" (-> u32),
|
|
32
48
|
: [number] "{rax}" (@intFromEnum(number)),
|
|
@@ -36,7 +52,13 @@ pub fn syscall3(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 {
|
|
|
36
52
|
: .{ .rcx = true, .r11 = true, .memory = true });
|
|
37
53
|
}
|
|
38
54
|
|
|
39
|
-
pub fn syscall4(
|
|
55
|
+
pub fn syscall4(
|
|
56
|
+
number: SYS,
|
|
57
|
+
arg1: syscall_arg_t,
|
|
58
|
+
arg2: syscall_arg_t,
|
|
59
|
+
arg3: syscall_arg_t,
|
|
60
|
+
arg4: syscall_arg_t,
|
|
61
|
+
) u32 {
|
|
40
62
|
return asm volatile ("syscall"
|
|
41
63
|
: [ret] "={rax}" (-> u32),
|
|
42
64
|
: [number] "{rax}" (@intFromEnum(number)),
|
|
@@ -47,7 +69,14 @@ pub fn syscall4(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 {
|
|
|
47
69
|
: .{ .rcx = true, .r11 = true, .memory = true });
|
|
48
70
|
}
|
|
49
71
|
|
|
50
|
-
pub fn syscall5(
|
|
72
|
+
pub fn syscall5(
|
|
73
|
+
number: SYS,
|
|
74
|
+
arg1: syscall_arg_t,
|
|
75
|
+
arg2: syscall_arg_t,
|
|
76
|
+
arg3: syscall_arg_t,
|
|
77
|
+
arg4: syscall_arg_t,
|
|
78
|
+
arg5: syscall_arg_t,
|
|
79
|
+
) u32 {
|
|
51
80
|
return asm volatile ("syscall"
|
|
52
81
|
: [ret] "={rax}" (-> u32),
|
|
53
82
|
: [number] "{rax}" (@intFromEnum(number)),
|
|
@@ -61,12 +90,12 @@ pub fn syscall5(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u
|
|
|
61
90
|
|
|
62
91
|
pub fn syscall6(
|
|
63
92
|
number: SYS,
|
|
64
|
-
arg1:
|
|
65
|
-
arg2:
|
|
66
|
-
arg3:
|
|
67
|
-
arg4:
|
|
68
|
-
arg5:
|
|
69
|
-
arg6:
|
|
93
|
+
arg1: syscall_arg_t,
|
|
94
|
+
arg2: syscall_arg_t,
|
|
95
|
+
arg3: syscall_arg_t,
|
|
96
|
+
arg4: syscall_arg_t,
|
|
97
|
+
arg5: syscall_arg_t,
|
|
98
|
+
arg6: syscall_arg_t,
|
|
70
99
|
) u32 {
|
|
71
100
|
return asm volatile ("syscall"
|
|
72
101
|
: [ret] "={rax}" (-> u32),
|