+2
-1
assets/limine.conf
+2
-1
assets/limine.conf
+12
-5
build.zig
+12
-5
build.zig
···
···
+3
-4
build.zig.zon
+3
-4
build.zig.zon
···-.url = "git+https://codeberg.org/Limine/Limine?ref=v9.x-binary#acf1e35c4685dba7ef271013db375a727c340ff7",
···+.url = "git+https://codeberg.org/Limine/Limine?ref=v10.x-binary#648e33afd153bdbf780ba123e45997428796395d",
+2
components/root_server/build.zig
+2
components/root_server/build.zig
···const arch = b.option(build_helpers.Architecture, "arch", "The target root_server architecture") orelse .amd64;···
···const arch = b.option(build_helpers.Architecture, "arch", "The target root_server architecture") orelse .amd64;···
+8
-4
components/root_server/src/main.zig
+8
-4
components/root_server/src/main.zig
···
···
+1
-1
components/ukernel/arch/aarch64/boot.zig
+1
-1
components/ukernel/arch/aarch64/boot.zig
+58
-190
components/ukernel/arch/amd64/boot.zig
+58
-190
components/ukernel/arch/amd64/boot.zig
······pub export var mp: limine.SmpMpFeature.MpRequest linksection(".limine_reqs") = .{ .flags = .{ .x2apic = true } };······-const star_value: u64 = 0 | @as(u64, arch.structures.gdt.StandardGdt.selectors.kernel_code) << 32 | (@as(u64, arch.structures.gdt.StandardGdt.selectors.tss_desc + 8) | 3) << 48;-log.info("usercode64 GDT 0x{x}, userdata64 GDT 0x{x}", .{ arch.structures.gdt.StandardGdt.selectors.user_code, arch.structures.gdt.StandardGdt.selectors.user_data });···
······pub export var mp: limine.SmpMpFeature.MpRequest linksection(".limine_reqs") = .{ .flags = .{ .x2apic = true } };·········+const tasks_buf: [*]arch.structures.Task = @ptrFromInt(common.init_data.bootmem.allocMem(std.heap.pageSize()) catch {+const tasks_scratch: []arch.structures.Task = tasks_buf[0 .. std.heap.pageSize() / @sizeOf(arch.structures.Task)];
+32
-2
components/ukernel/arch/amd64/instructions/cpuid.zig
+32
-2
components/ukernel/arch/amd64/instructions/cpuid.zig
···
···
+6
-3
components/ukernel/arch/amd64/instructions/root.zig
+6
-3
components/ukernel/arch/amd64/instructions/root.zig
+60
-12
components/ukernel/arch/amd64/interrupts/apic.zig
+60
-12
components/ukernel/arch/amd64/interrupts/apic.zig
···············-pub fn spurious_interrupt_handler(_: *arch.interrupts.idt.InterruptFrame(u64)) callconv(.{ .x86_64_sysv = .{} }) void {-pub fn periodic_handler(stack_trace: *arch.interrupts.idt.InterruptFrame(u64)) callconv(.{ .x86_64_sysv = .{} }) void {
·········+arch.interrupts.idt.add_handler(.{ .interrupt = 0xFF }, u64, spurious_interrupt_handler, 0, 0);······
+16
-12
components/ukernel/arch/amd64/interrupts/idt.zig
+16
-12
components/ukernel/arch/amd64/interrupts/idt.zig
···-const DefinedHandler = *const fn (*InterruptFrame(u64)) callconv(.{ .x86_64_sysv = .{} }) void;············-add_handler(.{ .exception = .general_protection_fault }, arch.interrupts.general_protection_fault, 3, 0);···
··················+pub fn add_handler(interrupt: Interrupt, comptime E: type, handler: InterruptHandler(E), dpl: u2, ist: u3) void {
+3
-2
components/ukernel/arch/amd64/interrupts/pic.zig
+3
-2
components/ukernel/arch/amd64/interrupts/pic.zig
·········-pub fn spurious_handler(_: *arch.interrupts.idt.InterruptFrame(u64)) callconv(.{ .x86_64_sysv = .{} }) void {
·········
+149
-6
components/ukernel/arch/amd64/interrupts/root.zig
+149
-6
components/ukernel/arch/amd64/interrupts/root.zig
······-pub fn unhandled_interrupt(stack_frame: *idt.InterruptFrame(u64)) callconv(.{ .x86_64_sysv = .{} }) void {-std.log.err("Unhandled interrupt (0x{x})!!! rip = 0x{x}", .{ stack_frame.int_num.interrupt, stack_frame.rip });-pub fn breakpoint(stack_frame: *idt.InterruptFrame(u64)) callconv(.{ .x86_64_sysv = .{} }) void {-pub fn double_fault(stack_frame: *idt.InterruptFrame(u64)) callconv(.{ .x86_64_sysv = .{} }) void {-pub fn general_protection_fault(stack_frame: *idt.InterruptFrame(idt.SelectorErrorCode)) callconv(.{ .x86_64_sysv = .{} }) void {-std.log.warn("General Protection Fault @ 0x{x} (Error Code {}), returning execution...", .{ stack_frame.rip, stack_frame.error_code });
······+const star_value: u64 = 0 | @as(u64, arch.structures.gdt.StandardGdt.selectors.kernel_code) << 32 | (@as(u64, arch.structures.gdt.StandardGdt.selectors.tss_desc + 8) | 3) << 48;+std.log.err("RAX: 0x{x:0>16}, RBX: 0x{x:0>16}, RCX: 0x{x:0>16}, RDX: 0x{x:0>16}", .{ frame.regs.rax, frame.regs.rbx, frame.regs.rcx, frame.regs.rdx });+std.log.err("RSI: 0x{x:0>16}, RDI: 0x{x:0>16}, RBP: 0x{x:0>16}, RSP: 0x{x:0>16}", .{ frame.regs.rsi, frame.regs.rdi, frame.regs.rbp, frame.rsp });+std.log.err("R8: 0x{x:0>16}, R9: 0x{x:0>16}, R10: 0x{x:0>16}, R11: 0x{x:0>16}", .{ frame.regs.r8, frame.regs.r9, frame.regs.r10, frame.regs.r11 });+std.log.err("R12: 0x{x:0>16}, R13: 0x{x:0>16}, R14: 0x{x:0>16}, R15: 0x{x:0>16}", .{ frame.regs.r12, frame.regs.r13, frame.regs.r14, frame.regs.r15 });+std.log.err("RFL: 0x{x:0>16}, RIP: 0x{x:0>16}, CS: 0x{x:0>16}, SS: 0x{x:0>16}", .{ frame.eflags, frame.rip, frame.cs, frame.ss });+std.log.err("Unhandled interrupt (0x{x} : {s})!!!", .{ frame.int_num.interrupt, exception_name });+pub fn general_protection_fault(stack_frame: *idt.InterruptFrame(idt.SelectorErrorCode)) callconv(idt.CallConv) void {+idt.add_handler(.{ .exception = .general_protection_fault }, idt.SelectorErrorCode, arch.interrupts.general_protection_fault, 0, 0);+log.info("usercode64 GDT 0x{x}, userdata64 GDT 0x{x}", .{ arch.structures.gdt.StandardGdt.selectors.user_code, arch.structures.gdt.StandardGdt.selectors.user_data });
+24
-8
components/ukernel/arch/amd64/mm/paging.zig
+24
-8
components/ukernel/arch/amd64/mm/paging.zig
···············-pub fn page_fault_handler(stack_frame: *idt.InterruptFrame(u64)) callconv(.{ .x86_64_sysv = .{} }) void {
···············+pub fn page_fault_handler(stack_frame: *idt.InterruptFrame(u64)) callconv(idt.CallConv) void {+std.log.err("Error CR2: 0x{x:0>16}, Error Code: 0x{x:0>16}", .{ arch.registers.ControlRegisters.Cr2.read(), stack_frame.error_code });
+25
-18
components/ukernel/arch/amd64/root.zig
+25
-18
components/ukernel/arch/amd64/root.zig
······const buf: [*]u8 = @ptrFromInt(common.init_data.bootmem.allocMem(total_required_size) catch |err| {const tss_buf: [*]Tss = @ptrCast(@alignCast(buf[gdt_size * cpu_count ..][0 .. tss_size * cpu_count]));
······const buf: [*]u8 = @ptrFromInt(common.init_data.bootmem.allocMem(total_required_size) catch |err| {const tss_buf: [*]Tss = @ptrCast(@alignCast(buf[gdt_size * cpu_count ..][0 .. tss_size * cpu_count]));
+24
components/ukernel/arch/amd64/structures/root.zig
+24
components/ukernel/arch/amd64/structures/root.zig
···
+4
components/ukernel/arch/amd64/tsc.zig
+4
components/ukernel/arch/amd64/tsc.zig
······
+14
-19
components/ukernel/build.zig
+14
-19
components/ukernel/build.zig
······
······
+4
-3
components/ukernel/build.zig.zon
+4
-3
components/ukernel/build.zig.zon
···-.url = "git+https://tangled.sh/@sydney.blue/flanterm.zig?ref=trunk#8071c825750c415b9e5502cdff34efc9c6dfeab7",
···+.url = "git+https://tangled.org/@sydney.blue/Queue.zig?ref=dev#6c0760e8a233c1d59554a40a87f0ef293a9697f3",
-108
components/ukernel/common/aux/root.zig
-108
components/ukernel/common/aux/root.zig
···-const buf = std.fmt.bufPrint(backing_buf[0..], color.esc_seq() ++ prefix ++ format ++ color_default.esc_seq() ++ "\n", args) catch return;
···
+83
components/ukernel/common/aux.zig
+83
components/ukernel/common/aux.zig
···
···+const canvas: [*]u8 = @ptrFromInt(common.init_data.bootmem.allocMem(fb.width * fb.height * fb.bypp) catch @panic("Couldn't allocate a canvas"));
+4
-5
components/ukernel/common/loader.zig
+4
-5
components/ukernel/common/loader.zig
······
······
-1
components/ukernel/common/mm/bootmem.zig
-1
components/ukernel/common/mm/bootmem.zig
+3
-2
components/ukernel/common/mm/paging.zig
+3
-2
components/ukernel/common/mm/paging.zig
·········
·········
+81
-2
components/ukernel/common/root.zig
+81
-2
components/ukernel/common/root.zig
···
+16
components/ukernel/common/scheduler.zig
+16
components/ukernel/common/scheduler.zig
···
···
+6
components/ukernel/deps/console/build.zig
+6
components/ukernel/deps/console/build.zig
+13
components/ukernel/deps/console/build.zig.zon
+13
components/ukernel/deps/console/build.zig.zon
···
···
+24
components/ukernel/deps/console/flake.lock
+24
components/ukernel/deps/console/flake.lock
···
···+"url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre861040.6d7ec06d6868/nixexprs.tar.xz?rev=6d7ec06d6868ac6d94c371458fc2391ded9ff13d"
+23
components/ukernel/deps/console/flake.nix
+23
components/ukernel/deps/console/flake.nix
···
···
+24
components/ukernel/deps/console/src/fonts/LICENSE.spleen
+24
components/ukernel/deps/console/src/fonts/LICENSE.spleen
···
···
components/ukernel/deps/console/src/fonts/spleen-12x24.psf
components/ukernel/deps/console/src/fonts/spleen-12x24.psf
This is a binary file and will not be displayed.
+39
components/ukernel/deps/console/src/psf2.zig
+39
components/ukernel/deps/console/src/psf2.zig
···
···+const startpos: u64 = @as(u64, hdr.header_size) + @as(u64, ch) * @as(u64, hdr.bytes_per_glyph);+if (self.fontdata.len < startpos + @as(u64, hdr.bytes_per_glyph)) return error.InvalidCharacter;
+290
components/ukernel/deps/console/src/root.zig
+290
components/ukernel/deps/console/src/root.zig
···
···+const src_buf = self.canvas[canvas_pitch * glyph_height * start_line ..][0 .. canvas_pitch * glyph_height * num_lines];+const dst_buf = byte_fb[self.fb.pitch * glyph_height * start_line ..][0 .. self.fb.pitch * glyph_height * num_lines];+fn putchar(self: *const Console, ch: u8, x_pos: usize, y_pos: usize, fg_val: u32, bg_val: u32) !void {+var offset: usize = (y_pos * @as(usize, hdr.height) * canvas_pitch) + (x_pos * @as(usize, hdr.width) * self.fb.bypp);+const line_value: u32 = std.mem.readVarInt(u32, glyph[glyph_y * bytes_per_line ..][0..bytes_per_line], .big);+const src_buf = self.canvas[canvas_pitch * glyph_height ..][0 .. canvas_pitch * glyph_height * (self.y_chrs_max - 1)];+const last_line = self.canvas[canvas_pitch * glyph_height * (self.y_chrs_max - 1) ..][0 .. canvas_pitch * glyph_height];