Files
u-boot/lib/efi_client/Kconfig
Simon Glass 7477fe4d9b efi: Allow excluding efi_main()
In some cases this function may be provided outside the library, e.g. by
a Rust main program. Add a Kconfig to control this and refactor the code
so that it is optional.

Signed-off-by: Simon Glass <simon.glass@canonical.com>
2025-11-12 08:40:05 -07:00

107 lines
3.1 KiB
Plaintext

menu "U-Boot as UEFI application"
depends on X86 || ARM
config EFI_CLIENT
bool "Support running U-Boot from EFI"
depends on X86 || ARM
imply DISPLAY_BOARDINFO
imply X86_TSC_READ_BASE
select EFI
help
U-Boot can be started from EFI on certain platforms. This allows
EFI to perform most of the system init and then jump to U-Boot for
final system boot. Another option is to run U-Boot as an EFI
application, with U-Boot using EFI's drivers instead of its own.
choice
prompt "Select EFI mode to use"
depends on EFI_CLIENT
config EFI_APP
bool "Support running as an EFI application"
depends on X86 || ARM
select CHARSET
select EVENT
imply CONSOLE_MUX
imply CONSOLE_PAGER
help
Build U-Boot as an application which can be started from EFI. This
is useful for examining a platform in the early stages of porting
U-Boot to it. It allows only very basic functionality, such as a
command prompt and memory and I/O functions. Use 'reset' to return
to EFI.
config EFI_STUB
select POSITION_INDEPENDENT if ARM
bool "Support running as an EFI payload"
endchoice
choice
prompt "EFI app 32/64-bit selection"
depends on EFI_APP
help
EFI does not support mixing 32-bit and 64-bit modes. This is a
significant problem because it means that you must build a stub with
the correct type for EFI to load it correctly. If you are using
32-bit EFI, select 32-bit here, else select 64-bit. Failure to do
this may produce no error message - it just won't start!
config EFI_APP_32BIT
bool "Produce an app for running with 32-bit EFI"
config EFI_APP_64BIT
bool "Produce an app for running with 64-bit EFI"
endchoice
choice
prompt "EFI stub 32/64-bit selection"
depends on EFI_STUB
help
EFI does not support mixing 32-bit and 64-bit modes. This is a
significant problem because it means that you must build a stub with
the correct type for EFI to load it correctly. If you are using
32-bit EFI, select 32-bit here, else select 64-bit. Failure to do
this may produce no error message - it just won't start!
config EFI_STUB_32BIT
depends on !ARM
bool "Produce a stub for running with 32-bit EFI"
config EFI_STUB_64BIT
bool "Produce a stub for running with 64-bit EFI"
endchoice
if EFI_APP
config EFI_RAM_SIZE
hex "Amount of EFI RAM for U-Boot"
default 0x10000000
help
Set the amount of EFI RAM which is claimed by U-Boot for its own
use. U-Boot allocates this from EFI on start-up (along with a few
other smaller amounts) and it can never be increased after that.
It is used as the RAM size in with U-Boot.
config EFI_APP_DEBUG
bool "Enable GDB debugging"
help
Enable this to allow GDB to stop the app at an early stage, so it is
possible to set the symbol offset. Since the app is relocated to an
unknown address, breakpoints will only work if this is done.
config EFI_APP_ENTRY
bool "Provide efi_main() entry point"
default y
help
Enable this to have libu-boot provide the efi_main() entry point
function. This is the standard entry point called by EFI when loading
the application. Disable this if you want to provide your own
efi_main() implementation.
endif # EFI_APP
endmenu