summaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/main.zig b/src/main.zig
new file mode 100644
index 0000000..7896a09
--- /dev/null
+++ b/src/main.zig
@@ -0,0 +1,39 @@
+const uart = @import("uart.zig");
+const mem = @import("mem.zig");
+const std = @import("std");
+
+fn logFn(
+ comptime message_level: std.log.Level,
+ comptime scope: @EnumLiteral(),
+ comptime format: []const u8,
+ args: anytype,
+) void {
+ return std.log.defaultLogFileTerminal(
+ message_level,
+ scope,
+ format,
+ args,
+ uart.terminal,
+ ) catch {};
+}
+
+pub const std_options: std.Options = .{
+ .logFn = logFn,
+ .page_size_max = 4096,
+ .page_size_min = 4096,
+};
+
+pub const panic = std.debug.FullPanic(panicFn);
+
+fn panicFn(msg: []const u8, first_trace_addr: ?usize) noreturn {
+ std.log.err("kernel panic at {?}", .{first_trace_addr});
+ std.log.err("{s}", .{msg});
+ while (true) {}
+}
+
+export fn kmain() callconv(.c) noreturn {
+ uart.init(0x1000_0000);
+ std.log.info("hello, world", .{});
+ mem.init();
+ while (true) {}
+}