| author | |
| committer | |
| log | 87150468fc25f2ad70abcc1428112bfb8d31843a |
| tree | bd972036fc484318721ddbd2d9016ab066ceca4e |
| parent | 95f0dce7dae258fc2cf9947fdaad26d768902373 |
2 files changed, 373 insertions(+), 0 deletions(-)
lib/std/os/linux/syscalls.zig+309| ... | ... | @@ -3911,3 +3911,312 @@ pub const RiscV64 = enum(usize) { |
| 3911 | 3911 | |
| 3912 | 3912 | riscv_flush_icache = arch_specific_syscall + 15, |
| 3913 | 3913 | }; |
| 3914 | ||
| 3915 | pub const LoongArch64 = enum(usize) { | |
| 3916 | io_setup = 0, | |
| 3917 | io_destroy = 1, | |
| 3918 | io_submit = 2, | |
| 3919 | io_cancel = 3, | |
| 3920 | io_getevents = 4, | |
| 3921 | setxattr = 5, | |
| 3922 | lsetxattr = 6, | |
| 3923 | fsetxattr = 7, | |
| 3924 | getxattr = 8, | |
| 3925 | lgetxattr = 9, | |
| 3926 | fgetxattr = 10, | |
| 3927 | listxattr = 11, | |
| 3928 | llistxattr = 12, | |
| 3929 | flistxattr = 13, | |
| 3930 | removexattr = 14, | |
| 3931 | lremovexattr = 15, | |
| 3932 | fremovexattr = 16, | |
| 3933 | getcwd = 17, | |
| 3934 | lookup_dcookie = 18, | |
| 3935 | eventfd2 = 19, | |
| 3936 | epoll_create1 = 20, | |
| 3937 | epoll_ctl = 21, | |
| 3938 | epoll_pwait = 22, | |
| 3939 | dup = 23, | |
| 3940 | dup3 = 24, | |
| 3941 | fcntl = 25, | |
| 3942 | inotify_init1 = 26, | |
| 3943 | inotify_add_watch = 27, | |
| 3944 | inotify_rm_watch = 28, | |
| 3945 | ioctl = 29, | |
| 3946 | ioprio_set = 30, | |
| 3947 | ioprio_get = 31, | |
| 3948 | flock = 32, | |
| 3949 | mknodat = 33, | |
| 3950 | mkdirat = 34, | |
| 3951 | unlinkat = 35, | |
| 3952 | symlinkat = 36, | |
| 3953 | linkat = 37, | |
| 3954 | umount2 = 39, | |
| 3955 | mount = 40, | |
| 3956 | pivot_root = 41, | |
| 3957 | nfsservctl = 42, | |
| 3958 | statfs = 43, | |
| 3959 | fstatfs = 44, | |
| 3960 | truncate = 45, | |
| 3961 | ftruncate = 46, | |
| 3962 | fallocate = 47, | |
| 3963 | faccessat = 48, | |
| 3964 | chdir = 49, | |
| 3965 | fchdir = 50, | |
| 3966 | chroot = 51, | |
| 3967 | fchmod = 52, | |
| 3968 | fchmodat = 53, | |
| 3969 | fchownat = 54, | |
| 3970 | fchown = 55, | |
| 3971 | openat = 56, | |
| 3972 | close = 57, | |
| 3973 | vhangup = 58, | |
| 3974 | pipe2 = 59, | |
| 3975 | quotactl = 60, | |
| 3976 | getdents64 = 61, | |
| 3977 | lseek = 62, | |
| 3978 | read = 63, | |
| 3979 | write = 64, | |
| 3980 | readv = 65, | |
| 3981 | writev = 66, | |
| 3982 | pread64 = 67, | |
| 3983 | pwrite64 = 68, | |
| 3984 | preadv = 69, | |
| 3985 | pwritev = 70, | |
| 3986 | sendfile = 71, | |
| 3987 | pselect6 = 72, | |
| 3988 | ppoll = 73, | |
| 3989 | signalfd4 = 74, | |
| 3990 | vmsplice = 75, | |
| 3991 | splice = 76, | |
| 3992 | tee = 77, | |
| 3993 | readlinkat = 78, | |
| 3994 | sync = 81, | |
| 3995 | fsync = 82, | |
| 3996 | fdatasync = 83, | |
| 3997 | sync_file_range = 84, | |
| 3998 | timerfd_create = 85, | |
| 3999 | timerfd_settime = 86, | |
| 4000 | timerfd_gettime = 87, | |
| 4001 | utimensat = 88, | |
| 4002 | acct = 89, | |
| 4003 | capget = 90, | |
| 4004 | capset = 91, | |
| 4005 | personality = 92, | |
| 4006 | exit = 93, | |
| 4007 | exit_group = 94, | |
| 4008 | waitid = 95, | |
| 4009 | set_tid_address = 96, | |
| 4010 | unshare = 97, | |
| 4011 | futex = 98, | |
| 4012 | set_robust_list = 99, | |
| 4013 | get_robust_list = 100, | |
| 4014 | nanosleep = 101, | |
| 4015 | getitimer = 102, | |
| 4016 | setitimer = 103, | |
| 4017 | kexec_load = 104, | |
| 4018 | init_module = 105, | |
| 4019 | delete_module = 106, | |
| 4020 | timer_create = 107, | |
| 4021 | timer_gettime = 108, | |
| 4022 | timer_getoverrun = 109, | |
| 4023 | timer_settime = 110, | |
| 4024 | timer_delete = 111, | |
| 4025 | clock_settime = 112, | |
| 4026 | clock_gettime = 113, | |
| 4027 | clock_getres = 114, | |
| 4028 | clock_nanosleep = 115, | |
| 4029 | syslog = 116, | |
| 4030 | ptrace = 117, | |
| 4031 | sched_setparam = 118, | |
| 4032 | sched_setscheduler = 119, | |
| 4033 | sched_getscheduler = 120, | |
| 4034 | sched_getparam = 121, | |
| 4035 | sched_setaffinity = 122, | |
| 4036 | sched_getaffinity = 123, | |
| 4037 | sched_yield = 124, | |
| 4038 | sched_get_priority_max = 125, | |
| 4039 | sched_get_priority_min = 126, | |
| 4040 | sched_rr_get_interval = 127, | |
| 4041 | restart_syscall = 128, | |
| 4042 | kill = 129, | |
| 4043 | tkill = 130, | |
| 4044 | tgkill = 131, | |
| 4045 | sigaltstack = 132, | |
| 4046 | rt_sigsuspend = 133, | |
| 4047 | rt_sigaction = 134, | |
| 4048 | rt_sigprocmask = 135, | |
| 4049 | rt_sigpending = 136, | |
| 4050 | rt_sigtimedwait = 137, | |
| 4051 | rt_sigqueueinfo = 138, | |
| 4052 | rt_sigreturn = 139, | |
| 4053 | setpriority = 140, | |
| 4054 | getpriority = 141, | |
| 4055 | reboot = 142, | |
| 4056 | setregid = 143, | |
| 4057 | setgid = 144, | |
| 4058 | setreuid = 145, | |
| 4059 | setuid = 146, | |
| 4060 | setresuid = 147, | |
| 4061 | getresuid = 148, | |
| 4062 | setresgid = 149, | |
| 4063 | getresgid = 150, | |
| 4064 | setfsuid = 151, | |
| 4065 | setfsgid = 152, | |
| 4066 | times = 153, | |
| 4067 | setpgid = 154, | |
| 4068 | getpgid = 155, | |
| 4069 | getsid = 156, | |
| 4070 | setsid = 157, | |
| 4071 | getgroups = 158, | |
| 4072 | setgroups = 159, | |
| 4073 | uname = 160, | |
| 4074 | sethostname = 161, | |
| 4075 | setdomainname = 162, | |
| 4076 | getrusage = 165, | |
| 4077 | umask = 166, | |
| 4078 | prctl = 167, | |
| 4079 | getcpu = 168, | |
| 4080 | gettimeofday = 169, | |
| 4081 | settimeofday = 170, | |
| 4082 | adjtimex = 171, | |
| 4083 | getpid = 172, | |
| 4084 | getppid = 173, | |
| 4085 | getuid = 174, | |
| 4086 | geteuid = 175, | |
| 4087 | getgid = 176, | |
| 4088 | getegid = 177, | |
| 4089 | gettid = 178, | |
| 4090 | sysinfo = 179, | |
| 4091 | mq_open = 180, | |
| 4092 | mq_unlink = 181, | |
| 4093 | mq_timedsend = 182, | |
| 4094 | mq_timedreceive = 183, | |
| 4095 | mq_notify = 184, | |
| 4096 | mq_getsetattr = 185, | |
| 4097 | msgget = 186, | |
| 4098 | msgctl = 187, | |
| 4099 | msgrcv = 188, | |
| 4100 | msgsnd = 189, | |
| 4101 | semget = 190, | |
| 4102 | semctl = 191, | |
| 4103 | semtimedop = 192, | |
| 4104 | semop = 193, | |
| 4105 | shmget = 194, | |
| 4106 | shmctl = 195, | |
| 4107 | shmat = 196, | |
| 4108 | shmdt = 197, | |
| 4109 | socket = 198, | |
| 4110 | socketpair = 199, | |
| 4111 | bind = 200, | |
| 4112 | listen = 201, | |
| 4113 | accept = 202, | |
| 4114 | connect = 203, | |
| 4115 | getsockname = 204, | |
| 4116 | getpeername = 205, | |
| 4117 | sendto = 206, | |
| 4118 | recvfrom = 207, | |
| 4119 | setsockopt = 208, | |
| 4120 | getsockopt = 209, | |
| 4121 | shutdown = 210, | |
| 4122 | sendmsg = 211, | |
| 4123 | recvmsg = 212, | |
| 4124 | readahead = 213, | |
| 4125 | brk = 214, | |
| 4126 | munmap = 215, | |
| 4127 | mremap = 216, | |
| 4128 | add_key = 217, | |
| 4129 | request_key = 218, | |
| 4130 | keyctl = 219, | |
| 4131 | clone = 220, | |
| 4132 | execve = 221, | |
| 4133 | mmap = 222, | |
| 4134 | fadvise64 = 223, | |
| 4135 | swapon = 224, | |
| 4136 | swapoff = 225, | |
| 4137 | mprotect = 226, | |
| 4138 | msync = 227, | |
| 4139 | mlock = 228, | |
| 4140 | munlock = 229, | |
| 4141 | mlockall = 230, | |
| 4142 | munlockall = 231, | |
| 4143 | mincore = 232, | |
| 4144 | madvise = 233, | |
| 4145 | remap_file_pages = 234, | |
| 4146 | mbind = 235, | |
| 4147 | get_mempolicy = 236, | |
| 4148 | set_mempolicy = 237, | |
| 4149 | migrate_pages = 238, | |
| 4150 | move_pages = 239, | |
| 4151 | rt_tgsigqueueinfo = 240, | |
| 4152 | perf_event_open = 241, | |
| 4153 | accept4 = 242, | |
| 4154 | recvmmsg = 243, | |
| 4155 | wait4 = 260, | |
| 4156 | prlimit64 = 261, | |
| 4157 | fanotify_init = 262, | |
| 4158 | fanotify_mark = 263, | |
| 4159 | name_to_handle_at = 264, | |
| 4160 | open_by_handle_at = 265, | |
| 4161 | clock_adjtime = 266, | |
| 4162 | syncfs = 267, | |
| 4163 | setns = 268, | |
| 4164 | sendmmsg = 269, | |
| 4165 | process_vm_readv = 270, | |
| 4166 | process_vm_writev = 271, | |
| 4167 | kcmp = 272, | |
| 4168 | finit_module = 273, | |
| 4169 | sched_setattr = 274, | |
| 4170 | sched_getattr = 275, | |
| 4171 | renameat2 = 276, | |
| 4172 | seccomp = 277, | |
| 4173 | getrandom = 278, | |
| 4174 | memfd_create = 279, | |
| 4175 | bpf = 280, | |
| 4176 | execveat = 281, | |
| 4177 | userfaultfd = 282, | |
| 4178 | membarrier = 283, | |
| 4179 | mlock2 = 284, | |
| 4180 | copy_file_range = 285, | |
| 4181 | preadv2 = 286, | |
| 4182 | pwritev2 = 287, | |
| 4183 | pkey_mprotect = 288, | |
| 4184 | pkey_alloc = 289, | |
| 4185 | pkey_free = 290, | |
| 4186 | statx = 291, | |
| 4187 | io_pgetevents = 292, | |
| 4188 | rseq = 293, | |
| 4189 | kexec_file_load = 294, | |
| 4190 | pidfd_send_signal = 424, | |
| 4191 | io_uring_setup = 425, | |
| 4192 | io_uring_enter = 426, | |
| 4193 | io_uring_register = 427, | |
| 4194 | open_tree = 428, | |
| 4195 | move_mount = 429, | |
| 4196 | fsopen = 430, | |
| 4197 | fsconfig = 431, | |
| 4198 | fsmount = 432, | |
| 4199 | fspick = 433, | |
| 4200 | pidfd_open = 434, | |
| 4201 | clone3 = 435, | |
| 4202 | close_range = 436, | |
| 4203 | openat2 = 437, | |
| 4204 | pidfd_getfd = 438, | |
| 4205 | faccessat2 = 439, | |
| 4206 | process_madvise = 440, | |
| 4207 | epoll_pwait2 = 441, | |
| 4208 | mount_setattr = 442, | |
| 4209 | quotactl_fd = 443, | |
| 4210 | landlock_create_ruleset = 444, | |
| 4211 | landlock_add_rule = 445, | |
| 4212 | landlock_restrict_self = 446, | |
| 4213 | process_mrelease = 448, | |
| 4214 | futex_waitv = 449, | |
| 4215 | set_mempolicy_home_node = 450, | |
| 4216 | cachestat = 451, | |
| 4217 | fchmodat2 = 452, | |
| 4218 | map_shadow_stack = 453, | |
| 4219 | futex_wake = 454, | |
| 4220 | futex_wait = 455, | |
| 4221 | futex_requeue = 456, | |
| 4222 | }; |
tools/generate_linux_syscalls.zig+64| ... | ... | @@ -362,6 +362,70 @@ pub fn main() !void { |
| 362 | 362 | \\ |
| 363 | 363 | ); |
| 364 | 364 | } |
| 365 | { | |
| 366 | try writer.writeAll( | |
| 367 | \\ | |
| 368 | \\pub const LoongArch64 = enum(usize) { | |
| 369 | \\ | |
| 370 | ); | |
| 371 | ||
| 372 | const child_args = [_][]const u8{ | |
| 373 | zig_exe, | |
| 374 | "cc", | |
| 375 | "-march=loongarch64", | |
| 376 | "-target", | |
| 377 | "loongarch64-linux-gnu", | |
| 378 | "-E", | |
| 379 | "-dD", | |
| 380 | "-P", | |
| 381 | "-nostdinc", | |
| 382 | "-Iinclude", | |
| 383 | "-Iinclude/uapi", | |
| 384 | "arch/loongarch/include/uapi/asm/unistd.h", | |
| 385 | }; | |
| 386 | ||
| 387 | const child_result = try std.process.Child.run(.{ | |
| 388 | .allocator = allocator, | |
| 389 | .argv = &child_args, | |
| 390 | .cwd = linux_path, | |
| 391 | .cwd_dir = linux_dir, | |
| 392 | }); | |
| 393 | if (child_result.stderr.len > 0) std.debug.print("{s}\n", .{child_result.stderr}); | |
| 394 | ||
| 395 | const defines = switch (child_result.term) { | |
| 396 | .Exited => |code| if (code == 0) child_result.stdout else { | |
| 397 | std.debug.print("zig cc exited with code {d}\n", .{code}); | |
| 398 | std.process.exit(1); | |
| 399 | }, | |
| 400 | else => { | |
| 401 | std.debug.print("zig cc crashed\n", .{}); | |
| 402 | std.process.exit(1); | |
| 403 | }, | |
| 404 | }; | |
| 405 | ||
| 406 | var lines = mem.tokenizeScalar(u8, defines, '\n'); | |
| 407 | loop: while (lines.next()) |line| { | |
| 408 | var fields = mem.tokenizeAny(u8, line, " \t"); | |
| 409 | const cmd = fields.next() orelse return error.Incomplete; | |
| 410 | if (!mem.eql(u8, cmd, "#define")) continue; | |
| 411 | const define = fields.next() orelse return error.Incomplete; | |
| 412 | const number = fields.next() orelse continue; | |
| 413 | ||
| 414 | if (!std.ascii.isDigit(number[0])) continue; | |
| 415 | if (!mem.startsWith(u8, define, "__NR")) continue; | |
| 416 | const name = mem.trimLeft(u8, mem.trimLeft(u8, define, "__NR3264_"), "__NR_"); | |
| 417 | if (mem.eql(u8, name, "arch_specific_syscall")) continue; | |
| 418 | if (mem.eql(u8, name, "syscalls")) break :loop; | |
| 419 | ||
| 420 | const fixed_name = if (stdlib_renames.get(name)) |fixed| fixed else name; | |
| 421 | try writer.print(" {p} = {s},\n", .{ zig.fmtId(fixed_name), number }); | |
| 422 | } | |
| 423 | ||
| 424 | try writer.writeAll( | |
| 425 | \\}; | |
| 426 | \\ | |
| 427 | ); | |
| 428 | } | |
| 365 | 429 | |
| 366 | 430 | try buf_out.flush(); |
| 367 | 431 | } |