commit | 27b512d0419dca0892e989dc626977916fb5378c | [log] [tgz] |
---|---|---|
author | Daniel Verkamp <dverkamp@google.com> | Fri Nov 22 15:18:14 2024 -0800 |
committer | Daniel Verkamp <dverkamp@google.com> | Mon Nov 25 10:24:21 2024 -0800 |
tree | e897a4bf4250ea432dfe064e01b303af053e9c17 | |
parent | e116fbfd2e51398e28f599c7d6e136211ef70bef [diff] |
x86/64: remove Multiboot header and entry point The x86-64 kernel expects to be started in 64-bit long mode as of commit 7ed9ea8f858a ("arch: x86: Switch to 64-bit entry"), which works when the kernel is loaded as ELF by crosvm. However, the 64-bit kernel still contains a Multiboot header, and a Multiboot-compliant loader would start the kernel in 32-bit protected mode, which won't work since the 32-to-64 transition code was removed as part of the previously mentioned commit. This doesn't matter in practice currently for Trusty, but in order to avoid confusion and simplify the entry point code, this change removes the Multiboot header and related code, leaving only the 64-bit entry point at _start. This means that the guest kernel currently has no way to determine the memory map or total memory size, but this is no different than the previous status quo, since crosvm did not provide Multiboot info to the loaded guest kernel. Bug: 372755978 Test: Build x86-64 lk.elf and execute it with crosvm Change-Id: I893ac4aa766f21e8d99baa94f5223254530bed7b
The LK embedded kernel. An SMP-aware kernel designed for small systems.
See https://github.com/littlekernel/lk for the latest version.
See https://github.com/littlekernel/lk/wiki for documentation.
This will get you a interactive prompt into LK which is running in qemu arm machine ‘virt’ emulation. type ‘help’ for commands.
note 1: for ubuntu: sudo apt-get install gcc-arm-none-eabi or fetch a prebuilt toolchain from http://newos.org/toolchains/arm-eabi-5.3.0-Linux-x86_64.tar.xz