diff --git a/CONFIG.md b/CONFIG.md index 5dd6c19e..557091ef 100644 --- a/CONFIG.md +++ b/CONFIG.md @@ -133,7 +133,9 @@ Editor control options. * `RESOLUTION` - The resolution to be used. This setting takes the form of `xx`. If the resolution is not available, Limine will pick another one automatically. Omitting `` will default to 32. * chainload_next protocol: - This protocol does not specify any locally assignable key. Will boot the next bootable drive found in the system, if there is one. + This protocol does not specify any locally assignable key on BIOS. Will boot the next bootable drive found in the system, if there is one. + + * `RESOLUTION` - For UEFI, the resolution to be used. This setting takes the form of `xx`. If the resolution is not available, Limine will pick another one automatically. Omitting `` will default to 32. * multiboot1 and multiboot2 protocols: * `KERNEL_PATH` - The URI path of the kernel. diff --git a/common/protos/chainload.c b/common/protos/chainload.c index b6f50bc2..93a4610b 100644 --- a/common/protos/chainload.c +++ b/common/protos/chainload.c @@ -130,10 +130,10 @@ void chainload(char *config) { if ((image = uri_open(image_path)) == NULL) panic(true, "chainload: Failed to open image with path `%s`. Is the path correct?", image_path); - efi_chainload_file(image); + efi_chainload_file(config, image); } -void efi_chainload_file(struct file_handle *image) { +void efi_chainload_file(char *config, struct file_handle *image) { EFI_STATUS status; EFI_HANDLE efi_part_handle = image->efi_part_handle; diff --git a/common/protos/chainload.h b/common/protos/chainload.h index a462b8a4..c58defe1 100644 --- a/common/protos/chainload.h +++ b/common/protos/chainload.h @@ -5,7 +5,7 @@ void chainload(char *config); #if uefi == 1 #include -void efi_chainload_file(struct file_handle *image); +void efi_chainload_file(char *config, struct file_handle *image); #endif #if bios == 1 diff --git a/common/protos/chainload_next.c b/common/protos/chainload_next.c index 05ba4393..791d5671 100644 --- a/common/protos/chainload_next.c +++ b/common/protos/chainload_next.c @@ -7,13 +7,14 @@ #include #if bios == 1 -static void try(struct volume *v) { +static void try(char *config, struct volume *v) { + (void)config; bios_chainload_volume(v); } #endif #if uefi == 1 -static void try(struct volume *v) { +static void try(char *config, struct volume *v) { for (int i = 0; i < v->max_partition + 1; i++) { struct file_handle *image; @@ -23,14 +24,12 @@ static void try(struct volume *v) { continue; } - efi_chainload_file(image); + efi_chainload_file(config, image); } } #endif void chainload_next(char *config) { - (void)config; - bool wrap = false; for (int i = boot_volume->is_optical ? 0 : (wrap = true, boot_volume->index + 1); boot_volume->is_optical ? true : i != boot_volume->index; i++) { @@ -44,7 +43,7 @@ void chainload_next(char *config) { } } - try(v); + try(config, v); } wrap = false; @@ -60,7 +59,7 @@ void chainload_next(char *config) { } } - try(v); + try(config, v); } panic(true, "chainload_next: No other bootable device");