mirror of https://github.com/tailix/kernel.git
Initialize kernel info
This commit is contained in:
parent
a1b9dadd1f
commit
06935b2e53
|
@ -4,9 +4,26 @@
|
|||
|
||||
static bool cmdline_terminated(const char *s);
|
||||
|
||||
void kernel_info_initialize(struct Kernel_Info *const kinfo)
|
||||
{
|
||||
void kernel_info_initialize(
|
||||
struct Kernel_Info *const kinfo,
|
||||
const size_t offset,
|
||||
const size_t size,
|
||||
const size_t phys_base,
|
||||
const size_t virt_base,
|
||||
const size_t stack_top
|
||||
) {
|
||||
memset(kinfo, 0, sizeof(*kinfo));
|
||||
|
||||
kinfo->kernel_offset = offset;
|
||||
kinfo->kernel_size = size;
|
||||
|
||||
kinfo->kernel_phys_base = phys_base;
|
||||
kinfo->kernel_virt_base = virt_base;
|
||||
|
||||
kinfo->kernel_phys_limit = phys_base + size - 1;
|
||||
kinfo->kernel_virt_limit = virt_base + size - 1;
|
||||
|
||||
kinfo->kernel_stack_top = stack_top;
|
||||
}
|
||||
|
||||
bool kernel_info_validate(const struct Kernel_Info *const kinfo)
|
||||
|
|
|
@ -57,7 +57,15 @@ struct Kernel_Info {
|
|||
size_t kernel_stack_top;
|
||||
};
|
||||
|
||||
void kernel_info_initialize(struct Kernel_Info *kinfo);
|
||||
void kernel_info_initialize(
|
||||
struct Kernel_Info *kinfo,
|
||||
size_t offset,
|
||||
size_t size,
|
||||
size_t phys_base,
|
||||
size_t virt_base,
|
||||
size_t stack_top
|
||||
);
|
||||
|
||||
bool kernel_info_validate(const struct Kernel_Info *kinfo);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -41,20 +41,17 @@ void main(
|
|||
panic("Multiboot 2 info is invalid.");
|
||||
}
|
||||
|
||||
kernel_info_initialize(&kinfo);
|
||||
kernel_info_initialize(
|
||||
&kinfo,
|
||||
(size_t)&_kernel_offset,
|
||||
(size_t)&_kernel_size,
|
||||
(size_t)&_kernel_phys_base,
|
||||
(size_t)&_kernel_virt_base,
|
||||
(size_t)&_kernel_stack_top
|
||||
);
|
||||
|
||||
KernAux_PFA_initialize(&pfa);
|
||||
|
||||
kinfo.kernel_offset = (unsigned long)&_kernel_offset;
|
||||
kinfo.kernel_size = (unsigned long)&_kernel_size;
|
||||
|
||||
kinfo.kernel_phys_base = (unsigned long)&_kernel_phys_base;
|
||||
kinfo.kernel_virt_base = (unsigned long)&_kernel_virt_base;
|
||||
|
||||
kinfo.kernel_phys_limit = kinfo.kernel_phys_base + kinfo.kernel_size - 1;
|
||||
kinfo.kernel_virt_limit = kinfo.kernel_virt_base + kinfo.kernel_size - 1;
|
||||
|
||||
kinfo.kernel_stack_top = (unsigned long)&_kernel_stack_top;
|
||||
|
||||
{
|
||||
const char *const cmdline =
|
||||
KernAux_Multiboot2_boot_cmd_line(multiboot2_info);
|
||||
|
|
Loading…
Reference in New Issue