mirror of
https://github.com/rdmsr/zag.git
synced 2026-11-01 23:58:21 +00:00
refactor: rework init
This commit is contained in:
@@ -42,8 +42,8 @@ pub export var cmdline_request: limine.CmdlineRequest linksection(".limine_reque
|
||||
.response = null,
|
||||
};
|
||||
|
||||
pub export var kernel_address_request: limine.KernelAddressRequest linksection(".limine_requests") = .{
|
||||
.id = limine.kernel_address_request_id,
|
||||
pub export var kernel_address_request: limine.ExecutableAddressRequest linksection(".limine_requests") = .{
|
||||
.id = limine.executable_address_request_id,
|
||||
.revision = 0,
|
||||
.response = null,
|
||||
};
|
||||
@@ -76,26 +76,14 @@ fn build_memory_map() void {
|
||||
}
|
||||
|
||||
export fn kmain() callconv(.c) void {
|
||||
boot_info.cmdline = if (cmdline_request.response) |cmdline_response| {
|
||||
cmdline_response.cmdline;
|
||||
} else {
|
||||
null;
|
||||
};
|
||||
boot_info.cmdline = if (cmdline_request.response) |cmdline_response| std.mem.span(cmdline_response.cmdline) else null;
|
||||
|
||||
boot_info.rsdp = if (rsdp_request.response) |rsdp_response| {
|
||||
rsdp_response.rsdp;
|
||||
} else {
|
||||
0;
|
||||
};
|
||||
boot_info.rsdp = if (rsdp_request.response) |rsdp_response| @intFromPtr(rsdp_response.rsdp) else null;
|
||||
|
||||
boot_info.kernel_address = if (kernel_address_request.response) |ka_response| {
|
||||
.{
|
||||
.physical_base = ka_response.kernel_address.physical_base,
|
||||
.virtual_base = ka_response.kernel_address.virtual_base,
|
||||
};
|
||||
} else {
|
||||
.{ .physical_base = 0, .virtual_base = 0 };
|
||||
};
|
||||
boot_info.kernel_address = if (kernel_address_request.response) |ka_response| .{
|
||||
.physical_base = ka_response.physical_base,
|
||||
.virtual_base = ka_response.virtual_base,
|
||||
} else .{ .physical_base = 0, .virtual_base = 0 };
|
||||
|
||||
build_memory_map();
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ pub const RsdpRequest = extern struct {
|
||||
|
||||
pub const RsdpResponse = extern struct {
|
||||
revision: u64,
|
||||
rsdp_address: ?*anyopaque,
|
||||
rsdp: ?*anyopaque,
|
||||
};
|
||||
|
||||
pub const cmdline_request_id: [4]u64 = .{
|
||||
@@ -97,7 +97,7 @@ pub const CmdlineRequest = extern struct {
|
||||
|
||||
pub const CmdlineResponse = extern struct {
|
||||
revision: u64,
|
||||
cmdline: ?[*]u8,
|
||||
cmdline: ?[*:0]u8,
|
||||
};
|
||||
|
||||
pub const executable_address_request_id: [4]u64 = .{
|
||||
|
||||
@@ -70,7 +70,7 @@ pub const BootInfo = struct {
|
||||
pub const KernelAddress = struct { physical_base: usize, virtual_base: usize };
|
||||
|
||||
/// RSDP on ACPI machines
|
||||
rsdp: usize,
|
||||
rsdp: ?usize,
|
||||
|
||||
/// Kernel command-line arguments
|
||||
cmdline: ?[]const u8,
|
||||
|
||||
Reference in New Issue
Block a user