authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-07-26 05:49:43+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-07-30 01:32:48+02:00
log264b83096411f0fb948cd399ef99c4f4883a838d
tree08f3e7dfd40cd7dd390abd0cf01b5757ddc96420
parent09914868ea552167130e06977aee689b8be989f0
signature Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

generate_linux_syscalls: Add generation code for xtensa.


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

tools/generate_linux_syscalls.zig+20
...@@ -338,6 +338,26 @@ pub fn main() !void {...@@ -338,6 +338,26 @@ pub fn main() !void {
338338
339 try writer.writeAll("};\n\n");339 try writer.writeAll("};\n\n");
340 }340 }
341 {
342 try writer.writeAll("pub const Xtensa = enum(usize) {\n");
343
344 const table = try linux_dir.readFile("arch/xtensa/kernel/syscalls/syscall.tbl", buf);
345 var lines = mem.tokenizeScalar(u8, table, '\n');
346 while (lines.next()) |line| {
347 if (line[0] == '#') continue;
348
349 var fields = mem.tokenizeAny(u8, line, " \t");
350 const number = fields.next() orelse return error.Incomplete;
351 // abi is always common
352 _ = fields.next() orelse return error.Incomplete;
353 const name = fields.next() orelse return error.Incomplete;
354 const fixed_name = if (stdlib_renames.get(name)) |fixed| fixed else name;
355
356 try writer.print(" {p} = {s},\n", .{ zig.fmtId(fixed_name), number });
357 }
358
359 try writer.writeAll("};\n\n");
360 }
341361
342 // Newer architectures (starting with aarch64 c. 2012) now use the same C362 // Newer architectures (starting with aarch64 c. 2012) now use the same C
343 // header file for their syscall numbers. Arch-specific headers are used to363 // header file for their syscall numbers. Arch-specific headers are used to