Make sure all multiboot tags are preserved
This commit is contained in:
parent
a46b4f68d0
commit
40999d3da3
@ -34,6 +34,8 @@ static int parse_multiboot2(struct taglist *tags)
|
|||||||
struct mmap *mmap;
|
struct mmap *mmap;
|
||||||
|
|
||||||
struct tag *tag = incptr(tags, sizeof(struct taglist));
|
struct tag *tag = incptr(tags, sizeof(struct taglist));
|
||||||
|
kernel_boot_data.mboot_tags = tag;
|
||||||
|
kernel_boot_data.tags_length = tags->total_size;
|
||||||
while(tag->type)
|
while(tag->type)
|
||||||
{
|
{
|
||||||
switch(tag->type)
|
switch(tag->type)
|
||||||
@ -99,6 +101,7 @@ int multiboot_page_used(uintptr_t page)
|
|||||||
fb_size = kernel_boot_data.fbinfo->framebuffer_pitch*(kernel_boot_data.fbinfo->framebuffer_height + 1);
|
fb_size = kernel_boot_data.fbinfo->framebuffer_pitch*(kernel_boot_data.fbinfo->framebuffer_height + 1);
|
||||||
}
|
}
|
||||||
if(
|
if(
|
||||||
|
within_page(kernel_boot_data.mboot_tags, kernel_boot_data.tags_length) ||
|
||||||
within_page(kernel_boot_data.bootloader, strlen(kernel_boot_data.bootloader)) ||
|
within_page(kernel_boot_data.bootloader, strlen(kernel_boot_data.bootloader)) ||
|
||||||
within_page(kernel_boot_data.commandline, strlen(kernel_boot_data.commandline)) ||
|
within_page(kernel_boot_data.commandline, strlen(kernel_boot_data.commandline)) ||
|
||||||
within_page(kernel_boot_data.mmap, kernel_boot_data.mmap_size) ||
|
within_page(kernel_boot_data.mmap, kernel_boot_data.mmap_size) ||
|
||||||
|
@ -27,6 +27,8 @@ struct fbinfo {
|
|||||||
|
|
||||||
struct kernel_boot_data_st{
|
struct kernel_boot_data_st{
|
||||||
int multiboot_version;
|
int multiboot_version;
|
||||||
|
void *mboot_tags;
|
||||||
|
size_t tags_length;
|
||||||
char *bootloader;
|
char *bootloader;
|
||||||
char *commandline;
|
char *commandline;
|
||||||
size_t mmap_size;
|
size_t mmap_size;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user