From: Chali Anis <chalian...@gmail.com>

this arch will forces a generic arm 64 cpu, which will
produce an efi payload on ARM 64, this works with a virtual
machine using qemu-system-aarch64, need further work to support
real hardware.
Submit the patch in case someone is interrested in working
to have a full support for efi payload on real hardware.

Signed-off-by: Chali Anis <chalian...@gmail.com>
---
 Documentation/boards/efi.rst   |  11 +++-
 arch/arm/Kconfig               |   1 +
 arch/arm/configs/efi_defconfig | 101 +++++++++++++++++++++++++++++++++
 arch/arm/mach-efi/Kconfig      |  10 ++++
 arch/arm/mach-efi/Makefile     |   1 +
 5 files changed, 123 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/configs/efi_defconfig
 create mode 100644 arch/arm/mach-efi/Kconfig
 create mode 100644 arch/arm/mach-efi/Makefile

diff --git a/Documentation/boards/efi.rst b/Documentation/boards/efi.rst
index 869e5e88172f..872b0c2388ce 100644
--- a/Documentation/boards/efi.rst
+++ b/Documentation/boards/efi.rst
@@ -23,7 +23,7 @@ x86_64 binary currently is tested.
 Building barebox for EFI
 ------------------------
 
-Use the following to build barebox for EFI:
+Use the following to build barebox for EFI for x86:
 
 .. code-block:: sh
 
@@ -31,6 +31,15 @@ Use the following to build barebox for EFI:
   make efi_defconfig
   make
 
+for EFI on arm 64 use:
+
+.. code-block:: sh
+
+  export ARCH=arm
+  export CROSS_COMPILE=aarch64-linux-gnu-
+  make efi_defconfig
+  make
+
 The resulting EFI image is ``barebox.efi`` (or the barebox-flash-image link).
 
 Running barebox on EFI systems
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index d283ef7793a1..d5dd6abc416f 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -276,6 +276,7 @@ source "arch/arm/mach-vexpress/Kconfig"
 source "arch/arm/mach-tegra/Kconfig"
 source "arch/arm/mach-zynq/Kconfig"
 source "arch/arm/mach-zynqmp/Kconfig"
+source "arch/arm/mach-efi/Kconfig"
 
 config BOARD_ARM_VIRT
        bool
diff --git a/arch/arm/configs/efi_defconfig b/arch/arm/configs/efi_defconfig
new file mode 100644
index 000000000000..5fe998ed4d4d
--- /dev/null
+++ b/arch/arm/configs/efi_defconfig
@@ -0,0 +1,101 @@
+CONFIG_EFI_ARM64=y
+CONFIG_64BIT=y
+CONFIG_MMU=y
+CONFIG_MALLOC_SIZE=0x0
+CONFIG_MALLOC_TLSF=y
+CONFIG_HUSH_FANCY_PROMPT=y
+CONFIG_CMDLINE_EDITING=y
+CONFIG_AUTO_COMPLETE=y
+CONFIG_MENU=y
+# CONFIG_TIMESTAMP is not set
+CONFIG_BOOTM_SHOW_TYPE=y
+CONFIG_BOOTM_VERBOSE=y
+CONFIG_BOOTM_INITRD=y
+CONFIG_BLSPEC=y
+CONFIG_CONSOLE_ACTIVATE_ALL=y
+CONFIG_PARTITION_DISK_EFI=y
+CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y
+CONFIG_STATE=y
+CONFIG_BOOTCHOOSER=y
+CONFIG_RESET_SOURCE=y
+CONFIG_DEBUG_LL=y
+CONFIG_CMD_DMESG=y
+CONFIG_LONGHELP=y
+CONFIG_CMD_IOMEM=y
+CONFIG_CMD_IMD=y
+CONFIG_CMD_MEMINFO=y
+CONFIG_CMD_GO=y
+CONFIG_CMD_LOADB=y
+CONFIG_CMD_RESET=y
+CONFIG_CMD_UIMAGE=y
+CONFIG_CMD_BOOTCHOOSER=y
+CONFIG_CMD_PARTITION=y
+CONFIG_CMD_EXPORT=y
+CONFIG_CMD_LOADENV=y
+CONFIG_CMD_PRINTENV=y
+CONFIG_CMD_MAGICVAR=y
+CONFIG_CMD_MAGICVAR_HELP=y
+CONFIG_CMD_SAVEENV=y
+CONFIG_CMD_FILETYPE=y
+CONFIG_CMD_LN=y
+CONFIG_CMD_MD5SUM=y
+CONFIG_CMD_UNCOMPRESS=y
+CONFIG_CMD_LET=y
+CONFIG_CMD_MSLEEP=y
+CONFIG_CMD_READF=y
+CONFIG_CMD_SLEEP=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_TFTP=y
+CONFIG_CMD_ECHO_E=y
+CONFIG_CMD_EDIT=y
+CONFIG_CMD_MENU=y
+CONFIG_CMD_MENUTREE=y
+CONFIG_CMD_READLINE=y
+CONFIG_CMD_TIMEOUT=y
+CONFIG_CMD_CRC=y
+CONFIG_CMD_CRC_CMP=y
+CONFIG_CMD_MM=y
+CONFIG_CMD_DETECT=y
+CONFIG_CMD_FLASH=y
+CONFIG_CMD_POWEROFF=y
+CONFIG_CMD_WD=y
+CONFIG_CMD_2048=y
+CONFIG_CMD_BAREBOX_UPDATE=y
+CONFIG_CMD_OF_DIFF=y
+CONFIG_CMD_OF_NODE=y
+CONFIG_CMD_OF_PROPERTY=y
+CONFIG_CMD_OFTREE=y
+CONFIG_CMD_TIME=y
+CONFIG_CMD_STATE=y
+CONFIG_NET=y
+CONFIG_NET_NETCONSOLE=y
+CONFIG_OFDEVICE=y
+CONFIG_OF_BAREBOX_DRIVERS=y
+CONFIG_OF_BAREBOX_ENV_IN_FS=y
+CONFIG_DRIVER_SERIAL_EFI=y
+CONFIG_DRIVER_SERIAL_EFI_STDIO=y
+CONFIG_DRIVER_NET_EFI_SNP=y
+# CONFIG_SPI is not set
+CONFIG_DISK=y
+CONFIG_DISK_WRITE=y
+CONFIG_VIDEO=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_DRIVER_VIDEO_EFI_GOP=y
+CONFIG_FINTEK_SUPERIO=y
+CONFIG_SMSC_SUPERIO=y
+CONFIG_STATE_DRV=y
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_EFI=y
+CONFIG_F71808E_WDT=y
+CONFIG_ITCO_WDT=y
+# CONFIG_PINCTRL is not set
+CONFIG_PCI_EFI=y
+CONFIG_FS_EXT4=y
+CONFIG_FS_TFTP=y
+CONFIG_FS_NFS=y
+CONFIG_FS_EFI=y
+CONFIG_FS_EFIVARFS=y
+CONFIG_FS_FAT=y
+CONFIG_FS_FAT_WRITE=y
+CONFIG_FS_FAT_LFN=y
diff --git a/arch/arm/mach-efi/Kconfig b/arch/arm/mach-efi/Kconfig
new file mode 100644
index 000000000000..2bc4feca0581
--- /dev/null
+++ b/arch/arm/mach-efi/Kconfig
@@ -0,0 +1,10 @@
+config EFI_ARM64
+       bool "EFI on ARM64"
+       select CPU_V8
+       select CPU_SUPPORTS_64BIT_KERNEL
+       select HAVE_EFI_PAYLOAD
+       select EFI_PAYLOAD
+    select CLOCKSOURCE_EFI
+       depends on 64BIT
+       default y
+
diff --git a/arch/arm/mach-efi/Makefile b/arch/arm/mach-efi/Makefile
new file mode 100644
index 000000000000..16a218658ade
--- /dev/null
+++ b/arch/arm/mach-efi/Makefile
@@ -0,0 +1 @@
+obj- := __dummy__.o
-- 
2.34.1


Reply via email to