-
-
Notifications
You must be signed in to change notification settings - Fork 175
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use new UEFI bootloader and UEFI bootloader API crate (#792)
* Removes old assumptions/requirements that all sections in the kernel base image are loaded into physically-contiguous memory, especially the stack and bootloader info. * IOW, we stop relying upon a fixed `KERNEL_OFFSET` to calculate virtual addresses from physical addresses and vice versa; instead, we actually translate addresses via the initial page table. * Thus, we must obtain the address of the GDT used to boot secondary CPUs (APs on x86) and pass it through the various init routines so that it can be used when booting secondary CPUs. * `PageRange` and `FrameRange` constructors will now return an empty range if invoked with a size of 0 bytes, instead of panicking. * The major changes in this commit is to introduce new crates that support building Theseus for and booting it on UEFI bootloaders. * `tools/uefi-builder` is now multi-architecture, but aarch64 support is a WIP. * The separate `theseus-os/uefi-bootloader` repo is a fork of `rust-osdev/bootloader` but heavily changed to support Theseus's needs and additional architectures. * aarch64 is still a WIP here too. * Currently we manually ensure that the same version of the `uefi-bootloader*` crates are used in the Theseus workspace and in the `tools/uefi-builder/*` crates. Ideally this would be ensured automatically in the future. * `uefi-builder` consists of separate, per-arch crates; we can combine them once <rust-lang/cargo#10030> is fixed. Co-authored-by: Kevin Boos <kevinaboos@gmail.com>
- Loading branch information
1 parent
0569939
commit 922cb09
Showing
33 changed files
with
2,481 additions
and
370 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.