morpheus_bootloader::boot::arch::x86_64::transitions

Function drop_to_protected_mode

Source
pub unsafe extern "C" fn drop_to_protected_mode(
    entry_point: u32,
    boot_params: u32,
) -> !
Expand description

Drop from 64-bit long mode to 32-bit protected mode

This is implemented in external assembly (trampoline32.asm) to properly handle the mode transition without compiler interference.

ONLY used for legacy kernels that don’t support EFI handover protocol. Modern kernels (2.6.30+) use EFI handover and stay in 64-bit mode.

When using this path, the bootloader MUST call ExitBootServices first.

§Safety

  • Must only be called after ExitBootServices
  • entry_point must be valid 32-bit kernel entry address
  • boot_params must point to valid Linux boot_params struct

Does NOT return - jumps to kernel.