authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-07-26 05:43:52+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-07-30 01:32:48+02:00
log6e7d619dc33c3b9968d6fccdd51661e22f9db5e6
treeeaf2254f618e3828b3d791cd32bc60693eb75557
parent4028762a9a7fed702e87622ed89800d87bfe7077
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

generate_linux_syscalls: Add generation code for s390x.


1 files changed, 20 insertions(+), 0 deletions(-)

tools/generate_linux_syscalls.zig+20
...@@ -298,6 +298,26 @@ pub fn main() !void {...@@ -298,6 +298,26 @@ pub fn main() !void {
298 try writer.writeAll(list_64.items);298 try writer.writeAll(list_64.items);
299 try writer.writeAll("};\n\n");299 try writer.writeAll("};\n\n");
300 }300 }
301 {
302 try writer.writeAll("pub const S390x = enum(usize) {\n");
303
304 const table = try linux_dir.readFile("arch/s390/kernel/syscalls/syscall.tbl", buf);
305 var lines = mem.tokenizeScalar(u8, table, '\n');
306 while (lines.next()) |line| {
307 if (line[0] == '#') continue;
308
309 var fields = mem.tokenizeAny(u8, line, " \t");
310 const number = fields.next() orelse return error.Incomplete;
311 const abi = fields.next() orelse return error.Incomplete;
312 if (mem.eql(u8, abi, "32")) continue; // 32-bit s390 support in linux is deprecated
313 const name = fields.next() orelse return error.Incomplete;
314 const fixed_name = if (stdlib_renames.get(name)) |fixed| fixed else name;
315
316 try writer.print(" {p} = {s},\n", .{ zig.fmtId(fixed_name), number });
317 }
318
319 try writer.writeAll("};\n\n");
320 }
301321
302 // Newer architectures (starting with aarch64 c. 2012) now use the same C322 // Newer architectures (starting with aarch64 c. 2012) now use the same C
303 // header file for their syscall numbers. Arch-specific headers are used to323 // header file for their syscall numbers. Arch-specific headers are used to