hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/boot/serial.zig
diff options
context:
space:
mode:
Diffstat (limited to 'boot/serial.zig')
-rw-r--r--boot/serial.zig28
1 files changed, 28 insertions, 0 deletions
diff --git a/boot/serial.zig b/boot/serial.zig
index 4863864..2e8c8d0 100644
--- a/boot/serial.zig
+++ b/boot/serial.zig
@@ -48,3 +48,31 @@ fn putc(c: u8) void {
pub fn write(s: []const u8) void {
for (s) |c| putc(c);
}
+
+// dump a u64 as decimal. handy for "usable: N MiB" type logging.
+pub fn writeDec(value: u64) void {
+ if (value == 0) return putc('0');
+ var buf: [20]u8 = undefined;
+ var i: usize = buf.len;
+ var v = value;
+ while (v > 0) {
+ i -= 1;
+ buf[i] = '0' + @as(u8, @intCast(v % 10));
+ v /= 10;
+ }
+ write(buf[i..]);
+}
+
+// dump a u64 as 0x-prefixed 16-digit hex.
+pub fn writeHex(value: u64) void {
+ const digits = "0123456789abcdef";
+ var buf: [18]u8 = undefined;
+ buf[0] = '0';
+ buf[1] = 'x';
+ var i: usize = 0;
+ while (i < 16) : (i += 1) {
+ const shift: u6 = @intCast((15 - i) * 4);
+ buf[2 + i] = digits[(value >> shift) & 0xF];
+ }
+ write(&buf);
+}