diff --git a/PROTOCOL.md b/PROTOCOL.md index 8251a30c..2e5e2e02 100644 --- a/PROTOCOL.md +++ b/PROTOCOL.md @@ -43,7 +43,7 @@ struct limine_example_request { bootloader will scan for inside the executable file to find requests. Requests may be located anywhere inside the executable as long as they are 8-byte aligned. There may only be 1 of the same request. The bootloader will refuse -to boot an executable with multiple of the same request IDs. +to boot an executable with multiple of the same request IDs. Alternatively, it is possible to provide a list of requests explicitly via an executable file section. See "Limine Requests Section". * `revision` - The revision of the request that the kernel provides. This is bumped whenever new members or functionality are added to the request structure. Bootloaders process requests in a backwards compatible manner, *always*. This @@ -73,6 +73,13 @@ revisions do. This is all there is to features. For a list of official Limine features, read the "Feature List" section below. +## Limine Requests Section + +If the executable kernel file contains a `.limine_reqs` section, the bootloader +will, instead of scanning the executable for requests, fetch the requests +from a NULL-terminated array of pointers to the provided requests, contained +inside said section. + ## Entry memory layout The protocol mandates kernels to load themselves at or above