- Fix warnings: Remove unused paging imports
- Fix map errors during kernel loading
- Don't error if a kernel page is already mapped to the correct frame
- Fix: unmap temp page again to enable multiple bss-like sections
- Fix data layout for custom targets for LLVM 18
- Fixes build on latest Rust nightly
- Fix data layout for
x86_64-bootloader
target (#415)- Fixes build on latest Rust nightly
- Fix boot for machines that report memory regions at high physical addresses (see #259)
- Allow allocating more than one level 4 entry (#264)
- Remove the
asm
andglobal_asm
features, which are now stable (#227)
- Use new inline assembly syntax (#204)
- Update x86_64 dependency to v0.14.7 to fix nightly breakage (#208)
- Set
relocation-model: static
andpanic-strategy: abort
andfix .intel_syntax
warnings #185- Fixes warnings on the latest Rust nightlies.
- This effectively changes the
relocation-model
andpanic-strategy
. Please report if you encounter any issues because of this.
- Fix nightly regression by manually passing --gc-sections (#168)
- Reduce the number of used unstable features of x86_64 crate (backport #155)
Replace all remaining lea
s with mov
+ offset
(#140)
- Fix linker errors on latest nightlies (#139)
- Fix "panic message is not a string literal" warning (#138)
(accidental release)
- Fix build on latest nightly by updating x86_64 to v0.13.2 (#135)
- Update
Cargo.lock
to fix nightly breakage (#129)
- Update
x86_64
again to version 0.12.1 to fixconst fn
-related build errors on latest nightly
- Run
cargo update
to fix build errors ofx86_64
on latest nightly
- Enable rlibc dependency only with
binary
feature (#126)
- Make bootloader buildable with
-Zbuild-std
(#125)
- Change 1st stage int 13h addressing (#123)
- Fix warning by renaming
_improper_ctypes_check
functions (#122)
- Update x86_64 dependency to version 0.11.0 (#117)
- Nightly Breakage: Use
llvm_asm!
instead of deprecatedasm!
(#108)
- SSE feature: remove inline assembly + don't set reserved bits (#105)
- Breaking: Identity-map complete vga region (0xa0000 to 0xc0000) (#104)
- Implement boot-info-address (#101)
- Add basic support for ELF thread local storage segments (#96)
- Fix docs.rs build (see commit 01671dbe449b85b3c0ea73c5796cc8f9661585ee)
- Objcopy replaces
.
chars with_
chars (#94)
- Update x86_64 dependency (#92)
- Move architecture checks from build script into lib.rs (#91)
- Remove unnecessary
extern C
on panic handler to fix not-ffi-safe warning (#85)
- Change the way the kernel entry point is called to honor alignement ABI (#81)
- Add a Cargo Feature for Enabling SSE (#77)
- Breaking: Parse bootloader configuration from kernel's Cargo.toml (#73)
- At least version 0.7.7 of
bootimage
is required now.
- At least version 0.7.7 of
- Configurable kernel stack size, better non-x86_64 errors (#72)
- Dynamically map kernel stack, boot info, physical memory and recursive table (#71)
- Run cargo update (improves compile times because of trimmed down upstream dependencies)
- Breaking: Only include dependencies when
binary
feature is enabled (#68)- For manual builds, the
binary
feature must be enabled when building - For builds using
bootimage
, at least version 0.7.6 ofbootimage
is required now.
- For manual builds, the
- Use volatile accesses in VGA code and make font dependency optional (#67)
- Making the dependency optional should improve compile times when the VGA text mode is used.
- Update CI badge, use latest version of x86_64 crate and rustfmt (#63)
- Remove stabilized publish-lockfile feature (#62)
- Make the physical memory offset configurable through a
BOOTLOADER_PHYSICAL_MEMORY_OFFSET
environment variable (#58). - Use a stripped copy of the kernel binary (debug info removed) to reduce load times (#59).
- Breaking: Don't set the
#[cfg(not(test))]
attribute for the entry point function in theentry_point
macro- With custom test frameworks, it's possible to use the normal entry point also in test environments
- To get the old behavior, you can add the
#[cfg(not(test))]
attribute to theentry_point
invocation
- Additional assertions for the passed
KERNEL
executable- check that the executable exists (for better error messages)
- check that the executable has a non-empty text section (an empty text section occurs when no entry point is set)
- Mention minimal required bootimage version in error message when
KERNEL
environment variable is not set.
- Remove redundant import that caused a warning
- Add a
package.metadata.bootloader.target
key to the Cargo.toml that can be used by tools such asbootimage
.
- Breaking: Change the build system: Use a build script that expects a
KERNEL
environment variable instead of using a separatebuilder
executable as before. See #51 and #53 for more information.- This makes the bootloader incompatible with versions
0.6.*
and earlier of thebootimage
tool. - The bootloader also requires the
llvm-tools-preview
rustup component now.
- This makes the bootloader incompatible with versions
- The level 4 page table is only recursively mapped if the
recursive_page_table
feature is enabled. - Rename
BootInfo::p4_table_addr
toBootInfo::recursive_page_table_addr
(only present if the cargo feature is enabled) - Remove
From<PhysFrameRange>
implemenations for x86_64FrameRange
- This only works when the versions align, so it is not a good general solution.
- Remove unimplemented
BootInfo::package
field. - Make
BootInfo
non-exhaustive so that we can add additional fields later.
- Add a
map_physical_memory
feature that maps the complete physical memory to the virtual address space atBootInfo::physical_memory_offset
. - Re-export
BootInfo
at the root.