From 8ba737656affaec3eb1f7e88649246b5e01593d6 Mon Sep 17 00:00:00 2001 From: Riccardo Binetti Date: Thu, 19 May 2022 09:14:59 +0200 Subject: [PATCH] Add support for dimensioned register fields (#20) Signed-off-by: Riccardo Binetti --- tools/regz/src/Database.zig | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tools/regz/src/Database.zig b/tools/regz/src/Database.zig index 0a71f95..548ed96 100644 --- a/tools/regz/src/Database.zig +++ b/tools/regz/src/Database.zig @@ -1127,9 +1127,14 @@ fn genZigFields( try writer.print("{s}: u{},\n", .{ std.zig.fmtId(name), field.width }); expected_bit += field.width; }, - .num => { - std.log.warn("dimensioned register fields not supported yet: {s}", .{field.name}); - assert(false); + .num => |num| { + var i: usize = 0; + while (i < num) : (i += 1) { + const idx = try std.fmt.allocPrint(self.arena.allocator(), "{}", .{i}); + const name = try std.mem.replaceOwned(u8, self.arena.allocator(), field.name, "%s", idx); + try writer.print("{s}: u{},\n", .{ std.zig.fmtId(name), field.width }); + expected_bit += field.width; + } }, } else { var i: usize = 0;