Update markdowns
diff --git a/CONFIG.md b/CONFIG.md
index 529cdebf..5615aea4 100644
--- a/CONFIG.md
+++ b/CONFIG.md
@@ -21,6 +21,7 @@ Some *local assignments* are shared between entries using any *protocol*, while
*Globally assignable* keys are:
* `TIMEOUT` - Specifies the timeout in seconds before the first *entry* is automatically booted.
+* `TEXTMODE` - If set to `on`, do not use graphical VESA framebuffer for the boot menu.
*Locally assignable (non protocol specific)* keys are:
* `PROTOCOL` - The boot protocol that will be used to boot the kernel. Valid protocols are: `linux`, `stivale`, `chainload`.
diff --git a/README.md b/README.md
index b3479ed9..9302f75a 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,11 @@
# Limine
+### What is Limine?
+
Limine is an advanced x86/x86_64 BIOS Bootloader which supports *modern* PC features
-such as AMD64, 5-level paging, and SMP (multicore), to name a few.
+such as Long Mode, 5-level paging, and SMP (multicore), to name a few.
+
+## Limine's boot menu

@@ -10,7 +14,7 @@ such as AMD64, 5-level paging, and SMP (multicore), to name a few.
* stivale and stivale2 (Limine's native boot protocols, see STIVALE{,2}.md for details)
### Supported filesystems
-* ext2
+* ext2/3/4
* echfs
* FAT32
diff --git a/STIVALE.md b/STIVALE.md
index 772a85f2..c53a5c73 100644
--- a/STIVALE.md
+++ b/STIVALE.md
@@ -14,19 +14,16 @@ stivale will recognise whether the ELF file is 32-bit or 64-bit and load the ker
into the appropriate CPU mode.
stivale natively supports (only for 64-bit kernels) and encourages higher half kernels.
-The kernel can load itself at `0xffffffff80100000` (as defined in the linker script)
+The kernel can load itself at `0xffffffff80000000` (as defined in the linker script)
and the bootloader will take care of everything, no AT linker script directives needed.
-If the kernel loads itself in the lower half (`0x100000` or higher), the bootloader
-will not perform the higher half relocation.
+If the kernel loads itself in the lower half, the bootloader will not perform the
+higher half relocation.
-The kernel MUST NOT overwrite anything below `0x100000` (physical memory) as that
-is where the bootloader memory structures reside.
-Once the kernel is DONE depending on the bootloader (for page tables, structures, ...)
-then these areas can be reclaimed if one wants.
-
-The kernel MUST NOT request to load itself at an address lower than `0x100000`
-(or `0xffffffff80100000` for higher half kernels) for the same reasons as above.
+*Note: In order to maintain compatibility with Limine and other stivale-compliant*
+*bootloaders it is strongly advised never to load the kernel or any of its*
+*sections below the 1 MiB physical memory mark. This may work with some stivale*
+*loaders, but it WILL NOT work with Limine and it's explicitly discouraged.*
## Kernel entry machine state
@@ -110,6 +107,26 @@ before the entry point is called.
All other general purpose registers are set to 0.
+## Bootloader-reserved memory
+
+In order for stivale to function, it needs to reserve memory areas for either internal
+usage (such as page tables, GDT, SMP), or for kernel interfacing (such as returned
+structures).
+
+stivale ensures that none of these areas are found in any of the sections
+marked as "usable" in the memory map.
+
+The location of these areas may vary and it is implementation specific;
+these areas may be in any non-usable memory map section, or in unmarked memory.
+
+The OS must make sure to be done consuming bootloader information and services
+before switching to its own address space, as unmarked memory areas in use by
+the bootloader may become unavailable.
+
+Once the OS is done needing the bootloader, memory map areas marked as "bootloader
+reclaimable" may be used as usable memory. These areas are not guaranteed to be
+aligned, but they are guaranteed to not overlap other sections of the memory map.
+
## stivale header (.stivalehdr)
The kernel executable shall have a section `.stivalehdr` which will contain
@@ -180,12 +197,13 @@ struct mmap_entry {
`type` is an enumeration that can have the following values:
```
-1 - Usable RAM
-2 - Reserved
-3 - ACPI reclaimable
-4 - ACPI NVS
-5 - Bad memory
-10 - Kernel/Modules
+1 - Usable RAM
+2 - Reserved
+3 - ACPI reclaimable
+4 - ACPI NVS
+5 - Bad memory
+10 - Kernel/Modules
+0x1000 - Bootloader Reclaimable
```
All other values are undefined.
diff --git a/STIVALE2.md b/STIVALE2.md
index c44d2c30..ec34a13c 100644
--- a/STIVALE2.md
+++ b/STIVALE2.md
@@ -14,19 +14,16 @@ stivale2 will recognise whether the ELF file is 32-bit or 64-bit and load the ke
into the appropriate CPU mode.
stivale2 natively supports (only for 64-bit kernels) and encourages higher half kernels.
-The kernel can load itself at `0xffffffff80100000` or higher (as defined in the linker script)
+The kernel can load itself at `0xffffffff80000000` or higher (as defined in the linker script)
and the bootloader will take care of everything, no AT linker script directives needed.
-If the kernel loads itself in the lower half (`0x100000` or higher), the bootloader
-will not perform the higher half relocation.
+If the kernel loads itself in the lower half, the bootloader will not perform the
+higher half relocation.
-The kernel MUST NOT overwrite anything below `0x100000` (physical memory) as that
-is where the bootloader memory structures reside.
-Once the kernel is DONE depending on the bootloader (for page tables, structures, ...)
-then these areas can be reclaimed if one wants.
-
-The kernel MUST NOT request to load itself at an address lower than `0x100000`
-(or `0xffffffff80100000` for higher half kernels) for the same reasons as above.
+*Note: In order to maintain compatibility with Limine and other stivale2-compliant*
+*bootloaders it is strongly advised never to load the kernel or any of its*
+*sections below the 1 MiB physical memory mark. This may work with some stivale2*
+*loaders, but it WILL NOT work with Limine and it's explicitly discouraged.*
## Kernel entry machine state
@@ -110,6 +107,26 @@ before the entry point is called.
All other general purpose registers are set to 0.
+## Bootloader-reserved memory
+
+In order for stivale2 to function, it needs to reserve memory areas for either internal
+usage (such as page tables, GDT, SMP), or for kernel interfacing (such as returned
+structures).
+
+stivale2 ensures that none of these areas are found in any of the sections
+marked as "usable" in the memory map.
+
+The location of these areas may vary and it is implementation specific;
+these areas may be in any non-usable memory map section, or in unmarked memory.
+
+The OS must make sure to be done consuming bootloader information and services
+before switching to its own address space, as unmarked memory areas in use by
+the bootloader may become unavailable.
+
+Once the OS is done needing the bootloader, memory map areas marked as "bootloader
+reclaimable" may be used as usable memory. These areas are not guaranteed to be
+aligned, but they are guaranteed to not overlap other sections of the memory map.
+
## stivale2 header (.stivale2hdr)
The kernel executable shall have a section `.stivale2hdr` which will contain
