mirror of
https://github.com/rdmsr/zag.git
synced 2026-10-27 13:58:20 +00:00
refactor(mm): rework how map_kernel is defined
This commit is contained in:
+5
-10
@@ -4,17 +4,14 @@ const mm = r.mm;
|
||||
const mi = mm.private;
|
||||
const config = @import("config");
|
||||
|
||||
const is_um = @hasDecl(config, "CONFIG_ARCH_UM");
|
||||
|
||||
pub const map_kernel = if (!is_um)
|
||||
struct {
|
||||
extern var text_start_addr: u8;
|
||||
extern var text_end_addr: u8;
|
||||
extern var rodata_start_addr: u8;
|
||||
extern var rodata_end_addr: u8;
|
||||
extern var data_start_addr: u8;
|
||||
extern var data_end_addr: u8;
|
||||
pub fn call(boot_info: *pl.BootInfo) void {
|
||||
|
||||
fn map_kernel(boot_info: *pl.BootInfo) void {
|
||||
const kaddr = boot_info.kernel_address;
|
||||
|
||||
const text_start = @intFromPtr(&text_start_addr);
|
||||
@@ -31,6 +28,7 @@ pub const map_kernel = if (!is_um)
|
||||
const start_phys = kaddr.physical_base;
|
||||
const start_virt = kaddr.virtual_base;
|
||||
const until_size = text_start - start_virt;
|
||||
|
||||
mi.kernel_pmap.map_contiguous_range(start_virt, start_phys, until_size, .{
|
||||
.read = true,
|
||||
.write = true,
|
||||
@@ -90,15 +88,12 @@ pub const map_kernel = if (!is_um)
|
||||
});
|
||||
}
|
||||
}
|
||||
}.call
|
||||
else
|
||||
struct {
|
||||
pub fn call(_: *pl.BootInfo) void {}
|
||||
}.call;
|
||||
|
||||
pub fn init(boot_info: *pl.BootInfo) linksection(r.init) void {
|
||||
mi.phys.init(boot_info);
|
||||
if (!@hasDecl(config, "CONFIG_ARCH_UM")) {
|
||||
map_kernel(boot_info);
|
||||
}
|
||||
mi.kernel_pmap.activate();
|
||||
mi.phys.init_pfndb();
|
||||
mi.zone.early_init();
|
||||
|
||||
Reference in New Issue
Block a user