From 34255d6c68f8a1e9afd2f136ef335cbba21d8044 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Thu, 20 Feb 2025 17:57:50 +0100 Subject: [PATCH] core: Give init a pointer to its own page tables --- core/src/arch/x86_64/thread.zig | 5 +++-- core/src/main.zig | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/core/src/arch/x86_64/thread.zig b/core/src/arch/x86_64/thread.zig index 60fbd4f..ae89acf 100644 --- a/core/src/arch/x86_64/thread.zig +++ b/core/src/arch/x86_64/thread.zig @@ -51,8 +51,9 @@ pub fn setAddress(regs: *interrupts.InterruptStackFrame, address: u64) void { regs.rip = address; } -pub fn setArgument(regs: *interrupts.InterruptStackFrame, argument: u64) void { - regs.rdi = argument; +pub fn setArguments(regs: *interrupts.InterruptStackFrame, arg0: u64, arg1: u64) void { + regs.rdi = arg0; + regs.rsi = arg1; } pub fn setStack(regs: *interrupts.InterruptStackFrame, stack: u64) void { diff --git a/core/src/main.zig b/core/src/main.zig index 7b88bee..30db693 100644 --- a/core/src/main.zig +++ b/core/src/main.zig @@ -71,7 +71,7 @@ export fn _start(magic: u32, info: MultibootInfo) callconv(.C) noreturn { init.mapper = mapper; init.user_priority = 255; thread.arch.initUserRegisters(&init.regs); - thread.arch.setArgument(&init.regs, base); + thread.arch.setArguments(&init.regs, base, mapper.phys.address); const ctx = Context{ .allocator = &allocator, .mapper = mapper, .regs = &init.regs };