| ... | @@ -338,6 +338,26 @@ pub fn main() !void { | ... | @@ -338,6 +338,26 @@ pub fn main() !void { |
| 338 | | 338 | |
| 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 | } |
| 341 | | 361 | |
| 342 | // Newer architectures (starting with aarch64 c. 2012) now use the same C | 362 | // Newer architectures (starting with aarch64 c. 2012) now use the same C |
| 343 | // header file for their syscall numbers. Arch-specific headers are used to | 363 | // header file for their syscall numbers. Arch-specific headers are used to |