@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.
Files changed (268) hide show
  1. package/c/fcntl.zig +6 -1
  2. package/c/inttypes.zig +0 -10
  3. package/c/math.zig +46 -122
  4. package/c/pthread.zig +57 -0
  5. package/c/search.zig +1 -27
  6. package/c/stdlib/drand48.zig +0 -57
  7. package/c/stdlib.zig +0 -100
  8. package/c/string.zig +20 -7
  9. package/c/strings.zig +0 -38
  10. package/c/unistd.zig +27 -26
  11. package/c/wchar.zig +10 -0
  12. package/c.zig +2 -2
  13. package/compiler/aro/aro/CodeGen.zig +5 -6
  14. package/compiler/aro/aro/Compilation.zig +17 -14
  15. package/compiler/aro/aro/Driver.zig +14 -13
  16. package/compiler/aro/aro/Parser.zig +20 -15
  17. package/compiler/aro/aro/Pragma.zig +3 -2
  18. package/compiler/aro/aro/Preprocessor.zig +9 -6
  19. package/compiler/aro/aro/pragmas/message.zig +3 -2
  20. package/compiler/aro/aro/text_literal.zig +3 -2
  21. package/compiler/aro/assembly_backend/x86_64.zig +4 -4
  22. package/compiler/build_runner.zig +0 -2
  23. package/compiler/reduce/Walk.zig +7 -7
  24. package/compiler/test_runner.zig +2 -2
  25. package/compiler/translate-c/Translator.zig +6 -2
  26. package/compiler/translate-c/main.zig +1 -1
  27. package/compiler_rt/cos.zig +0 -2
  28. package/compiler_rt/divmodei4.zig +40 -17
  29. package/compiler_rt/exp.zig +1 -6
  30. package/compiler_rt/exp2.zig +1 -6
  31. package/compiler_rt/exp_f128.zig +377 -0
  32. package/compiler_rt/fabs.zig +0 -2
  33. package/compiler_rt/fma.zig +0 -2
  34. package/compiler_rt/fmax.zig +0 -2
  35. package/compiler_rt/fmin.zig +0 -2
  36. package/compiler_rt/fmod.zig +0 -2
  37. package/compiler_rt/limb64.zig +876 -15
  38. package/compiler_rt/log.zig +0 -2
  39. package/compiler_rt/log10.zig +0 -2
  40. package/compiler_rt/log2.zig +0 -2
  41. package/compiler_rt/mulXi3.zig +1 -1
  42. package/compiler_rt/round.zig +0 -2
  43. package/compiler_rt/sin.zig +0 -2
  44. package/compiler_rt/sincos.zig +0 -2
  45. package/compiler_rt/sqrt.zig +0 -2
  46. package/compiler_rt/ssp.zig +1 -1
  47. package/compiler_rt/tan.zig +0 -2
  48. package/compiler_rt/trunc.zig +0 -2
  49. package/compiler_rt/udivmodei4.zig +28 -0
  50. package/fuzzer.zig +2 -0
  51. package/libc/include/aarch64-linux-any/asm/hwcap.h +1 -0
  52. package/libc/include/aarch64-linux-any/asm/unistd_64.h +1 -0
  53. package/libc/include/any-linux-any/asm-generic/errno.h +2 -0
  54. package/libc/include/any-linux-any/asm-generic/unistd.h +4 -1
  55. package/libc/include/any-linux-any/drm/amdgpu_drm.h +20 -6
  56. package/libc/include/any-linux-any/drm/amdxdna_accel.h +8 -0
  57. package/libc/include/any-linux-any/drm/drm_fourcc.h +6 -6
  58. package/libc/include/any-linux-any/drm/panfrost_drm.h +75 -1
  59. package/libc/include/any-linux-any/drm/panthor_drm.h +154 -3
  60. package/libc/include/any-linux-any/drm/rocket_accel.h +74 -24
  61. package/libc/include/any-linux-any/drm/xe_drm.h +89 -6
  62. package/libc/include/any-linux-any/linux/android/binder.h +1 -1
  63. package/libc/include/any-linux-any/linux/bpf.h +28 -0
  64. package/libc/include/any-linux-any/linux/btrfs.h +1 -0
  65. package/libc/include/any-linux-any/linux/btrfs_tree.h +32 -2
  66. package/libc/include/any-linux-any/linux/dma-buf.h +1 -0
  67. package/libc/include/any-linux-any/linux/dpll.h +1 -0
  68. package/libc/include/any-linux-any/linux/elf.h +2 -0
  69. package/libc/include/any-linux-any/linux/ethtool.h +21 -5
  70. package/libc/include/any-linux-any/linux/fs.h +1 -0
  71. package/libc/include/any-linux-any/linux/hyperv.h +1 -1
  72. package/libc/include/any-linux-any/linux/idxd.h +134 -134
  73. package/libc/include/any-linux-any/linux/if_alg.h +1 -1
  74. package/libc/include/any-linux-any/linux/if_link.h +1 -0
  75. package/libc/include/any-linux-any/linux/input-event-codes.h +4 -0
  76. package/libc/include/any-linux-any/linux/io_uring/bpf_filter.h +68 -0
  77. package/libc/include/any-linux-any/linux/io_uring/query.h +5 -1
  78. package/libc/include/any-linux-any/linux/io_uring.h +33 -2
  79. package/libc/include/any-linux-any/linux/iommufd.h +39 -0
  80. package/libc/include/any-linux-any/linux/kfd_ioctl.h +13 -3
  81. package/libc/include/any-linux-any/linux/kfd_sysfs.h +2 -1
  82. package/libc/include/any-linux-any/linux/kvm.h +30 -6
  83. package/libc/include/any-linux-any/linux/landlock.h +22 -8
  84. package/libc/include/any-linux-any/linux/magic.h +1 -0
  85. package/libc/include/any-linux-any/linux/mempolicy.h +3 -0
  86. package/libc/include/any-linux-any/linux/mount.h +11 -2
  87. package/libc/include/any-linux-any/linux/mptcp_pm.h +1 -1
  88. package/libc/include/any-linux-any/linux/mshv.h +2 -0
  89. package/libc/include/any-linux-any/linux/netfilter_bridge.h +5 -4
  90. package/libc/include/any-linux-any/linux/netfilter_ipv4.h +4 -5
  91. package/libc/include/any-linux-any/linux/netfilter_ipv6.h +3 -4
  92. package/libc/include/any-linux-any/linux/nfs.h +1 -1
  93. package/libc/include/any-linux-any/linux/nfsd_netlink.h +1 -0
  94. package/libc/include/any-linux-any/linux/nilfs2_api.h +2 -2
  95. package/libc/include/any-linux-any/linux/nilfs2_ondisk.h +97 -66
  96. package/libc/include/any-linux-any/linux/nl80211.h +104 -3
  97. package/libc/include/any-linux-any/linux/pci.h +7 -0
  98. package/libc/include/any-linux-any/linux/pci_regs.h +65 -6
  99. package/libc/include/any-linux-any/linux/pcitest.h +1 -0
  100. package/libc/include/any-linux-any/linux/perf_event.h +24 -3
  101. package/libc/include/any-linux-any/linux/pkt_sched.h +1 -0
  102. package/libc/include/any-linux-any/linux/prctl.h +30 -0
  103. package/libc/include/any-linux-any/linux/rseq.h +62 -5
  104. package/libc/include/any-linux-any/linux/shm.h +0 -1
  105. package/libc/include/any-linux-any/linux/stddef.h +4 -0
  106. package/libc/include/any-linux-any/linux/sysctl.h +1 -2
  107. package/libc/include/any-linux-any/linux/taskstats.h +12 -1
  108. package/libc/include/any-linux-any/linux/tcp.h +23 -3
  109. package/libc/include/any-linux-any/linux/typelimits.h +8 -0
  110. package/libc/include/any-linux-any/linux/ublk_cmd.h +120 -1
  111. package/libc/include/any-linux-any/linux/v4l2-controls.h +63 -0
  112. package/libc/include/any-linux-any/linux/vbox_vmmdev_types.h +2 -2
  113. package/libc/include/any-linux-any/linux/vduse.h +80 -5
  114. package/libc/include/any-linux-any/linux/version.h +3 -3
  115. package/libc/include/any-linux-any/linux/vfio.h +4 -0
  116. package/libc/include/any-linux-any/linux/videodev2.h +3 -0
  117. package/libc/include/any-linux-any/linux/virtio_ring.h +1 -2
  118. package/libc/include/any-linux-any/linux/vmclock-abi.h +20 -0
  119. package/libc/include/any-linux-any/rdma/bnxt_re-abi.h +16 -0
  120. package/libc/include/any-linux-any/rdma/ib_user_ioctl_cmds.h +16 -0
  121. package/libc/include/any-linux-any/rdma/mana-abi.h +3 -0
  122. package/libc/include/any-linux-any/scsi/scsi_bsg_ufs.h +8 -9
  123. package/libc/include/any-linux-any/sound/sof/tokens.h +6 -0
  124. package/libc/include/arc-linux-any/asm/swab.h +0 -63
  125. package/libc/include/arc-linux-any/asm/unistd_32.h +1 -0
  126. package/libc/include/arm-linux-any/asm/ptrace.h +0 -9
  127. package/libc/include/arm-linux-any/asm/unistd-eabi.h +1 -0
  128. package/libc/include/arm-linux-any/asm/unistd-oabi.h +1 -0
  129. package/libc/include/csky-linux-any/asm/unistd_32.h +1 -0
  130. package/libc/include/hexagon-linux-any/asm/unistd_32.h +1 -0
  131. package/libc/include/loongarch-linux-any/asm/hwcap.h +1 -0
  132. package/libc/include/loongarch-linux-any/asm/kvm.h +1 -0
  133. package/libc/include/loongarch-linux-any/asm/kvm_para.h +1 -0
  134. package/libc/include/loongarch-linux-any/asm/unistd_32.h +2 -0
  135. package/libc/include/loongarch-linux-any/asm/unistd_64.h +2 -0
  136. package/libc/include/m68k-linux-any/asm/unistd_32.h +1 -0
  137. package/libc/include/mips-linux-any/asm/errno.h +2 -0
  138. package/libc/include/mips-linux-any/asm/unistd_n32.h +1 -0
  139. package/libc/include/mips-linux-any/asm/unistd_n64.h +1 -0
  140. package/libc/include/mips-linux-any/asm/unistd_o32.h +1 -0
  141. package/libc/include/powerpc-linux-any/asm/unistd_32.h +1 -0
  142. package/libc/include/powerpc-linux-any/asm/unistd_64.h +1 -0
  143. package/libc/include/riscv-linux-any/asm/hwprobe.h +4 -0
  144. package/libc/include/riscv-linux-any/asm/kvm.h +3 -0
  145. package/libc/include/riscv-linux-any/asm/ptrace.h +37 -0
  146. package/libc/include/riscv-linux-any/asm/sigcontext.h +1 -0
  147. package/libc/include/riscv-linux-any/asm/unistd_32.h +1 -0
  148. package/libc/include/riscv-linux-any/asm/unistd_64.h +1 -0
  149. package/libc/include/s390x-linux-any/asm/unistd_64.h +1 -0
  150. package/libc/include/sparc-linux-any/asm/errno.h +2 -0
  151. package/libc/include/sparc-linux-any/asm/ioctls.h +4 -4
  152. package/libc/include/sparc-linux-any/asm/unistd_32.h +2 -0
  153. package/libc/include/sparc-linux-any/asm/unistd_64.h +2 -0
  154. package/libc/include/x86-linux-any/asm/auxvec.h +0 -4
  155. package/libc/include/x86-linux-any/asm/kvm.h +13 -8
  156. package/libc/include/x86-linux-any/asm/svm.h +16 -16
  157. package/libc/include/x86-linux-any/asm/unistd_32.h +1 -0
  158. package/libc/include/x86-linux-any/asm/unistd_64.h +1 -0
  159. package/libc/include/x86-linux-any/asm/unistd_x32.h +1 -0
  160. package/libc/include/xtensa-linux-any/asm/unistd_32.h +1 -0
  161. package/libc/musl/arch/mipsn32/syscall_arch.h +35 -32
  162. package/package.json +1 -1
  163. package/std/Build/Cache.zig +6 -6
  164. package/std/Build/Step/Compile.zig +0 -1
  165. package/std/Build/Step/Run.zig +2 -2
  166. package/std/Build/Step.zig +2 -4
  167. package/std/Build/WebServer.zig +2 -2
  168. package/std/Build.zig +0 -3
  169. package/std/Io/Dir.zig +7 -2
  170. package/std/Io/Dispatch.zig +3 -13
  171. package/std/Io/File/Writer.zig +8 -6
  172. package/std/Io/Reader.zig +8 -9
  173. package/std/Io/Semaphore.zig +112 -17
  174. package/std/Io/Terminal.zig +1 -1
  175. package/std/Io/Threaded.zig +171 -37
  176. package/std/Io/Uring.zig +13 -15
  177. package/std/Io/Writer.zig +46 -42
  178. package/std/Io/net.zig +11 -11
  179. package/std/Io.zig +90 -26
  180. package/std/SemanticVersion.zig +1 -1
  181. package/std/Target/Query.zig +2 -2
  182. package/std/Target.zig +50 -5
  183. package/std/array_hash_map.zig +9 -18
  184. package/std/builtin.zig +4 -0
  185. package/std/c/haiku.zig +3 -0
  186. package/std/c/serenity.zig +1 -6
  187. package/std/c.zig +89 -7
  188. package/std/compress/flate/Decompress.zig +2 -3
  189. package/std/compress/zstd/Decompress.zig +2 -4
  190. package/std/crypto/Certificate.zig +13 -1
  191. package/std/crypto/ascon.zig +75 -33
  192. package/std/crypto/codecs/asn1/Oid.zig +12 -1
  193. package/std/crypto/codecs/base64_hex_ct.zig +2 -4
  194. package/std/crypto/ml_kem.zig +2 -9
  195. package/std/crypto/tls/Client.zig +79 -4
  196. package/std/crypto/tls.zig +1 -1
  197. package/std/crypto.zig +1 -0
  198. package/std/debug/Pdb.zig +1 -1
  199. package/std/debug.zig +4 -3
  200. package/std/fmt.zig +8 -3
  201. package/std/fs/path.zig +6 -4
  202. package/std/heap/BufferFirstAllocator.zig +165 -0
  203. package/std/heap.zig +2 -126
  204. package/std/http/Client.zig +21 -24
  205. package/std/http.zig +3 -4
  206. package/std/json/Scanner.zig +2 -2
  207. package/std/os/emscripten.zig +1 -1
  208. package/std/os/linux/IoUring.zig +2 -0
  209. package/std/os/linux/aarch64.zig +41 -12
  210. package/std/os/linux/arc.zig +173 -0
  211. package/std/os/linux/arm.zig +41 -12
  212. package/std/os/linux/hexagon.zig +33 -11
  213. package/std/os/linux/loongarch32.zig +41 -13
  214. package/std/os/linux/loongarch64.zig +41 -12
  215. package/std/os/linux/m68k.zig +41 -13
  216. package/std/os/linux/mips.zig +67 -36
  217. package/std/os/linux/mips64.zig +60 -29
  218. package/std/os/linux/mipsn32.zig +60 -29
  219. package/std/os/linux/or1k.zig +41 -12
  220. package/std/os/linux/powerpc.zig +41 -12
  221. package/std/os/linux/powerpc64.zig +41 -12
  222. package/std/os/linux/riscv32.zig +41 -12
  223. package/std/os/linux/riscv64.zig +41 -12
  224. package/std/os/linux/s390x.zig +44 -7
  225. package/std/os/linux/sparc64.zig +83 -52
  226. package/std/os/linux/syscalls.zig +26 -1
  227. package/std/os/linux/thumb.zig +52 -36
  228. package/std/os/linux/x32.zig +41 -12
  229. package/std/os/linux/x86.zig +42 -13
  230. package/std/os/linux/x86_64.zig +41 -12
  231. package/std/os/linux.zig +412 -436
  232. package/std/os/uefi/tables/boot_services.zig +9 -8
  233. package/std/os.zig +41 -0
  234. package/std/process.zig +1 -1
  235. package/std/sort.zig +3 -3
  236. package/std/zig/Ast/Render.zig +3 -3
  237. package/std/zig/AstGen.zig +44 -98
  238. package/std/zig/AstRlAnnotate.zig +0 -11
  239. package/std/zig/BuiltinFn.zig +0 -32
  240. package/std/zig/LibCInstallation.zig +4 -3
  241. package/std/zig/Parse.zig +7 -7
  242. package/std/zig/WindowsSdk.zig +13 -13
  243. package/std/zig/Zir.zig +50 -63
  244. package/std/zig/ZonGen.zig +6 -5
  245. package/std/zig/llvm/Builder.zig +12 -12
  246. package/std/zig.zig +1 -10
  247. package/std/zip.zig +5 -5
  248. package/zig.h +340 -1
  249. package/libc/include/hexagon-linux-any/asm/signal.h +0 -29
  250. package/libc/include/s390x-linux-any/asm/tape390.h +0 -103
  251. package/libc/mingw/math/fdiml.c +0 -24
  252. package/libc/mingw/winpthreads/spinlock.c +0 -82
  253. package/libc/musl/src/linux/tee.c +0 -8
  254. package/libc/musl/src/math/fdimf.c +0 -10
  255. package/libc/musl/src/math/fdiml.c +0 -18
  256. package/libc/musl/src/string/strdup.c +0 -10
  257. package/libc/musl/src/string/strndup.c +0 -12
  258. package/libc/musl/src/string/wcsdup.c +0 -10
  259. package/libc/musl/src/thread/pthread_spin_destroy.c +0 -6
  260. package/libc/musl/src/thread/pthread_spin_init.c +0 -6
  261. package/libc/musl/src/thread/pthread_spin_lock.c +0 -8
  262. package/libc/musl/src/thread/pthread_spin_trylock.c +0 -7
  263. package/libc/musl/src/thread/pthread_spin_unlock.c +0 -7
  264. package/libc/musl/src/unistd/dup2.c +0 -20
  265. package/libc/musl/src/unistd/dup3.c +0 -26
  266. package/libc/wasi/thread-stub/pthread_spin_lock.c +0 -8
  267. package/libc/wasi/thread-stub/pthread_spin_trylock.c +0 -8
  268. package/libc/wasi/thread-stub/pthread_spin_unlock.c +0 -7
@@ -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 fn syscall_pipe(fd: *[2]i32) u64 {
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 syscall_fork() u64 {
26
- // Linux/sparc64 fork() returns two values in %o0 and %o1:
27
- // - On the parent's side, %o0 is the child's PID and %o1 is 0.
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(SYS.fork)),
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 syscall0(number: SYS) u64 {
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 syscall1(number: SYS, arg1: u64) u64 {
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 syscall2(number: SYS, arg1: u64, arg2: u64) u64 {
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 syscall3(number: SYS, arg1: u64, arg2: u64, arg3: u64) u64 {
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 syscall4(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64) u64 {
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 syscall5(number: SYS, arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) u64 {
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 syscall6(
135
- number: SYS,
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(number)),
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: 6.19.0
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
  };
@@ -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 fn syscall0(number: SYS) u32 {
10
- var buf: [2]u32 = .{ @intFromEnum(number), undefined };
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(number: SYS, arg1: u32) u32 {
22
- var buf: [2]u32 = .{ @intFromEnum(number), undefined };
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(number: SYS, arg1: u32, arg2: u32) u32 {
35
- var buf: [2]u32 = .{ @intFromEnum(number), undefined };
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(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 {
49
- var buf: [2]u32 = .{ @intFromEnum(number), undefined };
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(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 {
64
- var buf: [2]u32 = .{ @intFromEnum(number), undefined };
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(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u32) u32 {
80
- var buf: [2]u32 = .{ @intFromEnum(number), undefined };
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: u32,
99
- arg2: u32,
100
- arg3: u32,
101
- arg4: u32,
102
- arg5: u32,
103
- arg6: u32,
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]u32 = .{ @intFromEnum(number), undefined };
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 = @import("arm.zig").clone;
152
+ pub const clone = arm.clone;
123
153
 
124
- pub fn restore() callconv(.naked) noreturn {
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 fn restore_rt() callconv(.naked) noreturn {
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;
@@ -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 fn syscall0(number: SYS) u32 {
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(number: SYS, arg1: u32) u32 {
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(number: SYS, arg1: u32, arg2: u32) u32 {
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(number: SYS, arg1: u32, arg2: u32, arg3: u32) u32 {
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(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32) u32 {
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(number: SYS, arg1: u32, arg2: u32, arg3: u32, arg4: u32, arg5: u32) u32 {
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: u32,
65
- arg2: u32,
66
- arg3: u32,
67
- arg4: u32,
68
- arg5: u32,
69
- arg6: u32,
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),